[elbe-devel] [PATCH v3 33/52] Nuke ASCIIDocLog from packers
dion at linutronix.de
dion at linutronix.de
Thu Jun 27 14:44:47 CEST 2019
From: Olivier Dion <dion at linutronix.de>
Signed-off-by: Olivier Dion <dion at linutronix.de>
Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>
---
elbepack/cdroms.py | 92 ++++++++++++-----------------------------
elbepack/commands/genlicence.py | 2 +-
elbepack/commands/mkcdrom.py | 3 +-
elbepack/efilesystem.py | 32 +++++++-------
elbepack/elbeproject.py | 21 ++++------
elbepack/filesystem.py | 9 ++--
elbepack/packers.py | 22 +++++-----
7 files changed, 69 insertions(+), 112 deletions(-)
diff --git a/elbepack/cdroms.py b/elbepack/cdroms.py
index 6f6d80a8..60265de2 100644
--- a/elbepack/cdroms.py
+++ b/elbepack/cdroms.py
@@ -7,6 +7,8 @@
# SPDX-License-Identifier: GPL-3.0-or-later
import os
+import logging
+
from shutil import copyfile
from apt.package import FetchError
@@ -16,20 +18,13 @@ from elbepack.repomanager import CdromBinRepo
from elbepack.repomanager import CdromInitRepo
from elbepack.aptpkgutils import XMLPackage
from elbepack.filesystem import Filesystem, hostfs
-from elbepack.shellhelper import CommandError
+from elbepack.shellhelper import CommandError, do
CDROM_SIZE = 640 * 1000 * 1000
-def mk_source_cdrom(
- rfs,
- arch,
- codename,
- init_codename,
- target,
- log,
- cdrom_size=CDROM_SIZE,
- xml=None):
+def mk_source_cdrom(rfs, arch, codename, init_codename, target,
+ cdrom_size=CDROM_SIZE, xml=None):
# pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
@@ -66,22 +61,14 @@ def mk_source_cdrom(
# Do not include forbidden packages in src cdrom
if pkg.name in forbiddenPackages:
continue
+ pkg_id = "%s-%s" % (pkg.name, pkg.installed_version)
try:
dsc = cache.download_source(pkg.name, '/var/cache/elbe/sources')
repo.includedsc(dsc, force=True)
except ValueError:
- log.printo(
- "No sources for Package " +
- pkg.name +
- "-" +
- pkg.installed_version)
+ logging.error("No sources for package '%s'" % pkg_id)
except FetchError:
- log.printo(
- "Source for Package " +
- pkg.name +
- "-" +
- pkg.installed_version +
- " could not be downloaded")
+ logging.error("Source for package '%s' could not be downloaded" % pkg_id)
# elbe fetch_initvm_pkgs has downloaded all sources to
# /var/cache/elbe/sources
@@ -103,15 +90,8 @@ def mk_source_cdrom(
return repo.buildiso(os.path.join(target, "src-cdrom.iso"))
-def mk_binary_cdrom(
- rfs,
- arch,
- codename,
- init_codename,
- xml,
- target,
- log,
- cdrom_size=CDROM_SIZE):
+def mk_binary_cdrom(rfs, arch, codename, init_codename, xml, target,
+ cdrom_size=CDROM_SIZE):
# pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@@ -132,16 +112,17 @@ def mk_binary_cdrom(
# just copy it. the repo __init__() afterwards will
# not touch the repo config, nor generate a new key.
try:
- log.do('cp -av /var/cache/elbe/initvm-bin-repo "%s"' % repo_path)
+ do('cp -av /var/cache/elbe/initvm-bin-repo "%s"' % repo_path)
except CommandError:
# When /var/cache/elbe/initvm-bin-repo has not been created
# (because the initvm install was an old version or somthing,
# log an error, and continue with an empty directory.
- log.printo('ERROR: /var/cache/elbe/initvm-bin-repo does not exist')
- log.printo(' The generated CDROM will not contain initvm pkgs')
- log.printo(' This happened because the initvm was probably')
- log.printo(' generated with --skip-build-bin')
- log.do('mkdir -p "%s"' % repo_path)
+ logging.exception("/var/cache/elbe/initvm-bin-repo does not exist\n"
+ "The generated CDROM will not contain initvm pkgs\n"
+ "This happened because the initvm was probably\n"
+ "generated with --skip-build-bin")
+
+ do('mkdir -p "%s"' % repo_path)
repo = CdromInitRepo(init_codename, repo_path, cdrom_size, mirror)
@@ -152,57 +133,36 @@ def mk_binary_cdrom(
cache = get_rpcaptcache(rfs, arch)
for p in xml.node("debootstrappkgs"):
pkg = XMLPackage(p, arch)
+ pkg_id = "%s-%s" % (pkg.name, pkg.installed_version)
try:
deb = cache.download_binary(pkg.name,
'/var/cache/elbe/binaries/main',
pkg.installed_version)
target_repo.includedeb(deb, 'main')
except ValueError:
- log.printo(
- "No Package " +
- pkg.name +
- "-" +
- pkg.installed_version)
+ logging.error("No package '%s'" % pkg_id)
except FetchError:
- log.printo(
- "Package " +
- pkg.name +
- "-" +
- pkg.installed_version +
- " could not be downloaded")
+ logging.error("Package '%s' could not be downloaded" % pkg_id)
except TypeError:
- log.printo(
- "Package " +
- pkg.name +
- "-" +
- pkg.installed_version +
- " missing name or version")
+ logging.error("Package '%s' missing name or version" % pkg_id)
cache = get_rpcaptcache(rfs, arch)
pkglist = cache.get_installed_pkgs()
for pkg in pkglist:
+ pkg_id = "%s-%s" % (pkg.name, pkg.installed_version)
try:
deb = cache.download_binary(pkg.name,
'/var/cache/elbe/binaries/added',
pkg.installed_version)
target_repo.includedeb(deb, 'added', pkg.name, True)
except KeyError as ke:
- log.printo(str(ke))
+ logging.error(str(ke))
except ValueError:
- log.printo("No Package " + pkg.name + "-" + pkg.installed_version)
+ logging.error("No package %s" % pkg_id)
except FetchError:
- log.printo("Package " +
- pkg.name +
- "-" +
- str(pkg.installed_version) +
- " could not be downloaded")
+ logging.error("Package %s could not be downloaded" % pkg_id)
except TypeError:
- log.printo(
- "Package " +
- pkg.name +
- "-" +
- pkg.installed_version +
- " missing name or version")
+ logging.error("Package %s missing name or version")
target_repo.finalize()
diff --git a/elbepack/commands/genlicence.py b/elbepack/commands/genlicence.py
index 63798d60..14e49258 100644
--- a/elbepack/commands/genlicence.py
+++ b/elbepack/commands/genlicence.py
@@ -39,5 +39,5 @@ def run_command(argv):
else:
f = io.open('licence.txt', "w+", encoding='utf-8')
- rfs.write_licenses(f, log, opt.xml)
+ rfs.write_licenses(f, opt.xml)
f.close()
diff --git a/elbepack/commands/mkcdrom.py b/elbepack/commands/mkcdrom.py
index 6387bd17..c1f6eb76 100644
--- a/elbepack/commands/mkcdrom.py
+++ b/elbepack/commands/mkcdrom.py
@@ -95,7 +95,7 @@ def run_command(argv):
if opt.source:
with rfs:
generated_files += mk_source_cdrom(rfs, arch, codename,
- init_codename, builddir, log,
+ init_codename, builddir,
opt.cdrom_size)
if opt.binary:
@@ -106,7 +106,6 @@ def run_command(argv):
init_codename,
xml,
builddir,
- log,
opt.cdrom_size)
logging.info("Image Build finished.\n")
diff --git a/elbepack/efilesystem.py b/elbepack/efilesystem.py
index 3d2e3d6d..d10fc6ab 100644
--- a/elbepack/efilesystem.py
+++ b/elbepack/efilesystem.py
@@ -12,14 +12,15 @@ import shutil
import subprocess
import io
import stat
+import logging
-from elbepack.asciidoclog import CommandError
from elbepack.filesystem import Filesystem
from elbepack.version import elbe_version
from elbepack.hdimg import do_hdimg
from elbepack.fstab import fstabentry
from elbepack.licencexml import copyright_xml
from elbepack.packers import default_packer
+from elbepack.shellhelper import CommandError, do, chroot, get_command_out
def copy_filelist(src, filelist, dst):
@@ -41,7 +42,7 @@ def copy_filelist(src, filelist, dst):
shutil.copystat(src.fname(f), dst.fname(f))
-def extract_target(src, xml, dst, log, cache):
+def extract_target(src, xml, dst, cache):
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@@ -102,19 +103,19 @@ def extract_target(src, xml, dst, log, cache):
for item in pkglist:
f.write("%s install\n" % item)
- host_arch = log.get_command_out("dpkg --print-architecture").strip()
+ host_arch = get_command_out("dpkg --print-architecture").strip()
if xml.is_cross(host_arch):
ui = "/usr/share/elbe/qemu-elbe/" + str(xml.defs["userinterpr"])
if not os.path.exists(ui):
ui = "/usr/bin/" + str(xml.defs["userinterpr"])
- log.do('cp %s %s' % (ui, dst.fname("usr/bin")))
+ do('cp %s %s' % (ui, dst.fname("usr/bin")))
- log.chroot(dst.path, "/usr/bin/dpkg --clear-selections")
- log.chroot(
+ chroot(dst.path, "/usr/bin/dpkg --clear-selections")
+ chroot(
dst.path,
"/usr/bin/dpkg --set-selections < %s " %
dst.fname(psel))
- log.chroot(dst.path, "/usr/bin/dpkg --purge -a")
+ chroot(dst.path, "/usr/bin/dpkg --purge -a")
class ElbeFilesystem(Filesystem):
@@ -136,15 +137,15 @@ class ElbeFilesystem(Filesystem):
xml.xml.write(elbe_base)
self.chmod("etc/elbe_base.xml", stat.S_IREAD)
- def write_licenses(self, f, log, xml_fname=None):
+ def write_licenses(self, f, xml_fname=None):
licence_xml = copyright_xml()
for d in self.listdir("usr/share/doc/", skiplinks=True):
try:
with io.open(os.path.join(d, "copyright"), "rb") as lic:
lic_text = lic.read()
except IOError as e:
- log.printo("Error while processing license file %s: '%s'" %
- (os.path.join(d, "copyright"), e.strerror))
+ logging.error("Error while processing license file %s: '%s'" %
+ (os.path.join(d, "copyright"), e.strerror))
lic_text = "Error while processing license file %s: '%s'" % (
os.path.join(d, "copyright"), e.strerror)
@@ -285,9 +286,8 @@ class ChRootFilesystem(ElbeFilesystem):
class TargetFs(ChRootFilesystem):
- def __init__(self, path, log, xml, clean=True):
+ def __init__(self, path, xml, clean=True):
ChRootFilesystem.__init__(self, path, xml.defs["userinterpr"], clean)
- self.log = log
self.xml = xml
self.images = []
self.image_packers = {}
@@ -329,7 +329,7 @@ class TargetFs(ChRootFilesystem):
fname=targz_name,
sdir=self.fname('')
)
- self.log.do(cmd % args)
+ do(cmd % args)
# only append filename if creating tarball was successful
self.images.append(targz_name)
except CommandError:
@@ -341,7 +341,7 @@ class TargetFs(ChRootFilesystem):
cpio_name = self.xml.text("target/package/cpio/name")
os.chdir(self.fname(''))
try:
- self.log.do(
+ do(
"find . -print | cpio -ov -H newc >%s" %
os.path.join(
targetdir, cpio_name))
@@ -356,7 +356,7 @@ class TargetFs(ChRootFilesystem):
sfs_name = self.xml.text("target/package/squashfs/name")
os.chdir(self.fname(''))
try:
- self.log.do(
+ do(
"mksquashfs %s %s/%s -noappend -no-progress" %
(self.fname(''), targetdir, sfs_name))
# only append filename if creating mksquashfs was successful
@@ -368,7 +368,7 @@ class TargetFs(ChRootFilesystem):
def pack_images(self, builddir):
for img, packer in self.image_packers.items():
self.images.remove(img)
- packed = packer.pack_file(self.log, builddir, img)
+ packed = packer.pack_file(builddir, img)
if packed:
self.images.append(packed)
diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
index 0269a638..30fe59cd 100644
--- a/elbepack/elbeproject.py
+++ b/elbepack/elbeproject.py
@@ -202,8 +202,8 @@ class ElbeProject (object):
# Create TargetFs instance, if the target directory exists
if os.path.exists(self.targetpath) and self.buildenv:
- self.targetfs = TargetFs(self.targetpath, self.log,
- self.buildenv.xml, clean=False)
+ self.targetfs = TargetFs(self.targetpath, self.buildenv.xml,
+ clean=False)
else:
self.targetfs = None
@@ -462,7 +462,6 @@ class ElbeProject (object):
init_codename,
self.xml,
self.builddir,
- self.log,
cdrom_size=cdrom_size)
if build_sources:
elog.h1("Source CD %s" % sysrootstr)
@@ -472,7 +471,6 @@ class ElbeProject (object):
self.codename,
init_codename,
self.builddir,
- self.log,
cdrom_size=cdrom_size,
xml=self.xml)
except SystemError as e:
@@ -538,11 +536,11 @@ class ElbeProject (object):
# Extract target FS. We always create a new instance here with
# clean=true, because we want a pristine directory.
- self.targetfs = TargetFs(self.targetpath, self.log,
- self.buildenv.xml, clean=True)
+ self.targetfs = TargetFs(self.targetpath, self.buildenv.xml,
+ clean=True)
os.chdir(self.buildenv.rfs.fname(''))
extract_target(self.buildenv.rfs, self.xml, self.targetfs,
- self.log, self.get_rpcaptcache())
+ self.get_rpcaptcache())
# The validation file is created using check_full_pkgs() and
# elbe_report(), both opening the file in append mode. So if an
@@ -598,9 +596,8 @@ class ElbeProject (object):
"licence.txt"),
"w+",
encoding='utf-8')
- self.buildenv.rfs.write_licenses(
- f, self.log, os.path.join(
- self.builddir, "licence.xml"))
+ self.buildenv.rfs.write_licenses(f,
+ os.path.join(self.builddir, "licence.xml"))
except Exception:
self.log.printo("error during generating licence.txt/xml")
self.log.printo(sys.exc_info()[0])
@@ -867,8 +864,8 @@ class ElbeProject (object):
# We use the old content of the directory if no rebuild is done, so
# don't clean it (yet).
if os.path.exists(self.targetpath):
- self.targetfs = TargetFs(self.targetpath, self.log,
- self.xml, clean=False)
+ self.targetfs = TargetFs(self.targetpath, self.xml,
+ clean=False)
else:
self.targetfs = None
diff --git a/elbepack/filesystem.py b/elbepack/filesystem.py
index cc7d08f5..47bd8f88 100644
--- a/elbepack/filesystem.py
+++ b/elbepack/filesystem.py
@@ -13,6 +13,8 @@ from glob import glob
from tempfile import mkdtemp
from string import digits
+from elbepack.shellhelper import do
+
def size_to_int(size):
if size[-1] in digits:
return int(size)
@@ -263,20 +265,19 @@ class TmpdirFilesystem (Filesystem):
class ImgMountFilesystem(Filesystem):
- def __init__(self, mntpoint, dev, log):
+ def __init__(self, mntpoint, dev):
Filesystem.__init__(self, mntpoint)
self.dev = dev
- self.log = log
def __enter__(self):
cmd = 'mount "%s" "%s"' % (self.dev, self.path)
- self.log.do(cmd)
+ do(cmd)
return self
def __exit__(self, typ, value, traceback):
- self.log.do('umount "%s"' % self.path)
+ do('umount "%s"' % self.path)
hostfs = Filesystem('/')
diff --git a/elbepack/packers.py b/elbepack/packers.py
index 38bf95b8..894f94c1 100644
--- a/elbepack/packers.py
+++ b/elbepack/packers.py
@@ -4,18 +4,18 @@
# SPDX-License-Identifier: GPL-3.0-or-later
import os
-from elbepack.shellhelper import CommandError
+from elbepack.shellhelper import CommandError, do
class Packer(object):
# pylint: disable=too-few-public-methods
- def pack_file(self, _log, _builddir, _fname):
+ def pack_file(self, _builddir, _fname):
raise NotImplementedError('abstract method called')
class NoPacker(Packer):
# pylint: disable=too-few-public-methods
- def pack_file(self, _log, _builddir, fname):
+ def pack_file(self, _builddir, fname):
return fname
@@ -26,10 +26,10 @@ class InPlacePacker(Packer):
self.cmd = cmd
self.suffix = suffix
- def pack_file(self, log, builddir, fname):
+ def pack_file(self, builddir, fname):
try:
fpath = os.path.join(builddir, fname)
- log.do('%s "%s"' % (self.cmd, fpath))
+ do('%s "%s"' % (self.cmd, fpath))
except CommandError:
# in case of an error, we just return None
# which means, that the orig file does not
@@ -45,17 +45,17 @@ class TarArchiver(Packer):
self.flag = flag
self.suffix = suffix
- def pack_file(self, log, builddir, fname):
+ def pack_file(self, builddir, fname):
try:
fpath = os.path.join(builddir, fname)
dirname = os.path.dirname(fpath)
basename = os.path.basename(fpath)
archname = fpath + self.suffix
- log.do('tar cv%sf "%s" --sparse -C "%s" "%s"' % (self.flag,
- archname,
- dirname,
- basename))
- log.do('rm -f "%s"' % fpath)
+ do('tar cv%sf "%s" --sparse -C "%s" "%s"' % (self.flag,
+ archname,
+ dirname,
+ basename))
+ do('rm -f "%s"' % fpath)
except CommandError:
# in case of an error, we just return None
# which means, that the orig file does not
--
2.11.0
More information about the elbe-devel
mailing list