From: "Aníbal Limón" <anibal.limon@linux.intel.com>
To: Andreas Oberritter <obi@opendreambox.org>,
openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] package_manager/deb: apt-ftparchive needs a valid config
Date: Tue, 24 Mar 2015 10:34:13 -0600 [thread overview]
Message-ID: <55119205.9040605@linux.intel.com> (raw)
In-Reply-To: <55115179.7050506@opendreambox.org>
Hi Andreas,
Your solution is better but i think we need to generalize the code in
DpkgPM::_create_configs to avoid code duplicate.
Comments?
Cheers,
alimon
On 24/03/15 05:58, Andreas Oberritter wrote:
> Hello Aníbal,
>
> On 23.03.2015 17:05, Aníbal Limón wrote:
>> Since we have support of log checking in deb/ipk [1] rootfs generation
>> in non Debian-based hosts fails because apt-ftparchive generates a
>> warn when not find /etc/apt/apt.conf.d/ (available in Debian-based
>> hosts).
>>
>> In order to fix,
>>
>> package_manager.py: DpkgPMIndexer add support for export APT_CONF
>> to environment.
>>
>> [1] http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=86aec93902af2e2d7d73ca9a643707fcca45055c
>>
>> Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
>> ---
>> meta/lib/oe/package_manager.py | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
>> index c9a8084..395c0d01 100644
>> --- a/meta/lib/oe/package_manager.py
>> +++ b/meta/lib/oe/package_manager.py
>> @@ -169,7 +169,14 @@ class OpkgIndexer(Indexer):
>>
>>
>> class DpkgIndexer(Indexer):
>> + def __init__(self, d, deploy_dir, apt_conf_file=None):
>> + self.apt_conf_file = apt_conf_file
>> + Indexer.__init__(self, d, deploy_dir)
>> +
>> def write_index(self):
>> + if not self.apt_conf_file is None:
>> + os.environ['APT_CONFIG'] = self.apt_conf_file
>> +
>> pkg_archs = self.d.getVar('PACKAGE_ARCHS', True)
>> if pkg_archs is not None:
>> arch_list = pkg_archs.split()
>> @@ -1507,7 +1514,7 @@ class DpkgPM(PackageManager):
>>
>> self._create_configs(archs, base_archs)
>>
>> - self.indexer = DpkgIndexer(self.d, self.deploy_dir)
>> + self.indexer = DpkgIndexer(self.d, self.deploy_dir, self.apt_conf_file)
>>
>> """
>> This function will change a package's status in /var/lib/dpkg/status file.
>>
> unfortunately, this approach doesn't work with "bitbake package-index", which
> calls generate_index_files() in package_manager.py. That's why I implemented
> a quite ugly solution covering all cases:
>
>
> From 668fe52b58aba6ab47e4712ee460ed7dd06c948f Mon Sep 17 00:00:00 2001
> From: Andreas Oberritter <obi@opendreambox.org>
> Date: Wed, 8 Oct 2014 15:52:22 +0200
> Subject: [PATCH] package_manager/deb: apt-ftparchive needs a valid config
>
> Without a valid config, apt-ftparchive aborts. Since apt-ftparchive
> defaults to /etc/apt if APT_CONFIG is unset, this is only an issue
> non non-Debian build hosts.
>
> Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
> ---
> meta/lib/oe/package_manager.py | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
> index d4ac174..71f909c 100644
> --- a/meta/lib/oe/package_manager.py
> +++ b/meta/lib/oe/package_manager.py
> @@ -182,6 +182,28 @@ class DpkgIndexer(Indexer):
> all_mlb_pkg_arch_list = (self.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS', True) or "").replace('-', '_').split()
> arch_list.extend(arch for arch in all_mlb_pkg_arch_list if arch not in arch_list)
>
> + apt_conf_dir = self.d.expand("${APTCONF_TARGET}/apt-ftparchive")
> + apt_conf_file = os.path.join(apt_conf_dir, "apt.conf")
> +
> + bb.utils.mkdirhier(apt_conf_dir)
> + bb.utils.mkdirhier(apt_conf_dir + "/lists/partial/")
> + bb.utils.mkdirhier(apt_conf_dir + "/apt.conf.d/")
> + bb.utils.mkdirhier(apt_conf_dir + "/preferences.d/")
> +
> + with open(os.path.join(apt_conf_dir, "preferences"), "w") as prefs_file:
> + pass
> + with open(os.path.join(apt_conf_dir, "sources.list"), "w+") as sources_file:
> + pass
> +
> + with open(apt_conf_file, "w") as apt_conf:
> + with open(self.d.expand("${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample")) as apt_conf_sample:
> + for line in apt_conf_sample.read().split("\n"):
> + line = re.sub("#ROOTFS#", "/dev/null", line)
> + line = re.sub("#APTCONF#", apt_conf_dir, line)
> + apt_conf.write(line + "\n")
> +
> + os.environ['APT_CONFIG'] = apt_conf_file
> +
> apt_ftparchive = bb.utils.which(os.getenv('PATH'), "apt-ftparchive")
> gzip = bb.utils.which(os.getenv('PATH'), "gzip")
>
next prev parent reply other threads:[~2015-03-24 16:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-23 16:05 [PATCH] package_deb: Fix rootfs generation in non Debian-based hosts Aníbal Limón
2015-03-24 11:58 ` [PATCH] package_manager/deb: apt-ftparchive needs a valid config Andreas Oberritter
2015-03-24 16:34 ` Aníbal Limón [this message]
2015-03-24 17:33 ` Aníbal Limón
2015-03-24 19:30 ` Andreas Oberritter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55119205.9040605@linux.intel.com \
--to=anibal.limon@linux.intel.com \
--cc=obi@opendreambox.org \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox