[elbe-devel] [PATCH 5/8] buildrepo: final touches on cdrom build
Manuel Traut
manut at linutronix.de
Fri Oct 19 15:47:04 CEST 2018
On Thu, Sep 27, 2018 at 12:34:18PM +0200, Torben Hohn wrote:
> Check for cdrom build, and only create the initvm Source Repo and
> archive dir, but dont try adding source pkgs. They are not available
> anyways.
>
> the cdrom build is now triggered using the --cdrom-mount-path option,
> since the source.xml found in /var/cache/elbe/source.xml does not
> carry the modified cdrom mirror section.
>
> When preseed late is running, the cdrom is not mounted anymore.
> mounting the cdrom from init-elbe.sh does not work because the
> in-target command cleans up mounts, that happened in the target.
>
> Add --cdrom-device option, so that "elbe buildrepo" can issue the mount
> command itself. Also rename opt.cdrom to opt.cdrom_path to avoid
> confusion.
>
> Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
> ---
> elbepack/commands/buildrepo.py | 36 +++++++++++++++++++++++++++++++++---
> 1 file changed, 33 insertions(+), 3 deletions(-)
>
> diff --git a/elbepack/commands/buildrepo.py b/elbepack/commands/buildrepo.py
> index c08da229..84c0ef33 100644
> --- a/elbepack/commands/buildrepo.py
> +++ b/elbepack/commands/buildrepo.py
> @@ -45,9 +45,12 @@ def run_command(argv):
> dest="skip_validation", default=False,
> help="Skip xml schema validation")
>
> - oparser.add_option("--cdrom-mount-path", dest="cdrom",
> + oparser.add_option("--cdrom-mount-path", dest="cdrom_path",
> help="path where cdrom is mounted")
>
> + oparser.add_option("--cdrom-device", dest="cdrom_device",
> + help="cdrom device, in case it has to be mounted")
> +
> oparser.add_option("--apt-archive", dest="archive",
> default="/var/cache/elbe/binaries/main",
> help="path where binary packages are downloaded to.")
> @@ -71,12 +74,30 @@ def run_command(argv):
> sys.exit(20)
>
> log = StdoutLog()
> - mirror = xml.get_initvm_primary_mirror(opt.cdrom)
> +
> + if opt.cdrom_path:
> + if opt.cdrom_device:
> + log.do('mount "%s" "%s"' % (opt.cdrom_device, opt.cdrom_path))
> +
> + # a cdrom build is identified by the cdrom option
> + # the xml file that is copied into the initvm
> + # by the initrd does not have the cdrom tags setup.
> + mirror = "file://%s" % opt.cdrom_path
> + else:
> + mirror = xml.get_initvm_primary_mirror(opt.cdrom_path)
> +
> init_codename = xml.get_initvm_codename()
>
> # Binary Repo
> #
> - repo = CdromInitRepo(init_codename, opt.binrepo, log, 0, mirror)
> + try:
> + repo = CdromInitRepo(init_codename, opt.binrepo, log, 0, mirror)
> + except Exception:
we decided not to catch all Exceptions, is there a good reason for that?
If -> add a comment and pylint annotations
Wouldn't it make sense to log the exception?
> + log.printo('cant create repo')
> + log.do('mount')
> + log.do('ls -R /')
> + raise
> +
> hostfs.mkdir_p(opt.archive)
>
> pkglist = get_initvm_pkglist()
> @@ -113,6 +134,15 @@ def run_command(argv):
> repo = CdromSrcRepo(init_codename, init_codename, opt.srcrepo, log, 0, mirror)
> hostfs.mkdir_p(opt.srcarchive)
>
> + # a cdrom build does not have sources
> + # skip adding packages to the source repo
> + #
> + # FIXME: we need a way to add source cdroms later on
> + if opt.cdrom_path:
> + if opt.cdrom_device:
> + log.do('umount "%s"' % opt.cdrom_device)
> + sys.exit(0)
> +
> for pkg in pkglist:
> try:
> p = cache[pkg.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