[elbe-devel] [PATCH 3/8] Move iso options to its own file

Torben Hohn torben.hohn at linutronix.de
Fri Aug 9 11:25:00 CEST 2019


On Fri, Aug 09, 2019 at 10:47:49AM +0200, Torben Hohn wrote:
> From: Olivier Dion <dion at linutronix.de>
> 
> The xmlpreprocess.py used to import from the cdroms.py the iso options
> related functions.  This dependency was a problem for the initvm.
> 
> Putting the iso options related stuff in its own file allow us to
> break remove this dependency.
> 
> Signed-off-by: Olivier Dion <dion at linutronix.de>

Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>

> ---
>  elbepack/cdroms.py        | 43 +------------------------------------------
>  elbepack/isooptions.py    | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  elbepack/xmlpreprocess.py |  2 +-
>  3 files changed, 48 insertions(+), 43 deletions(-)
>  create mode 100644 elbepack/isooptions.py
> 
> diff --git a/elbepack/cdroms.py b/elbepack/cdroms.py
> index 9d3c1aaca..3ba67f7bf 100644
> --- a/elbepack/cdroms.py
> +++ b/elbepack/cdroms.py
> @@ -17,52 +17,11 @@ from elbepack.repomanager import CdromInitRepo
>  from elbepack.aptpkgutils import XMLPackage
>  from elbepack.filesystem import Filesystem, hostfs
>  from elbepack.shellhelper import CommandError
> +from elbepack.isooptions import get_iso_options
>  
>  CDROM_SIZE = 640 * 1000 * 1000
>  
>  
> -# https://wiki.osdev.org/ISO_9660
> -iso_options = {
> -    "sysid":     ("-sysid",      32, "Specifies the system ID",              "strA"),
> -    "volid":     ("-V",          32, "Specifies the volume ID",              "strD"),
> -    "volset":    ("-volset",    128, "Specifies the volume set ID",          "strD"),
> -    "publisher": ("-publisher", 128, "Specifies the publisher ID",           "strA"),
> -    "preparer":  ("-p",         128, "Specifies the preparer ID",            "strA"),
> -    "app":       ("-A",         128, "Specifies the application ID",         "strA"),
> -    "copyright": ("-copyright",  38, "Specifies copyright filename on disc", "strD"),
> -    "abstract":  ("-abstract",   36, "Specifies the abstract filename",      "strD"),
> -    "biblio":    ("-biblio",     37, "Specifies the bibliographic filename", "strD"),
> -}
> -
> -encoding = {
> -    "strA":"""ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!"%&'()*+,-./:;<=>? """,
> -    "strD":"""ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"""
> -}
> -def iso_option_valid(opt_name, text):
> -    if opt_name not in iso_options:
> -        return False
> -    str_type = encoding[iso_options[opt_name][3]]
> -    if len(text) > iso_options[opt_name][1]:
> -        return len(text) - iso_options[opt_name][1]
> -    for c in text:
> -        if c not in str_type:
> -            return c
> -    return True
> -
> -def get_iso_options(log, xml):
> -    options = []
> -    src_opts = xml.node("target/src-opts")
> -    if src_opts is None:
> -        return ""
> -    for node in src_opts:
> -        if node.tag not in iso_options:
> -            continue
> -        option = iso_options[node.tag]
> -        log.printo("Adding option %s\n%s" % (node.tag, option[2]))
> -        text = node.et.text[:option[1]]
> -        options.append('%s "%s"' % (option[0], text.replace('"', '\\"')))
> -    return " ".join(options)
> -
>  def mk_source_cdrom(
>          rfs,
>          arch,
> diff --git a/elbepack/isooptions.py b/elbepack/isooptions.py
> new file mode 100644
> index 000000000..beab6ce65
> --- /dev/null
> +++ b/elbepack/isooptions.py
> @@ -0,0 +1,46 @@
> +# ELBE - Debian Based Embedded Rootfilesystem Builder
> +# Copyright (c) 2019 Olivier Dion <dion at linutronix.de>
> +#
> +# SPDX-License-Identifier: GPL-3.0-or-later
> +
> +# https://wiki.osdev.org/ISO_9660
> +iso_options = {
> +    "sysid":     ("-sysid",      32, "Specifies the system ID",              "strA"),
> +    "volid":     ("-V",          32, "Specifies the volume ID",              "strD"),
> +    "volset":    ("-volset",    128, "Specifies the volume set ID",          "strD"),
> +    "publisher": ("-publisher", 128, "Specifies the publisher ID",           "strA"),
> +    "preparer":  ("-p",         128, "Specifies the preparer ID",            "strA"),
> +    "app":       ("-A",         128, "Specifies the application ID",         "strA"),
> +    "copyright": ("-copyright",  38, "Specifies copyright filename on disc", "strD"),
> +    "abstract":  ("-abstract",   36, "Specifies the abstract filename",      "strD"),
> +    "biblio":    ("-biblio",     37, "Specifies the bibliographic filename", "strD"),
> +}
> +
> +encoding = {
> +    "strA":"""ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!"%&'()*+,-./:;<=>? """,
> +    "strD":"""ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"""
> +}
> +def iso_option_valid(opt_name, text):
> +    if opt_name not in iso_options:
> +        return False
> +    str_type = encoding[iso_options[opt_name][3]]
> +    if len(text) > iso_options[opt_name][1]:
> +        return len(text) - iso_options[opt_name][1]
> +    for c in text:
> +        if c not in str_type:
> +            return c
> +    return True
> +
> +def get_iso_options(log, xml):
> +    options = []
> +    src_opts = xml.node("target/src-opts")
> +    if src_opts is None:
> +        return ""
> +    for node in src_opts:
> +        if node.tag not in iso_options:
> +            continue
> +        option = iso_options[node.tag]
> +        log.printo("Adding option %s\n%s" % (node.tag, option[2]))
> +        text = node.et.text[:option[1]]
> +        options.append('%s "%s"' % (option[0], text.replace('"', '\\"')))
> +    return " ".join(options)
> diff --git a/elbepack/xmlpreprocess.py b/elbepack/xmlpreprocess.py
> index 1cb6007ed..adf897e5c 100644
> --- a/elbepack/xmlpreprocess.py
> +++ b/elbepack/xmlpreprocess.py
> @@ -19,7 +19,7 @@ from lxml.etree import XMLParser, parse
>  from elbepack.archivedir import ArchivedirError, combinearchivedir
>  from elbepack.directories import elbe_exe
>  from elbepack.shellhelper import command_out_stderr, CommandError
> -from elbepack.cdroms import iso_option_valid
> +from elbepack.isooptions import iso_option_valid
>  
>  
>  # list of sections that are allowed to exists multiple times before
> -- 
> 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