[elbe-devel] [PATCH 09/10] elbeproject: create the host_sysroot in a BuildEnv, like the target_sysroot
Manuel Traut
manut at linutronix.de
Wed Apr 10 10:51:14 CEST 2019
On 15:42 Mon 08 Apr , Torben Hohn wrote:
> When more complex packages like qtcreator are to be installed into
> the host sysroot, the extract_pkg() machinery fails to resolve the
> dependencies properly. Error messages dont make any sense.
>
> Use the new arch feature, to setup a BuildEnv for the host_sysroot.
> This makes use of the normal debootstrap and rpc_aptcache machinery,
> that is supposed to be used to generate rootfilesystems in elbe.
>
> This is a preparation step for the change of the sysroots to subprojects,
> with their own source.xml and source and bin cdroms.
>
> Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
> ---
> elbepack/elbeproject.py | 51 +++++++++++++++++++++++++++++++++++++++----------
> 1 file changed, 41 insertions(+), 10 deletions(-)
>
> diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
> index 45448363..40977e8b 100644
> --- a/elbepack/elbeproject.py
> +++ b/elbepack/elbeproject.py
> @@ -35,7 +35,6 @@ from elbepack.pbuilder import (pbuilder_write_config, pbuilder_write_repo_hook,
>
> from elbepack.repomanager import ProjectRepo
> from elbepack.config import cfg
> -from elbepack.pkgutils import extract_pkg
> from elbepack.templates import write_pack_template
> from elbepack.finetuning import do_prj_finetuning
>
> @@ -206,6 +205,9 @@ class ElbeProject (object):
> self.sysrootenv = None
> self.log.do('rm -rf %s' % self.sysrootpath)
>
> + # same for host_sysroot instance recreate it in any case
> + self.host_sysrootenv = None
> +
> def build_chroottarball(self):
> self.log.do("tar cJf %s/chroot.tar.xz \
> --exclude=./tmp/* --exclude=./dev/* \
> @@ -298,6 +300,42 @@ class ElbeProject (object):
> self.log.do("tar cfJ %s/sysroot.tar.xz -C %s -T %s" %
> (self.builddir, self.sysrootpath, sysrootfilelist))
>
> + def build_host_sysroot(self, pkgs, hostsysrootpath):
> + self.log.do('rm -rf %s; mkdir "%s"' % (hostsysrootpath,
> + hostsysrootpath))
> +
> + self.host_sysrootenv = BuildEnv(self.xml,
> + self.log,
> + hostsysrootpath,
> + clean=True,
> + arch="amd64")
can we add sth. to trigger deboostrapvariant=minbase here?
> + # Import keyring
> + self.host_sysrootenv.import_keys()
> + self.log.printo("Keys imported")
> +
> + with self.host_sysrootenv:
> +
> + try:
> + self.get_rpcaptcache(env=self.host_sysrootenv).update()
> + except Exception as e:
> + raise AptCacheUpdateError(e)
> +
> + for p in pkgs:
> + try:
> + self.get_rpcaptcache(
> + env=self.host_sysrootenv).mark_install(p, None)
> + except KeyError:
> + self.log.printo("No Package " + p)
> + except SystemError as e:
> + self.log.printo("Error: Unable to correct problems "
> + "in package %s (%s)" % (p, str(e)))
> +
> + try:
> + self.get_rpcaptcache(env=self.host_sysrootenv).commit()
> + except SystemError as e:
> + self.log.printo("commiting changes failed: %s" % str(e))
> + raise AptCacheCommitError(str(e))
> +
> def build_sdk(self):
> triplet = self.xml.defs["triplet"]
>
> @@ -322,15 +360,8 @@ class ElbeProject (object):
> sdktargetpath))
> # build host sysroot including cross compiler
> hostsysrootpath = os.path.join(self.sdkpath, 'sysroots', 'host')
> - self.log.do('mkdir -p "%s"' % hostsysrootpath)
> - for p in host_pkglist:
> - extract_pkg(self.xml.prj,
> - hostsysrootpath,
> - self.xml.defs,
> - p,
> - 'amd64',
> - self.log,
> - True)
> +
> + self.build_host_sysroot(host_pkglist, hostsysrootpath)
>
> n = gen_sdk_scripts(triplet,
> self.name,
> --
> 2.11.0
>
>
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel
More information about the elbe-devel
mailing list