Patchwork [1/1] apt-native: fix the creation of apt.conf.sample

login
register
mail settings
Submitter Hongxu Jia
Date Jan. 6, 2013, 8:43 a.m.
Message ID <3dad51b86a16d1bc44a8ac69c8a0efac870768e1.1357461730.git.hongxu.jia@windriver.com>
Download mbox | patch
Permalink /patch/42035/
State New
Headers show

Comments

Hongxu Jia - Jan. 6, 2013, 8:43 a.m.
The file of apt.conf.sample is kept in outdir, and outdir is assigned
by "os.path.join" with the params of ${D}, ${sysconfdir} and "apt". But
${sysconfdir} is an absolute dir and that is not allowed by "os.path.join".

The following is the help on function os.path.join(a, *p):
    Join two or more pathname components, inserting '/' as needed.
    If any component is an absolute path, all previous path components
    will be discarded.

So remove "/" in ${sysconfdir} to create "apt.conf.sample" if it doesn't
exist, not by the existance of prefix dir.

[YOCTO #3677]

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/recipes-devtools/apt/apt-native.inc |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
Saul Wold - Jan. 7, 2013, 9:36 p.m.
On 01/06/2013 12:43 AM, Hongxu Jia wrote:
> The file of apt.conf.sample is kept in outdir, and outdir is assigned
> by "os.path.join" with the params of ${D}, ${sysconfdir} and "apt". But
> ${sysconfdir} is an absolute dir and that is not allowed by "os.path.join".
>
> The following is the help on function os.path.join(a, *p):
>      Join two or more pathname components, inserting '/' as needed.
>      If any component is an absolute path, all previous path components
>      will be discarded.
>
> So remove "/" in ${sysconfdir} to create "apt.conf.sample" if it doesn't
> exist, not by the existance of prefix dir.
>
> [YOCTO #3677]
>
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>   meta/recipes-devtools/apt/apt-native.inc |    7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-devtools/apt/apt-native.inc b/meta/recipes-devtools/apt/apt-native.inc
> index ab89f71..0de159a 100644
> --- a/meta/recipes-devtools/apt/apt-native.inc
> +++ b/meta/recipes-devtools/apt/apt-native.inc
> @@ -20,14 +20,17 @@ python do_install_config () {
>
>       data = d.expand(data)
>
> -    outdir = os.path.join(d.getVar('D', True), d.getVar('sysconfdir', True), 'apt')
> +    # os.path.join does not allow sysconfdir to be a absolute dir
> +    outdir = os.path.join(d.getVar('D', True), d.getVar('sysconfdir', True)[1:], 'apt')
>       if not os.path.exists(outdir):
>           os.makedirs(outdir)
> -        outpath = os.path.join(outdir, 'apt.conf.sample')
>
> +    outpath = os.path.join(outdir, 'apt.conf.sample')
> +    if not os.path.exists(outpath):
>           outfile = file(outpath, 'w')
>           outfile.write(data)
>           outfile.close()
> +        bb.note("create %s" %outpath)
Do we need to keep this debug message around?

Sau!

>   }
>
>   do_install_base () {
>

Patch

diff --git a/meta/recipes-devtools/apt/apt-native.inc b/meta/recipes-devtools/apt/apt-native.inc
index ab89f71..0de159a 100644
--- a/meta/recipes-devtools/apt/apt-native.inc
+++ b/meta/recipes-devtools/apt/apt-native.inc
@@ -20,14 +20,17 @@  python do_install_config () {
 
     data = d.expand(data)
 
-    outdir = os.path.join(d.getVar('D', True), d.getVar('sysconfdir', True), 'apt')
+    # os.path.join does not allow sysconfdir to be a absolute dir
+    outdir = os.path.join(d.getVar('D', True), d.getVar('sysconfdir', True)[1:], 'apt')
     if not os.path.exists(outdir):
         os.makedirs(outdir)
-        outpath = os.path.join(outdir, 'apt.conf.sample')
 
+    outpath = os.path.join(outdir, 'apt.conf.sample')
+    if not os.path.exists(outpath):
         outfile = file(outpath, 'w')
         outfile.write(data)
         outfile.close()
+        bb.note("create %s" %outpath)
 }
 
 do_install_base () {