[elbe-devel] [PATCH v2 19/28] Nuke ASCIIDocLog from BuildEnv
Torben Hohn
torben.hohn at linutronix.de
Wed Jun 26 16:05:46 CEST 2019
On Fri, Jun 21, 2019 at 07:40:11PM +0200, dion at linutronix.de wrote:
> From: Olivier Dion <dion at linutronix.de>
>
> Remove 'ASCIIDocLog' from 'BuildEnv' constructor, thus changing all
> calls to it and changing the internal of the class to reflect the
> change.
>
> Signed-off-by: Olivier Dion <dion at linutronix.de>
Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>
>
>
> ---
> elbepack/cdroms.py | 5 +-
> elbepack/commands/fetch_initvm_pkgs.py | 4 +-
> elbepack/commands/toolchainextract.py | 8 +-
> elbepack/elbeproject.py | 20 ++---
> elbepack/finetuning.py | 3 +-
> elbepack/pkgarchive.py | 53 +++++-------
> elbepack/repomanager.py | 86 ++++++++-----------
> elbepack/rfs.py | 151 ++++++++++++++++-----------------
> elbepack/updatepkg.py | 2 +-
> 9 files changed, 144 insertions(+), 188 deletions(-)
>
> diff --git a/elbepack/cdroms.py b/elbepack/cdroms.py
> index e16dcd2d..6f6d80a8 100644
> --- a/elbepack/cdroms.py
> +++ b/elbepack/cdroms.py
> @@ -45,7 +45,6 @@ def mk_source_cdrom(
>
> repo = CdromSrcRepo(codename, init_codename,
> os.path.join(target, "srcrepo"),
> - log,
> cdrom_size,
> mirror)
>
> @@ -144,10 +143,10 @@ def mk_binary_cdrom(
> log.printo(' generated with --skip-build-bin')
> log.do('mkdir -p "%s"' % repo_path)
>
> - repo = CdromInitRepo(init_codename, repo_path, log, cdrom_size, mirror)
> + repo = CdromInitRepo(init_codename, repo_path, cdrom_size, mirror)
>
> target_repo = CdromBinRepo(arch, codename, None,
> - target_repo_path, log, cdrom_size, mirror)
> + target_repo_path, cdrom_size, mirror)
>
> if xml is not None:
> cache = get_rpcaptcache(rfs, arch)
> diff --git a/elbepack/commands/fetch_initvm_pkgs.py b/elbepack/commands/fetch_initvm_pkgs.py
> index 554c838e..95f6a5be 100644
> --- a/elbepack/commands/fetch_initvm_pkgs.py
> +++ b/elbepack/commands/fetch_initvm_pkgs.py
> @@ -91,7 +91,7 @@ def run_command(argv):
>
> # Binary Repo
> #
> - repo = CdromInitRepo(init_codename, opt.binrepo, log, 0, mirror)
> + repo = CdromInitRepo(init_codename, opt.binrepo, 0, mirror)
>
> hostfs.mkdir_p(opt.archive)
>
> @@ -119,7 +119,7 @@ def run_command(argv):
>
> # Source Repo
> #
> - repo = CdromSrcRepo(init_codename, init_codename, opt.srcrepo, log, 0, mirror)
> + repo = CdromSrcRepo(init_codename, init_codename, opt.srcrepo, 0, mirror)
> hostfs.mkdir_p(opt.srcarchive)
>
> # a cdrom build does not have sources
> diff --git a/elbepack/commands/toolchainextract.py b/elbepack/commands/toolchainextract.py
> index 2f7693cb..d8298e9b 100644
> --- a/elbepack/commands/toolchainextract.py
> +++ b/elbepack/commands/toolchainextract.py
> @@ -70,11 +70,9 @@ def run_command(argv):
>
> with elbe_logging(opt.output):
>
> - repo = ToolchainRepo(
> - defaults["arch"],
> - opt.codename,
> - opt.output,
> - StdoutLog())
> + repo = ToolchainRepo(defaults["arch"],
> + opt.codename,
> + opt.output)
>
> for p in pkgs:
> repo.includedeb(os.path.join(tmpdir, p))
> diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
> index 6911a9c9..046bcbf5 100644
> --- a/elbepack/elbeproject.py
> +++ b/elbepack/elbeproject.py
> @@ -189,13 +189,14 @@ class ElbeProject (object):
> self.log = StdoutLog()
>
> self.repo = ProjectRepo(self.arch, self.codename,
> - os.path.join(self.builddir, "repo"), self.log)
> + os.path.join(self.builddir, "repo"))
>
> # Create BuildEnv instance, if the chroot directory exists and
> # has an etc/elbe_version
> if os.path.exists(self.chrootpath):
> - self.buildenv = BuildEnv(
> - self.xml, self.log, self.chrootpath, clean=False)
> + self.buildenv = BuildEnv(self.xml,
> + self.chrootpath,
> + clean=False)
> else:
> self.buildenv = None
>
> @@ -250,7 +251,6 @@ class ElbeProject (object):
> self.sysrootpath))
>
> self.sysrootenv = BuildEnv(self.xml,
> - self.log,
> self.sysrootpath,
> clean=True)
> # Import keyring
> @@ -312,7 +312,6 @@ class ElbeProject (object):
> hostsysrootpath))
>
> self.host_sysrootenv = BuildEnv(self.xml,
> - self.log,
> hostsysrootpath,
> clean=True,
> arch="amd64")
> @@ -437,10 +436,10 @@ class ElbeProject (object):
> sysrootstr = ""
> if os.path.exists(self.sysrootpath):
> sysrootstr = "(including sysroot packages)"
> - env = BuildEnv(self.xml, self.log, self.sysrootpath,
> + env = BuildEnv(self.xml, self.sysrootpath,
> build_sources=build_sources, clean=False)
> else:
> - env = BuildEnv(self.xml, self.log, self.chrootpath,
> + env = BuildEnv(self.xml, self.chrootpath,
> build_sources=build_sources, clean=False)
>
> # ensure the /etc/apt/sources.list is created according to
> @@ -520,7 +519,7 @@ class ElbeProject (object):
> # so it gets rebuilt properly.
> if not self.has_full_buildenv():
> self.log.do('mkdir -p "%s"' % self.chrootpath)
> - self.buildenv = BuildEnv(self.xml, self.log, self.chrootpath,
> + self.buildenv = BuildEnv(self.xml, self.chrootpath,
> build_sources=build_sources, clean=True)
> skip_pkglist = False
>
> @@ -861,8 +860,9 @@ class ElbeProject (object):
>
> # Create a new BuildEnv instance, if we have a build directory
> if self.has_full_buildenv():
> - self.buildenv = BuildEnv(
> - self.xml, self.log, self.chrootpath, clean=False)
> + self.buildenv = BuildEnv(self.xml,
> + self.chrootpath,
> + clean=False)
>
> # Create TargetFs instance, if the target directory exists.
> # We use the old content of the directory if no rebuild is done, so
> diff --git a/elbepack/finetuning.py b/elbepack/finetuning.py
> index 426097aa..5da50b1f 100644
> --- a/elbepack/finetuning.py
> +++ b/elbepack/finetuning.py
> @@ -539,8 +539,7 @@ class UpdatedAction(FinetuningAction):
> " missing name or version")
>
> r = UpdateRepo(target.xml,
> - target.path + '/var/cache/elbe/repos/base',
> - log)
> + target.path + '/var/cache/elbe/repos/base')
>
> for d in buildenv.rfs.glob('tmp/pkgs/*.deb'):
> r.includedeb(d, 'main')
> diff --git a/elbepack/pkgarchive.py b/elbepack/pkgarchive.py
> index 14e6bd46..e335b8e2 100644
> --- a/elbepack/pkgarchive.py
> +++ b/elbepack/pkgarchive.py
> @@ -5,6 +5,7 @@
> # SPDX-License-Identifier: GPL-3.0-or-later
>
> import errno
> +import logging
> from os import path, remove
> from shutil import rmtree, copytree, move
> from apt.package import FetchError
> @@ -12,7 +13,7 @@ from elbepack.repomanager import RepoBase, RepoAttributes
>
>
> class ArchiveRepo(RepoBase):
> - def __init__(self, xml, pathname, log, origin, description, components,
> + def __init__(self, xml, pathname, origin, description, components,
> maxsize=None):
>
> # pylint: disable=too-many-arguments
> @@ -24,7 +25,6 @@ class ArchiveRepo(RepoBase):
>
> RepoBase.__init__(self,
> pathname,
> - log,
> None,
> repo_attrs,
> description,
> @@ -45,7 +45,7 @@ def gen_binpkg_archive(ep, repodir):
>
> try:
> # Repository containing all packages currently installed
> - repo = ArchiveRepo(ep.xml, repopath, ep.log, "Elbe",
> + repo = ArchiveRepo(ep.xml, repopath, "Elbe",
> "Elbe package archive", ["main"])
>
> c = ep.get_rpcaptcache()
> @@ -59,34 +59,21 @@ def gen_binpkg_archive(ep, repodir):
>
> if not path.isfile(abs_path):
> # Package file does not exist, download it and adjust path name
> - ep.log.printo(
> - "Package file " +
> - filename +
> - " not found in var/cache/apt/archives, downloading it")
> + logging.warning('Package file "%s" not found in var/cache/apt/archives, downloading it' % filename)
> abs_path = ep.buildenv.rfs.fname(rel_path)
> + pkg_id = "%s-%s" % (pkg.name, pkg.installed_version)
> try:
> abs_path = c.download_binary(pkg.name,
> '/var/cache/elbe/pkgarchive',
> pkg.installed_version)
> except ValueError:
> - ep.log.printo("No Package " + pkg.name + "-" +
> - pkg.installed_version)
> + logging.error('No package "%s"' % pkg_id)
> raise
> except FetchError:
> - ep.log.printo(
> - "Package " +
> - pkg.name +
> - "-" +
> - pkg.installed_version +
> - " could not be downloaded")
> + logging.error('Package "%s" could not be downloaded' % pkd_id)
> raise
> except TypeError:
> - ep.log.printo(
> - "Package " +
> - pkg.name +
> - "-" +
> - pkg.installed_version +
> - " missing name or version")
> + logging.error('Package "%s" missing name or version' % pkd_id)
> raise
>
> # Add package to repository
> @@ -116,12 +103,12 @@ def checkout_binpkg_archive(ep, repodir):
> try:
> # Copy the package archive into the buildenv,
> # so the RPCAptCache can access it
> - ep.log.printo("Copying package archive into build environment")
> + logging.info("Copying package archive into build environment")
> copytree(repopath, pkgarchive)
>
> # Move original etc/apt/sources.list and etc/apt/sources.list.d out
> # of the way
> - ep.log.printo("Moving original APT configuration out of the way")
> + logging.info("Moving original APT configuration out of the way")
> if path.isfile(sources_list):
> move(sources_list, sources_list_backup)
> if path.isdir(sources_list_d):
> @@ -129,7 +116,7 @@ def checkout_binpkg_archive(ep, repodir):
>
> # Now create our own, with the package archive being the only
> # source
> - ep.log.printo("Creating new /etc/apt/sources.list")
> + logging.info("Creating new /etc/apt/sources.list")
> deb = "deb file:///var/cache/elbe/pkgarchive "
> deb += ep.xml.text("/project/suite")
> deb += " main"
> @@ -138,14 +125,14 @@ def checkout_binpkg_archive(ep, repodir):
>
> # We need to update the APT cache to apply the changed package
> # source
> - ep.log.printo("Updating APT cache to use package archive")
> + logging.info("Updating APT cache to use package archive")
> ep.drop_rpcaptcache()
> c = ep.get_rpcaptcache()
> c.update()
>
> # Iterate over all packages, and mark them for installation or
> # deletion, using the same logic as in commands/updated.py
> - ep.log.printo("Calculating packages to install/remove")
> + logging.info("Calculating packages to install/remove")
> fpl = ep.xml.node("fullpkgs")
> pkgs = c.get_pkglist('all')
>
> @@ -154,24 +141,24 @@ def checkout_binpkg_archive(ep, repodir):
> for fpi in fpl:
> if p.name == fpi.et.text:
> version = fpi.et.get('version')
> - ep.log.printo("Install " + p.name + "-" + version)
> + logging.info('Install "%s-%s"' % (p.name, version))
> c.mark_install(p.name, version,
> from_user=not fpi.et.get('auto'),
> nodeps=True)
> marked = True
>
> if not marked:
> - ep.log.printo("Delete " + p.name + "-" + version)
> + logging.info('Delete "%s-%s"' % (p.name, version))
> c.mark_delete(p.name)
>
> # Now commit the changes
> - ep.log.printo("Commiting package changes")
> + logging.info("Commiting package changes")
> c.commit()
> finally:
> # If we changed the package sources, move back the backup
> if path.isdir(sources_list_d_backup) or \
> path.isfile(sources_list_backup):
> - ep.log.printo("Moving back original APT configuration")
> + logging.info("Moving back original APT configuration")
> update_needed = True
> else:
> update_needed = False
> @@ -186,13 +173,11 @@ def checkout_binpkg_archive(ep, repodir):
>
> # Remove the package archive from the buildenv
> if path.isdir(pkgarchive):
> - ep.log.printo(
> - "Removing package archive from build environment")
> + logging.info("Removing package archive from build environment")
> rmtree(pkgarchive)
>
> # Update APT cache, if we modified the package sources
> if update_needed:
> - ep.log.printo(
> - "Updating APT cache to use original package sources")
> + logging.info("Updating APT cache to use original package sources")
> ep.drop_rpcaptcache()
> ep.get_rpcaptcache().update()
> diff --git a/elbepack/repomanager.py b/elbepack/repomanager.py
> index 1969c8f9..862b4f77 100644
> --- a/elbepack/repomanager.py
> +++ b/elbepack/repomanager.py
> @@ -9,6 +9,7 @@
>
> import os
> import shutil
> +import logging
>
> from debian.deb822 import Deb822
>
> @@ -16,7 +17,7 @@ from elbepack.debianreleases import codename2suite
> from elbepack.filesystem import Filesystem
> from elbepack.pkgutils import get_dsc_size
> from elbepack.egpg import generate_elbe_internal_key, export_key, unlock_key
> -from elbepack.shellhelper import CommandError
> +from elbepack.shellhelper import CommandError, do
>
>
> class RepoAttributes(object):
> @@ -56,7 +57,6 @@ class RepoBase(object):
> def __init__(
> self,
> path,
> - log,
> init_attr,
> repo_attr,
> origin,
> @@ -68,7 +68,6 @@ class RepoBase(object):
> self.vol_path = path
> self.volume_count = 0
>
> - self.log = log
> self.init_attr = init_attr
> self.repo_attr = repo_attr
>
> @@ -164,28 +163,22 @@ class RepoBase(object):
> shutil.copyfile(keyring, self.fs.fname("/elbe-keyring.gpg"))
>
> if need_update:
> - self.log.do(
> - 'reprepro --export=force --basedir "' +
> - self.fs.path +
> - '" update',
> - env_add={'GNUPGHOME': "/var/cache/elbe/gnupg"})
> + cmd = 'reprepro --export=force --basedir "%s" update' % self.fs.path
> + do(cmd,
> + env_add={'GNUPGHOME': "/var/cache/elbe/gnupg"})
> else:
> for att in self.attrs:
> - self.log.do(
> - 'reprepro --basedir "' +
> - self.fs.path +
> - '" export ' +
> - att.codename,
> + cmd = 'reprepro --basedir "%s" export %s' % (self.fs.path,
> + att.codename)
> + do(cmd,
> env_add={'GNUPGHOME': "/var/cache/elbe/gnupg"})
>
> def finalize(self):
> for att in self.attrs:
> - self.log.do(
> - 'reprepro --basedir "' +
> - self.fs.path +
> - '" export ' +
> - att.codename,
> - env_add={'GNUPGHOME': '/var/cache/elbe/gnupg'})
> + cmd = 'reprepro --basedir "%s" export %s' % (self.fs.path,
> + att.codename)
> + do(cmd,
> + env_add={'GNUPGHOME': '/var/cache/elbe/gnupg'})
>
> def _includedeb(self, path, codename, component):
> if self.maxsize:
> @@ -193,15 +186,12 @@ class RepoBase(object):
> if new_size > self.maxsize:
> self.new_repo_volume()
>
> - self.log.do(
> - 'reprepro --keepunreferencedfiles --export=never --basedir "' +
> - self.fs.path +
> - '" -C ' +
> - component +
> - ' includedeb ' +
> - codename +
> - ' ' +
> - path)
> + cmd = ('reprepro --keepunreferencedfiles --export=never '
> + '--basedir "%s" -C %s includedeb %s %s' % (self.fs.path,
> + component,
> + codename,
> + path))
> + do(cmd)
>
> def includedeb(self, path, component="main", pkgname=None, force=False):
> # pkgname needs only to be specified if force is enabled
> @@ -223,14 +213,14 @@ class RepoBase(object):
> self._includedeb(path, self.init_attr.codename, component)
>
> def _include(self, path, codename, component):
> - self.log.do('reprepro --ignore=wrongdistribution '
> + do('reprepro --ignore=wrongdistribution '
> '--ignore=surprisingbinary --keepunreferencedfiles '
> - '--export=never --basedir "' + self.fs.path + '" -C ' +
> - component + ' -P normal -S misc include ' + codename +
> - ' ' + path)
> + '--export=never --basedir "' + self.fs.path + '" -C ' +
> + component + ' -P normal -S misc include ' + codename +
> + ' ' + path)
>
> def _removedeb(self, pkgname, codename):
> - self.log.do(
> + do(
> "reprepro --basedir %s remove %s %s" %
> (self.fs.path, codename, pkgname),
> env_add={'GNUPGHOME': '/var/cache/elbe/gnupg'})
> @@ -239,7 +229,7 @@ class RepoBase(object):
> self._removedeb(pkgname, self.repo_attr.codename)
>
> def _removesrc(self, srcname, codename):
> - self.log.do(
> + do(
> "reprepro --basedir %s removesrc %s %s" %
> (self.fs.path, codename, srcname),
> env_add={'GNUPGHOME': '/var/cache/elbe/gnupg'})
> @@ -269,7 +259,7 @@ class RepoBase(object):
> if self.maxsize and (self.fs.disk_usage("") > self.maxsize):
> self.new_repo_volume()
>
> - self.log.do(
> + do(
> 'reprepro --keepunreferencedfiles --export=never --basedir "' +
> self.fs.path +
> '" -C ' +
> @@ -292,9 +282,8 @@ class RepoBase(object):
> #
> # copy the dsc into the cdrom root,
> # when reprepro fails to insert it.
> - self.log.printo('Unable to verify dsc "%s":' % path)
> - self.log.printo('unsupported signature algorithm')
> - self.log.do('cp -av "%s" "%s"' % (path, self.fs.path))
> + logging.error('Unable to verify dsc "%s": unsupported signature algorithm' % path)
> + do('cp -av "%s" "%s"' % (path, self.fs.path))
> elif force:
> # Including dsc did not work.
> # Maybe we have the same Version with a
> @@ -321,7 +310,7 @@ class RepoBase(object):
> files = []
> if self.volume_count == 0:
> new_path = '"' + self.fs.path + '"'
> - self.log.do(
> + do(
> "genisoimage -o %s -J -joliet-long -R %s" %
> (fname, new_path))
> files.append(fname)
> @@ -329,7 +318,7 @@ class RepoBase(object):
> for i in range(self.volume_count + 1):
> volfs = self.get_volume_fs(i)
> newname = fname + ("%02d" % i)
> - self.log.do(
> + do(
> "genisoimage -o %s -J -joliet-long -R %s" %
> (newname, volfs.path))
> files.append(newname)
> @@ -338,7 +327,7 @@ class RepoBase(object):
>
>
> class UpdateRepo(RepoBase):
> - def __init__(self, xml, path, log):
> + def __init__(self, xml, path):
> self.xml = xml
>
> arch = xml.text("project/arch", key="arch")
> @@ -348,7 +337,6 @@ class UpdateRepo(RepoBase):
>
> RepoBase.__init__(self,
> path,
> - log,
> None,
> repo_attrs,
> "Update",
> @@ -356,7 +344,7 @@ class UpdateRepo(RepoBase):
>
>
> class CdromInitRepo(RepoBase):
> - def __init__(self, init_codename, path, log, maxsize,
> + def __init__(self, init_codename, path, maxsize,
> mirror='http://ftp.de.debian.org/debian'):
>
> # pylint: disable=too-many-arguments
> @@ -367,7 +355,6 @@ class CdromInitRepo(RepoBase):
>
> RepoBase.__init__(self,
> path,
> - log,
> None,
> init_attrs,
> "Elbe",
> @@ -382,7 +369,6 @@ class CdromBinRepo(RepoBase):
> codename,
> init_codename,
> path,
> - log,
> maxsize,
> mirror='http://ftp.debian.org/debian'):
>
> @@ -398,7 +384,6 @@ class CdromBinRepo(RepoBase):
>
> RepoBase.__init__(self,
> path,
> - log,
> init_attrs,
> repo_attrs,
> "Elbe",
> @@ -407,7 +392,7 @@ class CdromBinRepo(RepoBase):
>
>
> class CdromSrcRepo(RepoBase):
> - def __init__(self, codename, init_codename, path, log, maxsize,
> + def __init__(self, codename, init_codename, path, maxsize,
> mirror='http://ftp.debian.org/debian'):
>
> # pylint: disable=too-many-arguments
> @@ -427,7 +412,6 @@ class CdromSrcRepo(RepoBase):
>
> RepoBase.__init__(self,
> path,
> - log,
> init_attrs,
> repo_attrs,
> "Elbe",
> @@ -436,11 +420,10 @@ class CdromSrcRepo(RepoBase):
>
>
> class ToolchainRepo(RepoBase):
> - def __init__(self, arch, codename, path, log):
> + def __init__(self, arch, codename, path):
> repo_attrs = RepoAttributes(codename, arch, "main")
> RepoBase.__init__(self,
> path,
> - log,
> None,
> repo_attrs,
> "toolchain",
> @@ -448,11 +431,10 @@ class ToolchainRepo(RepoBase):
>
>
> class ProjectRepo(RepoBase):
> - def __init__(self, arch, codename, path, log):
> + def __init__(self, arch, codename, path):
> repo_attrs = RepoAttributes(codename, arch + ' source', "main")
> RepoBase.__init__(self,
> path,
> - log,
> None,
> repo_attrs,
> "Local",
> diff --git a/elbepack/rfs.py b/elbepack/rfs.py
> index 8476d01b..3d35e29c 100644
> --- a/elbepack/rfs.py
> +++ b/elbepack/rfs.py
> @@ -10,11 +10,12 @@
> import os
> import urlparse
> import urllib2
> +import logging
>
> from elbepack.efilesystem import BuildImgFs
> from elbepack.templates import (write_pack_template, get_preseed,
> preseed_to_text)
> -from elbepack.shellhelper import CommandError
> +from elbepack.shellhelper import CommandError, do, chroot, get_command_out
>
>
> class DebootstrapException (Exception):
> @@ -23,12 +24,11 @@ class DebootstrapException (Exception):
>
>
> class BuildEnv (object):
> - def __init__(self, xml, log, path, build_sources=False, clean=False, arch="default"):
> + def __init__(self, xml, path, build_sources=False, clean=False, arch="default"):
>
> # pylint: disable=too-many-arguments
>
> self.xml = xml
> - self.log = log
> self.path = path
> self.rpcaptcache = None
> self.arch = arch
> @@ -59,57 +59,56 @@ class BuildEnv (object):
> def cdrom_umount(self):
> if self.xml.prj.has("mirror/cdrom"):
> cdrompath = self.rfs.fname("cdrom")
> - self.log.do('umount "%s"' % cdrompath)
> - self.log.do("rm -f %s/etc/apt/trusted.gpg.d/elbe-cdrepo.gpg" %
> - self.path)
> - self.log.do("rm -f %s/etc/apt/trusted.gpg.d/elbe-cdtargetrepo.gpg" %
> - self.path)
> + do('umount "%s"' % cdrompath)
> + do("rm -f %s/etc/apt/trusted.gpg.d/elbe-cdrepo.gpg" %
> + self.path)
> + do("rm -f %s/etc/apt/trusted.gpg.d/elbe-cdtargetrepo.gpg" %
> + self.path)
>
> def cdrom_mount(self):
> if self.xml.has("project/mirror/cdrom"):
> cdrompath = self.rfs.fname("cdrom")
> - self.log.do('mkdir -p "%s"' % cdrompath)
> - self.log.do('mount -o loop "%s" "%s"'
> - % (self.xml.text("project/mirror/cdrom"), cdrompath))
> + do('mkdir -p "%s"' % cdrompath)
> + do('mount -o loop "%s" "%s"' %
> + (self.xml.text("project/mirror/cdrom"), cdrompath))
>
> def __enter__(self):
> if os.path.exists(self.path + '/../repo/pool'):
> - self.log.do("mv %s/../repo %s" % (self.path, self.path))
> - self.log.do('echo "deb copy:///repo %s main" > '
> - '%s/etc/apt/sources.list.d/local.list' % (
> - self.xml.text("project/suite"), self.path))
> - self.log.do('echo "deb-src copy:///repo %s main" >> '
> - '%s/etc/apt/sources.list.d/local.list' % (
> - self.xml.text("project/suite"), self.path))
> + do("mv %s/../repo %s" % (self.path, self.path))
> + do('echo "deb copy:///repo %s main" > '
> + '%s/etc/apt/sources.list.d/local.list' %
> + (self.xml.text("project/suite"), self.path))
> + do('echo "deb-src copy:///repo %s main" >> '
> + '%s/etc/apt/sources.list.d/local.list' %
> + (self.xml.text("project/suite"), self.path))
>
> self.cdrom_mount()
> self.rfs.__enter__()
>
> if self.xml.has("project/mirror/cdrom"):
> - self.log.chroot(self.rfs.path,
> - 'apt-key '
> - '--keyring /etc/apt/trusted.gpg.d/elbe-cdrepo.gpg '
> - 'add /cdrom/repo.pub')
> - self.log.chroot(self.rfs.path,
> - 'apt-key '
> - '--keyring /etc/apt/trusted.gpg.d/elbe-cdtargetrepo.gpg '
> - 'add /cdrom/targetrepo/repo.pub')
> + chroot(self.rfs.path,
> + 'apt-key '
> + '--keyring /etc/apt/trusted.gpg.d/elbe-cdrepo.gpg '
> + 'add /cdrom/repo.pub')
> + chroot(self.rfs.path,
> + 'apt-key '
> + '--keyring /etc/apt/trusted.gpg.d/elbe-cdtargetrepo.gpg '
> + 'add /cdrom/targetrepo/repo.pub')
>
> if os.path.exists(os.path.join(self.rfs.path, 'repo/pool')):
> - self.log.chroot(self.rfs.path,
> - 'apt-key '
> - '--keyring /etc/apt/trusted.gpg.d/elbe-localrepo.gpg '
> - 'add /repo/repo.pub')
> + chroot(self.rfs.path,
> + 'apt-key '
> + '--keyring /etc/apt/trusted.gpg.d/elbe-localrepo.gpg '
> + 'add /repo/repo.pub')
> return self
>
> def __exit__(self, typ, value, traceback):
> self.rfs.__exit__(typ, value, traceback)
> self.cdrom_umount()
> if os.path.exists(self.path + '/repo'):
> - self.log.do("mv %s/repo %s/../" % (self.path, self.path))
> - self.log.do("rm %s/etc/apt/sources.list.d/local.list" % self.path)
> - self.log.do("rm %s/etc/apt/trusted.gpg.d/elbe-localrepo.gpg" %
> - self.path)
> + do("mv %s/repo %s/../" % (self.path, self.path))
> + do("rm %s/etc/apt/sources.list.d/local.list" % self.path)
> + do("rm %s/etc/apt/trusted.gpg.d/elbe-localrepo.gpg" % self.path)
>
> def debootstrap(self, arch="default"):
>
> @@ -139,13 +138,12 @@ class BuildEnv (object):
> os.environ["DEBIAN_FRONTEND"] = "noninteractive"
> os.environ["DEBONF_NONINTERACTIVE_SEEN"] = "true"
>
> - self.log.h2("debootstrap log")
> + logging.info("Debootstrap log")
>
> if arch == "default":
> arch = self.xml.text("project/buildimage/arch", key="arch")
>
> - host_arch = self.log.get_command_out(
> - "dpkg --print-architecture").strip()
> + host_arch = get_command_out("dpkg --print-architecture").strip()
>
> includepkgs = None
> strapcmd = 'debootstrap '
> @@ -175,7 +173,7 @@ class BuildEnv (object):
>
> try:
> self.cdrom_mount()
> - self.log.do(cmd)
> + do(cmd)
> except CommandError:
> cleanup = True
> raise DebootstrapException()
> @@ -195,29 +193,29 @@ class BuildEnv (object):
> self.rfs.fname("cdrom"))
> else:
> keyring = ''
> +
> cmd = '%s --foreign --arch=%s %s "%s" "%s" "%s"' % (
> strapcmd, arch, keyring, suite, self.rfs.path, primary_mirror)
>
> try:
> self.cdrom_mount()
> - self.log.do(cmd)
> + do(cmd)
>
> ui = "/usr/share/elbe/qemu-elbe/" + self.xml.defs["userinterpr"]
>
> if not os.path.exists(ui):
> ui = "/usr/bin/" + self.xml.defs["userinterpr"]
>
> - self.log.do('cp %s %s' % (ui, self.rfs.fname("usr/bin")))
> + do('cp %s %s' % (ui, self.rfs.fname("usr/bin")))
>
> if self.xml.has("project/noauth"):
> - self.log.chroot(
> - self.rfs.path,
> - '/debootstrap/debootstrap --no-check-gpg --second-stage')
> + chroot(self.rfs.path,
> + '/debootstrap/debootstrap --no-check-gpg --second-stage')
> else:
> - self.log.chroot(self.rfs.path,
> - '/debootstrap/debootstrap --second-stage')
> + chroot(self.rfs.path,
> + '/debootstrap/debootstrap --second-stage')
>
> - self.log.chroot(self.rfs.path, 'dpkg --configure -a')
> + chroot(self.rfs.path, 'dpkg --configure -a')
>
> except CommandError:
> cleanup = True
> @@ -238,10 +236,10 @@ class BuildEnv (object):
> def add_key(self, key):
> cmd = 'echo "%s" > %s' % (key, self.rfs.fname("tmp/key.pub"))
> clean = 'rm -f %s' % self.rfs.fname("tmp/key.pub")
> - self.log.do(cmd)
> + do(cmd)
> with self.rfs:
> - self.log.chroot(self.rfs.path, 'apt-key add /tmp/key.pub')
> - self.log.do(clean)
> + chroot(self.rfs.path, 'apt-key add /tmp/key.pub')
> + do(clean)
>
> def import_keys(self):
> if self.xml.has('project/mirror/url-list'):
> @@ -270,7 +268,7 @@ class BuildEnv (object):
> preseed_txt = preseed_to_text(preseed)
> self.rfs.write_file("var/cache/elbe/preseed.txt", 0o644, preseed_txt)
> with self.rfs:
> - self.log.chroot(
> + chroot(
> self.rfs.path, 'debconf-set-selections < %s' %
> self.rfs.fname("var/cache/elbe/preseed.txt"))
>
> @@ -313,7 +311,7 @@ class BuildEnv (object):
>
> def seed_etc(self):
> passwd = self.xml.text("target/passwd")
> - self.log.chroot(
> + chroot(
> self.rfs.path, """/bin/sh -c 'echo "%s\\n%s\\n" | passwd'""" %
> (passwd, passwd))
>
> @@ -322,39 +320,34 @@ class BuildEnv (object):
> if self.xml.has("target/domain"):
> fqdn = ("%s.%s" % (hostname, self.xml.text("target/domain")))
>
> - self.log.chroot(
> - self.rfs.path,
> - """/bin/sh -c 'echo "127.0.1.1 %s %s elbe-daemon" >> """
> - """/etc/hosts'""" % (fqdn,hostname))
> + chroot(self.rfs.path,
> + """/bin/sh -c 'echo "127.0.1.1 %s %s elbe-daemon" >> """
> + """/etc/hosts'""" % (fqdn,hostname))
>
> - self.log.chroot(
> - self.rfs.path,
> - """/bin/sh -c 'echo "%s" > /etc/hostname'""" % hostname)
> + chroot(self.rfs.path,
> + """/bin/sh -c 'echo "%s" > /etc/hostname'""" % hostname)
>
> - self.log.chroot(
> - self.rfs.path,
> - """/bin/sh -c 'echo "%s" > """
> - """/etc/mailname'""" % (fqdn))
> + chroot(self.rfs.path,
> + """/bin/sh -c 'echo "%s" > """
> + """/etc/mailname'""" % (fqdn))
>
> if self.xml.has("target/console"):
> serial_con, serial_baud = self.xml.text(
> "target/console").split(',')
> if serial_baud:
> - self.log.chroot(
> - self.rfs.path,
> - """/bin/sh -c '[ -f /etc/inittab ] && """
> - """echo "T0:23:respawn:/sbin/getty -L %s %s vt100" >> """
> - """/etc/inittab'""" % (serial_con, serial_baud),
> - allow_fail=True)
> -
> - self.log.chroot(
> - self.rfs.path,
> - """/bin/sh -c """
> - """'[ -f /lib/systemd/system/serial-getty at .service ] && """
> - """ln -s /lib/systemd/system/serial-getty at .service """
> - """/etc/systemd/system/getty.target.wants/"""
> - """serial-getty@%s.service'""" % serial_con,
> - allow_fail=True)
> + chroot(self.rfs.path,
> + """/bin/sh -c '[ -f /etc/inittab ] && """
> + """echo "T0:23:respawn:/sbin/getty -L %s %s vt100" >> """
> + """/etc/inittab'""" % (serial_con, serial_baud),
> + allow_fail=True)
> +
> + chroot(self.rfs.path,
> + """/bin/sh -c """
> + """'[ -f /lib/systemd/system/serial-getty at .service ] && """
> + """ln -s /lib/systemd/system/serial-getty at .service """
> + """/etc/systemd/system/getty.target.wants/"""
> + """serial-getty@%s.service'""" % serial_con,
> + allow_fail=True)
> else:
> - self.log.printo("parsing console tag failed, needs to be of "
> - "'/dev/ttyS0,115200' format.")
> + logging.error("parsing console tag failed, needs to be of "
> + "'/dev/ttyS0,115200' format.")
> diff --git a/elbepack/updatepkg.py b/elbepack/updatepkg.py
> index b41cffe0..8c14aa23 100644
> --- a/elbepack/updatepkg.py
> +++ b/elbepack/updatepkg.py
> @@ -114,7 +114,7 @@ def gen_update_pkg(project, xml_filename, upd_filename,
> if xml_filename:
> repodir = os.path.join(update, "repo")
>
> - repo = UpdateRepo(xml, repodir, project.log)
> + repo = UpdateRepo(xml, repodir)
>
> for fname in fnamelist:
> path = os.path.join(
> --
> 2.11.0
>
>
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel
--
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99
Hinweise zum Datenschutz finden Sie hier (Informations on data privacy
can be found here): https://linutronix.de/kontakt/Datenschutz.php
Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen |
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner
More information about the elbe-devel
mailing list