From 34244400cd9da38c066c8567a411d81e123e0787 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Thu, 15 Mar 2018 13:55:50 -0700 Subject: [PATCH] Add Lorax 28.9 Documentation under /f28-branch/ --- f28-branch/.buildinfo | 4 + f28-branch/.doctrees/environment.pickle | Bin 0 -> 1689094 bytes f28-branch/.doctrees/index.doctree | Bin 0 -> 4944 bytes f28-branch/.doctrees/intro.doctree | Bin 0 -> 9195 bytes .../.doctrees/livemedia-creator.doctree | Bin 0 -> 137550 bytes f28-branch/.doctrees/lorax.doctree | Bin 0 -> 55800 bytes f28-branch/.doctrees/modules.doctree | Bin 0 -> 2530 bytes f28-branch/.doctrees/product-images.doctree | Bin 0 -> 6287 bytes f28-branch/.doctrees/pylorax.doctree | Bin 0 -> 367111 bytes f28-branch/.doctrees/source/index.doctree | Bin 0 -> 4918 bytes f28-branch/_modules/index.html | 239 + f28-branch/_modules/pylorax.html | 671 + f28-branch/_modules/pylorax/base.html | 296 + f28-branch/_modules/pylorax/buildstamp.html | 290 + f28-branch/_modules/pylorax/cmdline.html | 523 + f28-branch/_modules/pylorax/decorators.html | 259 + f28-branch/_modules/pylorax/discinfo.html | 268 + f28-branch/_modules/pylorax/dnfhelper.html | 338 + f28-branch/_modules/pylorax/executils.html | 576 + f28-branch/_modules/pylorax/imgutils.html | 714 ++ f28-branch/_modules/pylorax/ltmpl.html | 1016 ++ f28-branch/_modules/pylorax/monitor.html | 424 + f28-branch/_modules/pylorax/mount.html | 331 + f28-branch/_modules/pylorax/sysutils.html | 337 + f28-branch/_modules/pylorax/treebuilder.html | 629 + f28-branch/_modules/pylorax/treeinfo.html | 286 + f28-branch/_sources/index.rst.txt | 27 + f28-branch/_sources/index.txt | 27 + f28-branch/_sources/intro.rst.txt | 67 + f28-branch/_sources/intro.txt | 67 + f28-branch/_sources/livemedia-creator.rst.txt | 639 + f28-branch/_sources/livemedia-creator.txt | 638 + f28-branch/_sources/lorax.rst.txt | 153 + f28-branch/_sources/lorax.txt | 144 + f28-branch/_sources/modules.rst.txt | 7 + f28-branch/_sources/modules.txt | 7 + f28-branch/_sources/product-images.rst.txt | 27 + f28-branch/_sources/product-images.txt | 27 + f28-branch/_sources/pylorax.rst.txt | 134 + f28-branch/_sources/pylorax.txt | 134 + f28-branch/_sources/source/index.txt | 22 + f28-branch/_static/ajax-loader.gif | Bin 0 -> 673 bytes f28-branch/_static/basic.css | 643 + f28-branch/_static/comment-bright.png | Bin 0 -> 756 bytes f28-branch/_static/comment-close.png | Bin 0 -> 829 bytes f28-branch/_static/comment.png | Bin 0 -> 641 bytes f28-branch/_static/css/badge_only.css | 2 + f28-branch/_static/css/theme.css | 5 + f28-branch/_static/doctools.js | 311 + f28-branch/_static/down-pressed.png | Bin 0 -> 222 bytes f28-branch/_static/down.png | Bin 0 -> 202 bytes f28-branch/_static/file.png | Bin 0 -> 286 bytes f28-branch/_static/fonts/Inconsolata-Bold.ttf | Bin 0 -> 109948 bytes .../_static/fonts/Inconsolata-Regular.ttf | Bin 0 -> 96964 bytes f28-branch/_static/fonts/Inconsolata.ttf | Bin 0 -> 63184 bytes f28-branch/_static/fonts/Lato-Bold.ttf | Bin 0 -> 657188 bytes f28-branch/_static/fonts/Lato-Regular.ttf | Bin 0 -> 657212 bytes f28-branch/_static/fonts/RobotoSlab-Bold.ttf | Bin 0 -> 170616 bytes .../_static/fonts/RobotoSlab-Regular.ttf | Bin 0 -> 169064 bytes .../_static/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../_static/fonts/fontawesome-webfont.svg | 2671 ++++ .../_static/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../_static/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes f28-branch/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ f28-branch/_static/jquery-3.1.0.js | 10074 +++++++++++++++ f28-branch/_static/jquery.js | 4 + f28-branch/_static/js/modernizr.min.js | 4 + f28-branch/_static/js/theme.js | 169 + f28-branch/_static/minus.png | Bin 0 -> 90 bytes f28-branch/_static/plus.png | Bin 0 -> 90 bytes f28-branch/_static/pygments.css | 69 + f28-branch/_static/searchtools.js | 761 ++ f28-branch/_static/underscore-1.3.1.js | 999 ++ f28-branch/_static/underscore.js | 31 + f28-branch/_static/up-pressed.png | Bin 0 -> 214 bytes f28-branch/_static/up.png | Bin 0 -> 203 bytes f28-branch/_static/websupport.js | 808 ++ f28-branch/genindex.html | 752 ++ f28-branch/index.html | 255 + f28-branch/intro.html | 287 + f28-branch/livemedia-creator.html | 1070 ++ f28-branch/lorax.html | 543 + f28-branch/modules.html | 266 + f28-branch/objects.inv | Bin 0 -> 1631 bytes f28-branch/product-images.html | 259 + f28-branch/py-modindex.html | 319 + f28-branch/pylorax.html | 1653 +++ f28-branch/search.html | 241 + f28-branch/searchindex.js | 1 + f28-branch/source/index.html | 213 + 90 files changed, 42039 insertions(+) create mode 100644 f28-branch/.buildinfo create mode 100644 f28-branch/.doctrees/environment.pickle create mode 100644 f28-branch/.doctrees/index.doctree create mode 100644 f28-branch/.doctrees/intro.doctree create mode 100644 f28-branch/.doctrees/livemedia-creator.doctree create mode 100644 f28-branch/.doctrees/lorax.doctree create mode 100644 f28-branch/.doctrees/modules.doctree create mode 100644 f28-branch/.doctrees/product-images.doctree create mode 100644 f28-branch/.doctrees/pylorax.doctree create mode 100644 f28-branch/.doctrees/source/index.doctree create mode 100644 f28-branch/_modules/index.html create mode 100644 f28-branch/_modules/pylorax.html create mode 100644 f28-branch/_modules/pylorax/base.html create mode 100644 f28-branch/_modules/pylorax/buildstamp.html create mode 100644 f28-branch/_modules/pylorax/cmdline.html create mode 100644 f28-branch/_modules/pylorax/decorators.html create mode 100644 f28-branch/_modules/pylorax/discinfo.html create mode 100644 f28-branch/_modules/pylorax/dnfhelper.html create mode 100644 f28-branch/_modules/pylorax/executils.html create mode 100644 f28-branch/_modules/pylorax/imgutils.html create mode 100644 f28-branch/_modules/pylorax/ltmpl.html create mode 100644 f28-branch/_modules/pylorax/monitor.html create mode 100644 f28-branch/_modules/pylorax/mount.html create mode 100644 f28-branch/_modules/pylorax/sysutils.html create mode 100644 f28-branch/_modules/pylorax/treebuilder.html create mode 100644 f28-branch/_modules/pylorax/treeinfo.html create mode 100644 f28-branch/_sources/index.rst.txt create mode 100644 f28-branch/_sources/index.txt create mode 100644 f28-branch/_sources/intro.rst.txt create mode 100644 f28-branch/_sources/intro.txt create mode 100644 f28-branch/_sources/livemedia-creator.rst.txt create mode 100644 f28-branch/_sources/livemedia-creator.txt create mode 100644 f28-branch/_sources/lorax.rst.txt create mode 100644 f28-branch/_sources/lorax.txt create mode 100644 f28-branch/_sources/modules.rst.txt create mode 100644 f28-branch/_sources/modules.txt create mode 100644 f28-branch/_sources/product-images.rst.txt create mode 100644 f28-branch/_sources/product-images.txt create mode 100644 f28-branch/_sources/pylorax.rst.txt create mode 100644 f28-branch/_sources/pylorax.txt create mode 100644 f28-branch/_sources/source/index.txt create mode 100644 f28-branch/_static/ajax-loader.gif create mode 100644 f28-branch/_static/basic.css create mode 100644 f28-branch/_static/comment-bright.png create mode 100644 f28-branch/_static/comment-close.png create mode 100644 f28-branch/_static/comment.png create mode 100644 f28-branch/_static/css/badge_only.css create mode 100644 f28-branch/_static/css/theme.css create mode 100644 f28-branch/_static/doctools.js create mode 100644 f28-branch/_static/down-pressed.png create mode 100644 f28-branch/_static/down.png create mode 100644 f28-branch/_static/file.png create mode 100644 f28-branch/_static/fonts/Inconsolata-Bold.ttf create mode 100644 f28-branch/_static/fonts/Inconsolata-Regular.ttf create mode 100644 f28-branch/_static/fonts/Inconsolata.ttf create mode 100644 f28-branch/_static/fonts/Lato-Bold.ttf create mode 100644 f28-branch/_static/fonts/Lato-Regular.ttf create mode 100644 f28-branch/_static/fonts/RobotoSlab-Bold.ttf create mode 100644 f28-branch/_static/fonts/RobotoSlab-Regular.ttf create mode 100644 f28-branch/_static/fonts/fontawesome-webfont.eot create mode 100644 f28-branch/_static/fonts/fontawesome-webfont.svg create mode 100644 f28-branch/_static/fonts/fontawesome-webfont.ttf create mode 100644 f28-branch/_static/fonts/fontawesome-webfont.woff create mode 100644 f28-branch/_static/jquery-1.11.1.js create mode 100644 f28-branch/_static/jquery-3.1.0.js create mode 100644 f28-branch/_static/jquery.js create mode 100644 f28-branch/_static/js/modernizr.min.js create mode 100644 f28-branch/_static/js/theme.js create mode 100644 f28-branch/_static/minus.png create mode 100644 f28-branch/_static/plus.png create mode 100644 f28-branch/_static/pygments.css create mode 100644 f28-branch/_static/searchtools.js create mode 100644 f28-branch/_static/underscore-1.3.1.js create mode 100644 f28-branch/_static/underscore.js create mode 100644 f28-branch/_static/up-pressed.png create mode 100644 f28-branch/_static/up.png create mode 100644 f28-branch/_static/websupport.js create mode 100644 f28-branch/genindex.html create mode 100644 f28-branch/index.html create mode 100644 f28-branch/intro.html create mode 100644 f28-branch/livemedia-creator.html create mode 100644 f28-branch/lorax.html create mode 100644 f28-branch/modules.html create mode 100644 f28-branch/objects.inv create mode 100644 f28-branch/product-images.html create mode 100644 f28-branch/py-modindex.html create mode 100644 f28-branch/pylorax.html create mode 100644 f28-branch/search.html create mode 100644 f28-branch/searchindex.js create mode 100644 f28-branch/source/index.html diff --git a/f28-branch/.buildinfo b/f28-branch/.buildinfo new file mode 100644 index 00000000..b4412b9f --- /dev/null +++ b/f28-branch/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a191c75fd1f5041e8ca7029874dc82a4 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/f28-branch/.doctrees/environment.pickle b/f28-branch/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..cb706f19de7523335211a449f3a949709e9d332d GIT binary patch literal 1689094 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≶;_r+^N^eUTQf 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

|;{q@- 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 literal 0 HcmV?d00001 diff --git a/f28-branch/.doctrees/index.doctree b/f28-branch/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a0640cae4a1c0f339db04672528ee7a1c0b728ca GIT binary patch literal 4944 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 W4WAhf+r>h+7rCc`DV>4xUgw`k8YL9~ literal 0 HcmV?d00001 diff --git a/f28-branch/.doctrees/livemedia-creator.doctree b/f28-branch/.doctrees/livemedia-creator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41f77eabea468372b3f250a477bd42375182f21d GIT binary patch literal 137550 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⁣EUHkKuz_;9v;&tLa!sLvosqN5cAc{6b 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 literal 0 HcmV?d00001 diff --git a/f28-branch/.doctrees/lorax.doctree b/f28-branch/.doctrees/lorax.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b29302eefbbda2226c634f4d8ada5dcd3112c4bb GIT binary patch literal 55800 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 WTcXG85=wRI;bdn(!B>Bw^8W!{Px}!7 literal 0 HcmV?d00001 diff --git a/f28-branch/.doctrees/modules.doctree b/f28-branch/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8b55504fcce999b8b0e9d1b19f6074bc766ff993 GIT binary patch literal 2530 zcmZ8jOK%%D5O!?qWm~f2Ha#RU(xM2Oq_ETiJp{e}_pYcO{5k`jISnW;DW7vU4E@Z(BSMhxmJ7HjX?xa?ozUYa*7`%@!u-S9c6?|hW z4655g8@h~11seNr`7-%hZ~PT&x5-TCR}_w16er?=*bDtOjLWcJNX6r&&uBQH&Ka3` zhwxLldy-j%76y4it%VTpJw?mrZODAJUSu@CGJKwNd>A;oNLx`%#A9)oJc=h_Iup9& zvn(%WKXXQYqHb0h{i~hTY0LnZot2vTg4?OF2=(d3uFsI!FxO?JyHODg+>;%Ymv<)CY0(uF zo1zw#WMu>^drkG~Xi$#rNH*PeoD#3n*#}{gdy_avI<6h9Bn{`n&~oRbTA*7VcI`7a zS~-qlhyFWScwoKiA2GQMqXk#oP^V4Af>ChQ(XztguyI3R`wGj0cIi!l)fkA8#L=`1 zcfC~R+ZaygT05m3-`Ko(5XPw$Q6RFMYg0x@CKj})2$+~!+QQ_MM#2kTOUR9Mf~-0P z9@_(L>s*E-!z*nZDfl%n;>B(_5VYu)z3`APC9rbTdAm~Tg&yOXU%=huh8hK|pkX*I zAsIPCbDollAHzhd$~(eUt{Jpq7Hx-k)x75^jt(L{P;FkOzfBZn=x$SbMi^ zrB_>t;q2bdJrm;hFlmgg1L*zo_Q&(raK629?_@Yh30R;cfKP#hVi*@xEj(Rtz|FAU zMF)jX49~S;1nmZLz)fn>%h1oYnj=TRAsMMKf+QwlKTN21nyf`(SAtPv=F5t7tOKgG zK!R{a(IOc zXf@SlF=PCC22DGQ;ZZt~ET$90@e(LIpgM&7{P{QE0hWoG=l9$s$=c1+l^druZaB%^ zymlj8S-{1}(G2`&X$}s<8Q4^kuCcoCiLFw3@4{zwG*Ve^Qsy9S!ia&zhqxfSCA#j! z-YQ3zM976G@PMQHg--N7vL!_`{pQiT7AMbgLD3GVW79jROd2u-T35b;({w-AQ?~7C zjATfpnxmwvCO=JWZ+*6{cfv8K8T#%PgI{p&VC_*}XnI9>No7HB`50bbkRQVySJ#O} z3+^25<1{dkwTmBp7KY6PK+AzZQZWfiJL0H;a(%fzgl`bS;X4Ab;HpXYa5&wPHdijh zur}`&{X~4+){qa9uz45n#2Xt%N#JfP;PfGicb8T?!~Yv`Xv283O7-b+E-`_Udsu8F zsgqWEO_-aKMh{;Gs8yNiqAPr@`sqDkr#;%TI9hqF51nq=$3!$Pjo?T3ZM8f2KtP{& lY7>0vpgr)FVlhG*gIzmsi4Qw*U6KQqCQRFm>DKev^nU~I>~R19 literal 0 HcmV?d00001 diff --git a/f28-branch/.doctrees/product-images.doctree b/f28-branch/.doctrees/product-images.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f54cf67941d8589947f2f19b4721e7e56df8662c GIT binary patch literal 6287 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 WOUrxn<=~P|LI~3&BUQa})c+qgulU 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 + + + + + + + + Overview: module code — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Overview: module code
  • + + +
  • + + + +
  • + +
+ + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax.html b/f28-branch/_modules/pylorax.html new file mode 100644 index 00000000..78088464 --- /dev/null +++ b/f28-branch/_modules/pylorax.html @@ -0,0 +1,671 @@ + + + + + + + + + + + pylorax — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax

+#
+# __init__.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     David Cantrell <dcantrell@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+
+# set up logging
+import logging
+logger = logging.getLogger("pylorax")
+logger.addHandler(logging.NullHandler())
+
+program_log = logging.getLogger("program")
+
+import sys
+import os
+import configparser
+import tempfile
+import locale
+from subprocess import CalledProcessError
+import selinux
+from glob import glob
+
+from pylorax.base import BaseLoraxClass, DataHolder
+import pylorax.output as output
+
+import dnf
+
+from pylorax.sysutils import joinpaths, remove, linktree
+
+from pylorax.treebuilder import RuntimeBuilder, TreeBuilder
+from pylorax.buildstamp import BuildStamp
+from pylorax.treeinfo import TreeInfo
+from pylorax.discinfo import DiscInfo
+from pylorax.executils import runcmd, runcmd_output
+
+
+# get lorax version
+try:
+    import pylorax.version
+except ImportError:
+    vernum = "devel"
+else:
+    vernum = pylorax.version.num
+
+# List of drivers to remove on ppc64 arch to keep initrd < 32MiB
+REMOVE_PPC64_DRIVERS = "floppy scsi_debug nouveau radeon cirrus mgag200"
+REMOVE_PPC64_MODULES = "drm plymouth"
+
+
[docs]class ArchData(DataHolder): + lib64_arches = ("x86_64", "ppc64", "ppc64le", "s390x", "ia64", "aarch64") + bcj_arch = dict(i386="x86", x86_64="x86", + ppc="powerpc", ppc64="powerpc", ppc64le="powerpc", + arm="arm", armhfp="arm") + + def __init__(self, buildarch): + super(ArchData, self).__init__() + self.buildarch = buildarch + self.basearch = dnf.rpm.basearch(buildarch) + self.libdir = "lib64" if self.basearch in self.lib64_arches else "lib" + self.bcj = self.bcj_arch.get(self.basearch)
+ +
[docs]class Lorax(BaseLoraxClass): + + def __init__(self): + BaseLoraxClass.__init__(self) + self._configured = False + self.product = None + self.workdir = None + self.arch = None + self.conf = None + self.inroot = None + self.debug = False + self.outputdir = None + self._templatedir = None + + # set locale to C + locale.setlocale(locale.LC_ALL, 'C') + +
[docs] def configure(self, conf_file="/etc/lorax/lorax.conf"): + self.conf = configparser.SafeConfigParser() + + # set defaults + self.conf.add_section("lorax") + self.conf.set("lorax", "debug", "1") + self.conf.set("lorax", "sharedir", "/usr/share/lorax") + self.conf.set("lorax", "logdir", "/var/log/lorax") + + self.conf.add_section("output") + self.conf.set("output", "colors", "1") + self.conf.set("output", "encoding", "utf-8") + self.conf.set("output", "ignorelist", "/usr/share/lorax/ignorelist") + + self.conf.add_section("templates") + self.conf.set("templates", "ramdisk", "ramdisk.ltmpl") + + self.conf.add_section("compression") + self.conf.set("compression", "type", "xz") + self.conf.set("compression", "args", "") + self.conf.set("compression", "bcj", "on") + + # read the config file + if os.path.isfile(conf_file): + self.conf.read(conf_file) + + # set up the output + self.debug = self.conf.getboolean("lorax", "debug") + output_level = output.DEBUG if self.debug else output.INFO + + if sys.stdout.isatty(): + colors = self.conf.getboolean("output", "colors") + else: + colors = False + encoding = self.conf.get("output", "encoding") + + self.output.basic_config(output_level=output_level, + colors=colors, encoding=encoding) + + ignorelist = self.conf.get("output", "ignorelist") + if os.path.isfile(ignorelist): + with open(ignorelist, "r") as fobj: + for line in fobj: + line = line.strip() + if line and not line.startswith("#"): + self.output.ignore(line) + + # cron does not have sbin in PATH, + # so we have to add it ourselves + os.environ["PATH"] = "{0}:/sbin:/usr/sbin".format(os.environ["PATH"]) + + # remove some environmental variables that can cause problems with package scripts + env_remove = ('DISPLAY', 'DBUS_SESSION_BUS_ADDRESS') + list(os.environ.pop(k) for k in env_remove if k in os.environ) + + self._configured = True
+ + @property + def templatedir(self): + """Find the template directory. + + Pick the first directory under sharedir/templates.d/ if it exists. + Otherwise use the sharedir + """ + if not self._templatedir: + self._templatedir = find_templates(self.conf.get("lorax", "sharedir")) + logger.info("Using templatedir %s", self._templatedir) + return self._templatedir + +
[docs] def init_stream_logging(self): + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + logger.addHandler(sh)
+ +
[docs] def init_file_logging(self, logdir, logname="pylorax.log"): + fh = logging.FileHandler(filename=joinpaths(logdir, logname), mode="w") + fh.setLevel(logging.DEBUG) + logger.addHandler(fh)
+ +
[docs] def run(self, dbo, product, version, release, variant="", bugurl="", + isfinal=False, workdir=None, outputdir=None, buildarch=None, volid=None, + domacboot=True, doupgrade=True, remove_temp=False, + installpkgs=None, excludepkgs=None, + size=2, + add_templates=None, + add_template_vars=None, + add_arch_templates=None, + add_arch_template_vars=None, + verify=True): + + assert self._configured + + installpkgs = installpkgs or [] + excludepkgs = excludepkgs or [] + + if domacboot: + try: + runcmd(["rpm", "-q", "hfsplus-tools"]) + except CalledProcessError: + logger.critical("you need to install hfsplus-tools to create mac images") + sys.exit(1) + + # set up work directory + self.workdir = workdir or tempfile.mkdtemp(prefix="pylorax.work.") + if not os.path.isdir(self.workdir): + os.makedirs(self.workdir) + + # set up log directory + logdir = self.conf.get("lorax", "logdir") + if not os.path.isdir(logdir): + os.makedirs(logdir) + + self.init_stream_logging() + self.init_file_logging(logdir) + + logger.debug("version is %s", vernum) + logger.debug("using work directory %s", self.workdir) + logger.debug("using log directory %s", logdir) + + # set up output directory + self.outputdir = outputdir or tempfile.mkdtemp(prefix="pylorax.out.") + if not os.path.isdir(self.outputdir): + os.makedirs(self.outputdir) + logger.debug("using output directory %s", self.outputdir) + + # do we have root privileges? + logger.info("checking for root privileges") + if not os.geteuid() == 0: + logger.critical("no root privileges") + sys.exit(1) + + # is selinux disabled? + # With selinux in enforcing mode the rpcbind package required for + # dracut nfs module, which is in turn required by anaconda module, + # will not get installed, because it's preinstall scriptlet fails, + # resulting in an incomplete initial ramdisk image. + # The reason is that the scriptlet runs tools from the shadow-utils + # package in chroot, particularly groupadd and useradd to add the + # required rpc group and rpc user. This operation fails, because + # the selinux context on files in the chroot, that the shadow-utils + # tools need to access (/etc/group, /etc/passwd, /etc/shadow etc.), + # is wrong and selinux therefore disallows access to these files. + logger.info("checking the selinux mode") + if selinux.is_selinux_enabled() and selinux.security_getenforce(): + logger.critical("selinux must be disabled or in Permissive mode") + sys.exit(1) + + # do we have a proper dnf base object? + logger.info("checking dnf base object") + if not isinstance(dbo, dnf.Base): + logger.critical("no dnf base object") + sys.exit(1) + self.inroot = dbo.conf.installroot + logger.debug("using install root: %s", self.inroot) + + if not buildarch: + buildarch = get_buildarch(dbo) + + logger.info("setting up build architecture") + self.arch = ArchData(buildarch) + for attr in ('buildarch', 'basearch', 'libdir'): + logger.debug("self.arch.%s = %s", attr, getattr(self.arch,attr)) + + logger.info("setting up build parameters") + self.product = DataHolder(name=product, version=version, release=release, + variant=variant, bugurl=bugurl, isfinal=isfinal) + logger.debug("product data: %s", self.product) + + # NOTE: if you change isolabel, you need to change pungi to match, or + # the pungi images won't boot. + isolabel = volid or "%s-%s-%s" % (self.product.name, self.product.version, self.arch.basearch) + + if len(isolabel) > 32: + logger.fatal("the volume id cannot be longer than 32 characters") + sys.exit(1) + + # NOTE: rb.root = dbo.conf.installroot (== self.inroot) + rb = RuntimeBuilder(product=self.product, arch=self.arch, + dbo=dbo, templatedir=self.templatedir, + installpkgs=installpkgs, + excludepkgs=excludepkgs, + add_templates=add_templates, + add_template_vars=add_template_vars) + + logger.info("installing runtime packages") + rb.install() + + # write .buildstamp + buildstamp = BuildStamp(self.product.name, self.product.version, + self.product.bugurl, self.product.isfinal, + self.arch.buildarch, self.product.variant) + + buildstamp.write(joinpaths(self.inroot, ".buildstamp")) + + if self.debug: + rb.writepkglists(joinpaths(logdir, "pkglists")) + rb.writepkgsizes(joinpaths(logdir, "original-pkgsizes.txt")) + + logger.info("doing post-install configuration") + rb.postinstall() + + # write .discinfo + discinfo = DiscInfo(self.product.release, self.arch.basearch) + discinfo.write(joinpaths(self.outputdir, ".discinfo")) + + logger.info("backing up installroot") + installroot = joinpaths(self.workdir, "installroot") + linktree(self.inroot, installroot) + + logger.info("generating kernel module metadata") + rb.generate_module_data() + + logger.info("cleaning unneeded files") + rb.cleanup() + + if verify: + logger.info("verifying the installroot") + if not rb.verify(): + sys.exit(1) + else: + logger.info("Skipping verify") + + if self.debug: + rb.writepkgsizes(joinpaths(logdir, "final-pkgsizes.txt")) + + logger.info("creating the runtime image") + runtime = "images/install.img" + compression = self.conf.get("compression", "type") + compressargs = self.conf.get("compression", "args").split() # pylint: disable=no-member + if self.conf.getboolean("compression", "bcj"): + if self.arch.bcj: + compressargs += ["-Xbcj", self.arch.bcj] + else: + logger.info("no BCJ filter for arch %s", self.arch.basearch) + rb.create_runtime(joinpaths(installroot,runtime), + compression=compression, compressargs=compressargs, + size=size) + rb.finished() + + logger.info("preparing to build output tree and boot images") + treebuilder = TreeBuilder(product=self.product, arch=self.arch, + inroot=installroot, outroot=self.outputdir, + runtime=runtime, isolabel=isolabel, + domacboot=domacboot, doupgrade=doupgrade, + templatedir=self.templatedir, + add_templates=add_arch_templates, + add_template_vars=add_arch_template_vars, + workdir=self.workdir) + + logger.info("rebuilding initramfs images") + dracut_args = ["--xz", "--install", "/.buildstamp", "--no-early-microcode", "--add", "fips"] + anaconda_args = dracut_args + ["--add", "anaconda pollcdrom qemu qemu-net"] + + # ppc64 cannot boot an initrd > 32MiB so remove some drivers + if self.arch.basearch in ("ppc64", "ppc64le"): + dracut_args.extend(["--omit-drivers", REMOVE_PPC64_DRIVERS]) + + # Only omit dracut modules from the initrd so that they're kept for + # upgrade.img + anaconda_args.extend(["--omit", REMOVE_PPC64_MODULES]) + + treebuilder.rebuild_initrds(add_args=anaconda_args) + + logger.info("populating output tree and building boot images") + treebuilder.build() + + # write .treeinfo file and we're done + treeinfo = TreeInfo(self.product.name, self.product.version, + self.product.variant, self.arch.basearch) + for section, data in treebuilder.treeinfo_data.items(): + treeinfo.add_section(section, data) + treeinfo.write(joinpaths(self.outputdir, ".treeinfo")) + + # cleanup + if remove_temp: + remove(self.workdir)
+ + +
[docs]def get_buildarch(dbo): + # get architecture of the available anaconda package + buildarch = None + q = dbo.sack.query() + a = q.available() + for anaconda in a.filter(name="anaconda-core"): + if anaconda.arch != "src": + buildarch = anaconda.arch + break + if not buildarch: + logger.critical("no anaconda-core package in the repository") + sys.exit(1) + + return buildarch
+ + +
[docs]def setup_logging(logfile, theLogger): + """ + Setup the various logs + + :param logfile: filename to write the log to + :type logfile: string + :param theLogger: top-level logger + :type theLogger: logging.Logger + """ + if not os.path.isdir(os.path.abspath(os.path.dirname(logfile))): + os.makedirs(os.path.abspath(os.path.dirname(logfile))) + + # Setup logging to console and to logfile + logger.setLevel(logging.DEBUG) + theLogger.setLevel(logging.DEBUG) + + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + fmt = logging.Formatter("%(asctime)s: %(message)s") + sh.setFormatter(fmt) + logger.addHandler(sh) + theLogger.addHandler(sh) + + fh = logging.FileHandler(filename=logfile, mode="w") + fh.setLevel(logging.DEBUG) + fmt = logging.Formatter("%(asctime)s %(levelname)s %(name)s: %(message)s") + fh.setFormatter(fmt) + logger.addHandler(fh) + theLogger.addHandler(fh) + + # External program output log + program_log.setLevel(logging.DEBUG) + f = os.path.abspath(os.path.dirname(logfile))+"/program.log" + fh = logging.FileHandler(filename=f, mode="w") + fh.setLevel(logging.DEBUG) + program_log.addHandler(fh)
+ + +
[docs]def find_templates(templatedir="/usr/share/lorax"): + """ Find the templates to use. + + :param str templatedir: Top directory to search for templates + :returns: Path to templates + :rtype: str + + If there is a templates.d directory under templatedir the + lowest numbered directory entry is returned. + + eg. /usr/share/lorax/templates.d/99-generic/ + """ + if os.path.isdir(joinpaths(templatedir, "templates.d")): + try: + templatedir = sorted(glob(joinpaths(templatedir, "templates.d", "*")))[0] + except IndexError: + pass + return templatedir
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/base.html b/f28-branch/_modules/pylorax/base.html new file mode 100644 index 00000000..2b68466a --- /dev/null +++ b/f28-branch/_modules/pylorax/base.html @@ -0,0 +1,296 @@ + + + + + + + + + + + pylorax.base — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.base

+#
+# base.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+from abc import ABCMeta, abstractmethod
+import sys
+
+import pylorax.output as output
+
+
+
[docs]class BaseLoraxClass(object, metaclass=ABCMeta): + @abstractmethod + def __init__(self): + self.output = output.LoraxOutput() + +
[docs] def pcritical(self, msg, fobj=sys.stdout): + self.output.critical(msg, fobj)
+ +
[docs] def perror(self, msg, fobj=sys.stdout): + self.output.error(msg, fobj)
+ +
[docs] def pwarning(self, msg, fobj=sys.stdout): + self.output.warning(msg, fobj)
+ +
[docs] def pinfo(self, msg, fobj=sys.stdout): + self.output.info(msg, fobj)
+ +
[docs] def pdebug(self, msg, fobj=sys.stdout): + self.output.debug(msg, fobj)
+ + +
[docs]class DataHolder(dict): + + def __init__(self, **kwargs): + dict.__init__(self) + + for attr, value in kwargs.items(): + self[attr] = value + + def __getattr__(self, attr): + if attr in self: + return self[attr] + else: + raise AttributeError + + def __setattr__(self, attr, value): + self[attr] = value + +
[docs] def copy(self): + return DataHolder(**dict.copy(self))
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/buildstamp.html b/f28-branch/_modules/pylorax/buildstamp.html new file mode 100644 index 00000000..7261e50c --- /dev/null +++ b/f28-branch/_modules/pylorax/buildstamp.html @@ -0,0 +1,290 @@ + + + + + + + + + + + pylorax.buildstamp — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.buildstamp

+#
+# buildstamp.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.buildstamp")
+
+import datetime
+
+
+
[docs]class BuildStamp(object): + + def __init__(self, product, version, bugurl, isfinal, buildarch, variant=""): + self.product = product + self.version = version + self.bugurl = bugurl + self.isfinal = isfinal + self.variant = variant + + now = datetime.datetime.now() + now = now.strftime("%Y%m%d%H%M") + self.uuid = "{0}.{1}".format(now, buildarch) + +
[docs] def write(self, outfile): + # get lorax version + try: + import pylorax.version + except ImportError: + vernum = "devel" + else: + vernum = pylorax.version.num + + logger.info("writing .buildstamp file") + with open(outfile, "w") as fobj: + fobj.write("[Main]\n") + fobj.write("Product={0.product}\n".format(self)) + fobj.write("Version={0.version}\n".format(self)) + fobj.write("BugURL={0.bugurl}\n".format(self)) + fobj.write("IsFinal={0.isfinal}\n".format(self)) + fobj.write("UUID={0.uuid}\n".format(self)) + if self.variant: + fobj.write("Variant={0.variant}\n".format(self)) + fobj.write("[Compose]\n") + fobj.write("Lorax={0}\n".format(vernum))
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/cmdline.html b/f28-branch/_modules/pylorax/cmdline.html new file mode 100644 index 00000000..17ad9136 --- /dev/null +++ b/f28-branch/_modules/pylorax/cmdline.html @@ -0,0 +1,523 @@ + + + + + + + + + + + pylorax.cmdline — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.cmdline

+#
+# cmdline.py
+#
+# Copyright (C) 2016  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Brian C. Lane <bcl@redhat.com>
+
+import os
+import sys
+import argparse
+
+from pylorax import vernum
+
+version = "{0}-{1}".format(os.path.basename(sys.argv[0]), vernum)
+
+
[docs]def lorax_parser(): + """ Return the ArgumentParser for lorax""" + + parser = argparse.ArgumentParser(description="Create the Anaconda boot.iso") + + # required arguments for image creation + required = parser.add_argument_group("required arguments") + required.add_argument("-p", "--product", help="product name", required=True, metavar="PRODUCT") + required.add_argument("-v", "--version", help="version identifier", required=True, metavar="VERSION") + required.add_argument("-r", "--release", help="release information", required=True, metavar="RELEASE") + required.add_argument("-s", "--source", help="source repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + required.add_argument("--repo", help="source dnf repository file", type=os.path.abspath, + dest="repos", metavar="REPOSITORY", action="append", default=[]) + + # optional arguments + optional = parser.add_argument_group("optional arguments") + optional.add_argument("-m", "--mirrorlist", + help="mirrorlist repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + optional.add_argument("-t", "--variant", default="", + help="variant name", metavar="VARIANT") + optional.add_argument("-b", "--bugurl", + help="bug reporting URL for the product", metavar="URL", + default="your distribution provided bug reporting tool") + optional.add_argument("--isfinal", help="", + action="store_true", default=False, dest="isfinal") + optional.add_argument("-c", "--config", default="/etc/lorax/lorax.conf", + help="config file", metavar="CONFIGFILE") + optional.add_argument("--proxy", default=None, + help="repo proxy url:port", metavar="HOST") + optional.add_argument("-i", "--installpkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to install before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("-e", "--excludepkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to remove before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("--buildarch", default=None, + help="build architecture", metavar="ARCH") + optional.add_argument("--volid", default=None, + help="volume id", metavar="VOLID") + optional.add_argument("--macboot", help="", + action="store_true", default=True, dest="domacboot") + optional.add_argument("--nomacboot", help="", + action="store_false", dest="domacboot") + optional.add_argument("--noupgrade", help="", + action="store_false", default=True, dest="doupgrade") + optional.add_argument("--logfile", default="./lorax.log", type=os.path.abspath, + help="Path to logfile") + optional.add_argument("--tmp", default="/var/tmp", + help="Top level temporary directory" ) + optional.add_argument("--cachedir", default=None, type=os.path.abspath, + help="DNF cache directory. Default is a temporary dir.") + optional.add_argument("--workdir", default=None, type=os.path.abspath, + help="Work directory, overrides --tmp. Default is a temporary dir under /var/tmp") + optional.add_argument("--force", default=False, action="store_true", + help="Run even when the destination directory exists") + optional.add_argument("--add-template", dest="add_templates", + action="append", help="Additional template for runtime image", + default=[]) + optional.add_argument("--add-template-var", dest="add_template_vars", + action="append", help="Set variable for runtime image template", + default=[]) + optional.add_argument("--add-arch-template", dest="add_arch_templates", + action="append", help="Additional template for architecture-specific image", + default=[]) + optional.add_argument("--add-arch-template-var", dest="add_arch_template_vars", + action="append", help="Set variable for architecture-specific image", + default=[]) + optional.add_argument("--noverify", action="store_false", default=True, dest="verify", + help="Do not verify the install root") + optional.add_argument("--sharedir", metavar="SHAREDIR", type=os.path.abspath, + help="Directory containing all the templates. Overrides config file sharedir") + optional.add_argument("--enablerepo", action="append", default=[], dest="enablerepos", + metavar="[repo]", help="Names of repos to enable") + optional.add_argument("--disablerepo", action="append", default=[], dest="disablerepos", + metavar="[repo]", help="Names of repos to disable") + optional.add_argument("--rootfs-size", type=int, default=2, + help="Size of root filesystem in GiB. Defaults to 2.") + optional.add_argument("--noverifyssl", action="store_true", default=False, + help="Do not verify SSL certificates") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + parser.add_argument("outputdir", help="Output directory", metavar="OUTPUTDIR", type=os.path.abspath) + + return parser
+ + +
[docs]def lmc_parser(dracut_default=""): + """ Return a ArgumentParser object for live-media-creator.""" + parser = argparse.ArgumentParser(description="Create Live Install Media", + fromfile_prefix_chars="@") + + # These are mutually exclusive, one is required + action = parser.add_mutually_exclusive_group(required=True) + action.add_argument("--make-iso", action="store_true", + help="Build a live iso") + action.add_argument("--make-disk", action="store_true", + help="Build a partitioned disk image") + action.add_argument("--make-fsimage", action="store_true", + help="Build a filesystem image") + action.add_argument("--make-appliance", action="store_true", + help="Build an appliance image and XML description") + action.add_argument("--make-ami", action="store_true", + help="Build an ami image") + action.add_argument("--make-tar", action="store_true", + help="Build a tar of the root filesystem") + action.add_argument("--make-pxe-live", action="store_true", + help="Build a live pxe boot squashfs image") + action.add_argument("--make-ostree-live", action="store_true", + help="Build a live pxe boot squashfs image of Atomic Host") + action.add_argument("--make-oci", action="store_true", + help="Build an Open Container Initiative image") + action.add_argument("--make-vagrant", action="store_true", + help="Build a Vagrant Box image") + + parser.add_argument("--iso", type=os.path.abspath, + help="Anaconda installation .iso path to use for qemu") + parser.add_argument("--iso-only", action="store_true", + help="Remove all iso creation artifacts except the boot.iso, " + "combine with --iso-name to rename the boot.iso") + parser.add_argument("--iso-name", default=None, + help="Name of output iso file for --iso-only. Default is boot.iso") + parser.add_argument("--ks", action="append", type=os.path.abspath, + help="Kickstart file defining the install.") + parser.add_argument("--image-only", action="store_true", + help="Exit after creating fs/disk image.") + + parser.add_argument("--no-virt", action="store_true", + help="Run anaconda directly on host instead of using qemu") + parser.add_argument("--proxy", + help="proxy URL to use for the install") + parser.add_argument("--anaconda-arg", action="append", dest="anaconda_args", + help="Additional argument to pass to anaconda (no-virt " + "mode). Pass once for each argument") + parser.add_argument("--armplatform", + help="the platform to use when creating images for ARM, " + "i.e., highbank, mvebu, omap, tegra, etc.") + parser.add_argument("--location", default=None, type=os.path.abspath, + help="location of iso directory tree with initrd.img " + "and vmlinuz. Used to run qemu with a newer initrd " + "than the iso.") + + parser.add_argument("--logfile", default="./livemedia.log", + type=os.path.abspath, + help="Name and path for primary logfile, other logs will " + "be created in the same directory.") + parser.add_argument("--lorax-templates", default=None, + type=os.path.abspath, + help="Path to mako templates for lorax") + parser.add_argument("--tmp", default="/var/tmp", type=os.path.abspath, + help="Top level temporary directory") + parser.add_argument("--resultdir", default=None, dest="result_dir", + type=os.path.abspath, + help="Directory to copy the resulting images and iso into. " + "Defaults to the temporary working directory") + + parser.add_argument("--macboot", action="store_true", default=True, + dest="domacboot") + parser.add_argument("--nomacboot", action="store_false", + dest="domacboot") + + image_group = parser.add_argument_group("disk/fs image arguments") + image_group.add_argument("--disk-image", type=os.path.abspath, + help="Path to existing disk image to use for creating final image.") + image_group.add_argument("--keep-image", action="store_true", + help="Keep raw disk image after .iso creation") + image_group.add_argument("--fs-image", type=os.path.abspath, + help="Path to existing filesystem image to use for creating final image.") + image_group.add_argument("--image-name", default=None, + help="Name of output file to create. Used for tar, fs and disk image. Default is a random name.") + image_group.add_argument("--fs-label", default="Anaconda", + help="Label to set on fsimage, default is 'Anaconda'") + image_group.add_argument("--image-type", default=None, + help="Create an image with qemu-img. See qemu-img --help for supported formats.") + image_group.add_argument("--qemu-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--qcow2", action="store_true", + help="Create qcow2 image instead of raw sparse image when making disk images.") + image_group.add_argument("--qcow2-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--compression", default="xz", + help="Compression binary for make-tar. xz, lzma, gzip, and bzip2 are supported. xz is the default.") + image_group.add_argument("--compress-arg", action="append", dest="compress_args", default=[], + help="Arguments to pass to compression. Pass once for each argument") + # Group of arguments for appliance creation + app_group = parser.add_argument_group("appliance arguments") + app_group.add_argument("--app-name", default=None, + help="Name of appliance to pass to template") + app_group.add_argument("--app-template", default=None, + help="Path to template to use for appliance data.") + app_group.add_argument("--app-file", default="appliance.xml", + help="Appliance template results file.") + + # Group of arguments to pass to qemu + virt_group = parser.add_argument_group("qemu arguments") + virt_group.add_argument("--ram", metavar="MEMORY", type=int, default=1024, + help="Memory to allocate for installer in megabytes.") + virt_group.add_argument("--vcpus", type=int, default=None, + help="Passed to qemu -smp command") + virt_group.add_argument("--vnc", + help="Passed to qemu -display command. eg. vnc=127.0.0.1:5, default is to " + "choose the first unused vnc port.") + virt_group.add_argument("--arch", default=None, + help="System arch to build for. Used to select qemu-system-* command. " + "Defaults to qemu-system-<arch>") + virt_group.add_argument("--kernel-args", + help="Additional argument to pass to the installation kernel") + virt_group.add_argument("--ovmf-path", default="/usr/share/edk2/ovmf/", + help="Path to OVMF firmware") + virt_group.add_argument("--virt-uefi", action="store_true", default=False, + help="Use OVMF firmware to boot the VM in UEFI mode") + virt_group.add_argument("--no-kvm", action="store_true", default=False, + help="Skip using kvm with qemu even if it is available.") + virt_group.add_argument("--with-rng", default="/dev/random", + help="RNG device for QEMU (none for no RNG)") + + # dracut arguments + dracut_group = parser.add_argument_group("dracut arguments") + dracut_group.add_argument("--dracut-arg", action="append", dest="dracut_args", + help="Argument to pass to dracut when " + "rebuilding the initramfs. Pass this " + "once for each argument. NOTE: this " + "overrides the default. (default: %s)" % dracut_default) + + # pxe to live arguments + pxelive_group = parser.add_argument_group("pxe to live arguments") + pxelive_group.add_argument("--live-rootfs-size", type=int, default=0, + help="Size of root filesystem of live image in GiB") + pxelive_group.add_argument("--live-rootfs-keep-size", action="store_true", + help="Keep the original size of root filesystem in live image") + + # OCI specific commands + oci_group = parser.add_argument_group("OCI arguments") + oci_group.add_argument("--oci-config", + help="config.json OCI configuration file") + oci_group.add_argument("--oci-runtime", + help="runtime.json OCI configuration file") + + # Vagrant specific commands + vagrant_group = parser.add_argument_group("Vagrant arguments") + vagrant_group.add_argument("--vagrant-metadata", + help="optional metadata.json file") + vagrant_group.add_argument("--vagrantfile", + help="optional vagrantfile") + + parser.add_argument("--title", default="Linux Live Media", + help="Substituted for @TITLE@ in bootloader config files") + parser.add_argument("--project", default="Linux", + help="substituted for @PROJECT@ in bootloader config files") + parser.add_argument("--releasever", default="28", + help="substituted for @VERSION@ in bootloader config files") + parser.add_argument("--volid", default=None, help="volume id") + parser.add_argument("--squashfs_args", + help="additional squashfs args") + parser.add_argument("--timeout", default=None, type=int, + help="Cancel installer after X minutes") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + return parser
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/decorators.html b/f28-branch/_modules/pylorax/decorators.html new file mode 100644 index 00000000..bf4ff0eb --- /dev/null +++ b/f28-branch/_modules/pylorax/decorators.html @@ -0,0 +1,259 @@ + + + + + + + + + + + pylorax.decorators — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.decorators

+#
+# decorators.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+
[docs]def singleton(cls): + instances = {} + + def get_instance(): + if cls not in instances: + instances[cls] = cls() + return instances[cls] + + return get_instance
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/discinfo.html b/f28-branch/_modules/pylorax/discinfo.html new file mode 100644 index 00000000..782b29d7 --- /dev/null +++ b/f28-branch/_modules/pylorax/discinfo.html @@ -0,0 +1,268 @@ + + + + + + + + + + + pylorax.discinfo — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.discinfo

+#
+# discinfo.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.discinfo")
+
+import time
+
+
+
[docs]class DiscInfo(object): + + def __init__(self, release, basearch): + self.release = release + self.basearch = basearch + +
[docs] def write(self, outfile): + logger.info("writing .discinfo file") + with open(outfile, "w") as fobj: + fobj.write("{0:f}\n".format(time.time())) + fobj.write("{0.release}\n".format(self)) + fobj.write("{0.basearch}\n".format(self))
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/dnfhelper.html b/f28-branch/_modules/pylorax/dnfhelper.html new file mode 100644 index 00000000..c007c143 --- /dev/null +++ b/f28-branch/_modules/pylorax/dnfhelper.html @@ -0,0 +1,338 @@ + + + + + + + + + + + pylorax.dnfhelper — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.dnfhelper

+#
+# dnfhelper.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Brian C. Lane <bcl@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.dnfhelper")
+import dnf
+import collections
+import time
+import pylorax.output as output
+
+__all__ = ['LoraxDownloadCallback', 'LoraxRpmCallback']
+
+def _paced(fn):
+    """Execute `fn` no more often then every 2 seconds."""
+    def paced_fn(self, *args):
+        now = time.time()
+        if now - self.last_time < 2:
+            return
+        self.last_time = now
+        return fn(self, *args)
+    return paced_fn
+
+
+
[docs]class LoraxDownloadCallback(dnf.callback.DownloadProgress): + def __init__(self): + self.downloads = collections.defaultdict(int) + self.last_time = time.time() + self.total_files = 0 + self.total_size = 0 + + self.pkgno = 0 + self.total = 0 + + self.output = output.LoraxOutput() + + @_paced + def _update(self): + msg = "Downloading %(pkgno)s / %(total_files)s RPMs, " \ + "%(downloaded)s / %(total_size)s (%(percent)d%%) done.\n" + downloaded = sum(self.downloads.values()) + vals = { + 'downloaded' : downloaded, + 'percent' : int(100 * downloaded/self.total_size), + 'pkgno' : self.pkgno, + 'total_files' : self.total_files, + 'total_size' : self.total_size + } + self.output.write(msg % vals) + +
[docs] def end(self, payload, status, msg): + nevra = str(payload) + if status is dnf.callback.STATUS_OK: + self.downloads[nevra] = payload.download_size + self.pkgno += 1 + self._update() + return + logger.critical("Failed to download '%s': %d - %s", nevra, status, msg)
+ +
[docs] def progress(self, payload, done): + nevra = str(payload) + self.downloads[nevra] = done + self._update()
+ + # dnf 2.5.0 adds a new argument, accept it if it is passed + # pylint: disable=arguments-differ +
[docs] def start(self, total_files, total_size, total_drpms=0): + self.total_files = total_files + self.total_size = total_size
+ + +
[docs]class LoraxRpmCallback(dnf.callback.TransactionProgress): + def __init__(self): + super(LoraxRpmCallback, self).__init__() + self._last_ts = None + +
[docs] def progress(self, package, action, ti_done, ti_total, ts_done, ts_total): + if action == self.PKG_INSTALL: + # do not report same package twice + if self._last_ts == ts_done: + return + self._last_ts = ts_done + + msg = '(%d/%d) %s' % (ts_done, ts_total, package) + logger.info(msg) + elif action == self.TRANS_POST: + msg = "Performing post-installation setup tasks" + logger.info(msg)
+ +
[docs] def error(self, message): + logger.warning(message)
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/executils.html b/f28-branch/_modules/pylorax/executils.html new file mode 100644 index 00000000..aff01332 --- /dev/null +++ b/f28-branch/_modules/pylorax/executils.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pylorax.executils — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.executils

+#
+# executil.py - subprocess execution utility functions
+#
+# Copyright (C) 1999-2015
+# Red Hat, Inc.  All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import os
+import subprocess
+from subprocess import TimeoutExpired
+import signal
+
+import logging
+log = logging.getLogger("pylorax")
+program_log = logging.getLogger("program")
+
+from threading import Lock
+program_log_lock = Lock()
+
+_child_env = {}
+
+
[docs]def setenv(name, value): + """ Set an environment variable to be used by child processes. + + This method does not modify os.environ for the running process, which + is not thread-safe. If setenv has already been called for a particular + variable name, the old value is overwritten. + + :param str name: The name of the environment variable + :param str value: The value of the environment variable + """ + + _child_env[name] = value
+ +
[docs]def augmentEnv(): + env = os.environ.copy() + env.update(_child_env) + return env
+ +
[docs]class ExecProduct(object): + def __init__(self, rc, stdout, stderr): + self.rc = rc + self.stdout = stdout + self.stderr = stderr
+ +
[docs]def startProgram(argv, root='/', stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + env_prune=None, env_add=None, reset_handlers=True, reset_lang=True, **kwargs): + """ Start an external program and return the Popen object. + + The root and reset_handlers arguments are handled by passing a + preexec_fn argument to subprocess.Popen, but an additional preexec_fn + can still be specified and will be run. The user preexec_fn will be run + last. + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: The file object to write stdout to. + :param stderr: The file object to write stderr to. + :param env_prune: environment variables to remove before execution + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :param kwargs: Additional parameters to pass to subprocess.Popen + :return: A Popen object for the running command. + :keyword preexec_fn: A function to run before execution starts. + """ + if env_prune is None: + env_prune = [] + + # Check for and save a preexec_fn argument + preexec_fn = kwargs.pop("preexec_fn", None) + + def preexec(): + # If a target root was specificed, chroot into it + if root and root != '/': + os.chroot(root) + os.chdir("/") + + # Signal handlers set to SIG_IGN persist across exec. Reset + # these to SIG_DFL if requested. In particular this will include the + # SIGPIPE handler set by python. + if reset_handlers: + for signum in range(1, signal.NSIG): + if signal.getsignal(signum) == signal.SIG_IGN: + signal.signal(signum, signal.SIG_DFL) + + # If the user specified an additional preexec_fn argument, run it + if preexec_fn is not None: + preexec_fn() + + with program_log_lock: + program_log.info("Running... %s", " ".join(argv)) + + env = augmentEnv() + for var in env_prune: + env.pop(var, None) + + if reset_lang: + env.update({"LC_ALL": "C"}) + + if env_add: + env.update(env_add) + + return subprocess.Popen(argv, + stdin=stdin, + stdout=stdout, + stderr=stderr, + close_fds=True, + preexec_fn=preexec, cwd=root, env=env, **kwargs)
+ +def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_output=True, + binary_output=False, filter_stderr=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program, log the output and return it to the caller + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to write the output to. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param filter_stderr: whether to exclude the contents of stderr from the returned output + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command and the output + :raises: OSError or CalledProcessError + """ + try: + if filter_stderr: + stderr = subprocess.PIPE + else: + stderr = subprocess.STDOUT + + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, + env_prune=env_prune, universal_newlines=not binary_output, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + + output_string = None + err_string = None + if callback: + while callback(proc) and proc.poll() is None: + try: + (output_string, err_string) = proc.communicate(timeout=1) + break + except TimeoutExpired: + pass + else: + (output_string, err_string) = proc.communicate() + if output_string: + if binary_output: + output_lines = [output_string] + else: + if output_string[-1] != "\n": + output_string = output_string + "\n" + output_lines = output_string.splitlines(True) + + if log_output: + with program_log_lock: + for line in output_lines: + program_log.info(line.strip()) + + if stdout: + stdout.write(output_string) + + # If stderr was filtered, log it separately + if filter_stderr and err_string and log_output: + err_lines = err_string.splitlines(True) + + with program_log_lock: + for line in err_lines: + program_log.info(line.strip()) + + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + with program_log_lock: + program_log.debug("Return code: %s", proc.returncode) + + if proc.returncode and raise_err: + output = (output_string or "") + (err_string or "") + raise subprocess.CalledProcessError(proc.returncode, argv, output) + + return (proc.returncode, output_string) + +
[docs]def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None, + log_output=True, binary_output=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and redirect the output to a file. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, stdout=stdout, root=root, env_prune=env_prune, + log_output=log_output, binary_output=binary_output, raise_err=raise_err, callback=callback, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang)[0]
+ +
[docs]def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False, + raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and capture standard out and err. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param root: The directory to chroot to before running command. + :param log_output: Whether to log the output of command + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The output of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, root=root, log_output=log_output, filter_stderr=filter_stderr, + raise_err=raise_err, callback=callback, env_add=env_add, + reset_handlers=reset_handlers, reset_lang=reset_lang)[1]
+ +
[docs]def execReadlines(command, argv, stdin=None, root='/', env_prune=None, filter_stderr=False, + callback=lambda x: True, env_add=None, reset_handlers=True, reset_lang=True): + """ Execute an external command and return the line output of the command + in real-time. + + This method assumes that there is a reasonably low delay between the + end of output and the process exiting. If the child process closes + stdout and then keeps on truckin' there will be problems. + + NOTE/WARNING: UnicodeDecodeError will be raised if the output of the + external command can't be decoded as UTF-8. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: Iterator of the lines from the command + + Output from the file is not logged to program.log + This returns an iterator with the lines from the command until it has finished + """ + + class ExecLineReader(object): + """Iterator class for returning lines from a process and cleaning + up the process when the output is no longer needed. + """ + + def __init__(self, proc, argv, callback): + self._proc = proc + self._argv = argv + self._callback = callback + + def __iter__(self): + return self + + def __del__(self): + # See if the process is still running + if self._proc.poll() is None: + # Stop the process and ignore any problems that might arise + try: + self._proc.terminate() + except OSError: + pass + + def __next__(self): + # Read the next line, blocking if a line is not yet available + line = self._proc.stdout.readline().decode("utf-8") + if line == '' or not self._callback(self._proc): + # Output finished, wait for the process to end + self._proc.communicate() + + # Check for successful exit + if self._proc.returncode < 0: + raise OSError("process '%s' was killed by signal %s" % + (self._argv, -self._proc.returncode)) + elif self._proc.returncode > 0: + raise OSError("process '%s' exited with status %s" % + (self._argv, self._proc.returncode)) + raise StopIteration + + return line.strip() + + argv = [command] + argv + + if filter_stderr: + stderr = subprocess.DEVNULL + else: + stderr = subprocess.STDOUT + + try: + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, bufsize=1, + env_prune=env_prune, env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + return ExecLineReader(proc, argv, callback)
+ +
[docs]def runcmd(cmd, **kwargs): + """ run execWithRedirect with raise_err=True + """ + kwargs["raise_err"] = True + return execWithRedirect(cmd[0], cmd[1:], **kwargs)
+ +
[docs]def runcmd_output(cmd, **kwargs): + """ run execWithCapture with raise_err=True + """ + kwargs["raise_err"] = True + return execWithCapture(cmd[0], cmd[1:], **kwargs)
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/imgutils.html b/f28-branch/_modules/pylorax/imgutils.html new file mode 100644 index 00000000..ca0523fb --- /dev/null +++ b/f28-branch/_modules/pylorax/imgutils.html @@ -0,0 +1,714 @@ + + + + + + + + + + + pylorax.imgutils — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.imgutils

+# imgutils.py - utility functions/classes for building disk images
+#
+# Copyright (C) 2011-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.imgutils")
+
+import os, tempfile
+from os.path import join, dirname
+from subprocess import Popen, PIPE, CalledProcessError
+import sys
+import time
+import traceback
+import multiprocessing
+from time import sleep
+import shutil
+
+from pylorax.sysutils import cpfile
+from pylorax.executils import execWithRedirect, execWithCapture
+from pylorax.executils import runcmd, runcmd_output
+
+######## Functions for making container images (cpio, tar, squashfs) ##########
+
+
[docs]def compress(command, rootdir, outfile, compression="xz", compressargs=None): + '''Make a compressed archive of the given rootdir. + command is a list of the archiver commands to run + compression should be "xz", "gzip", "lzma", "bzip2", or None. + compressargs will be used on the compression commandline.''' + if compression not in (None, "xz", "gzip", "lzma", "bzip2"): + raise ValueError("Unknown compression type %s" % compression) + compressargs = compressargs or ["-9"] + if compression == "xz": + compressargs.insert(0, "--check=crc32") + if compression is None: + compression = "cat" # this is a little silly + compressargs = [] + + # make compression run with multiple threads if possible + if compression in ("xz", "lzma"): + compressargs.insert(0, "-T%d" % multiprocessing.cpu_count()) + elif compression == "gzip": + compression = "pigz" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + elif compression == "bzip2": + compression = "pbzip2" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + + logger.debug("find %s -print0 |%s | %s %s > %s", rootdir, " ".join(command), + compression, " ".join(compressargs), outfile) + find, archive, comp = None, None, None + try: + find = Popen(["find", ".", "-print0"], stdout=PIPE, cwd=rootdir) + archive = Popen(command, stdin=find.stdout, stdout=PIPE, cwd=rootdir) + comp = Popen([compression] + compressargs, + stdin=archive.stdout, stdout=open(outfile, "wb")) + comp.wait() + return comp.returncode + except OSError as e: + logger.error(e) + # Kill off any hanging processes + list(p.kill() for p in (find, archive, comp) if p) + return 1
+ +
[docs]def mkcpio(rootdir, outfile, compression="xz", compressargs=None): + compressargs = compressargs or ["-9"] + return compress(["cpio", "--null", "--quiet", "-H", "newc", "-o"], + rootdir, outfile, compression, compressargs)
+ +
[docs]def mktar(rootdir, outfile, compression="xz", compressargs=None, selinux=True): + compressargs = compressargs or ["-9"] + tar_cmd = ["tar", "--no-recursion"] + if selinux: + tar_cmd += ["--selinux", "--acls", "--xattrs"] + tar_cmd += ["-cf-", "--null", "-T-"] + return compress(tar_cmd, rootdir, outfile, compression, compressargs)
+ +
[docs]def mksquashfs(rootdir, outfile, compression="default", compressargs=None): + '''Make a squashfs image containing the given rootdir.''' + compressargs = compressargs or [] + if compression != "default": + compressargs = ["-comp", compression] + compressargs + return execWithRedirect("mksquashfs", [rootdir, outfile] + compressargs)
+ +
[docs]def mkrootfsimg(rootdir, outfile, label, size=2, sysroot=""): + """ + Make rootfs image from a directory + + :param str rootdir: Root directory + :param str outfile: Path of output image file + :param str label: Filesystem label + :param int size: Size of the image in GiB, if None computed automatically + :param str sysroot: path to system (deployment) root relative to physical root + """ + if size: + fssize = size * (1024*1024*1024) # 2GB sparse file compresses down to nothin' + else: + fssize = None # Let mkext4img figure out the needed size + + mkext4img(rootdir, outfile, label=label, size=fssize) + # Reset selinux context on new rootfs + with LoopDev(outfile) as loopdev: + with Mount(loopdev) as mnt: + cmd = [ "setfiles", "-e", "/proc", "-e", "/sys", "-e", "/dev", + "-e", "/install", "-e", "/ostree", + "/etc/selinux/targeted/contexts/files/file_contexts", "/"] + root = join(mnt, sysroot.lstrip("/")) + try: + runcmd(cmd, root=root) + except CalledProcessError as e: + logger.error("setfiles exited with a non-zero return code (%d) which may " + "be caused by running without SELinux in Permissive mode.", e.returncode) + raise
+ + +######## Utility functions ############################################### + +
[docs]def mksparse(outfile, size): + '''use os.ftruncate to create a sparse file of the given size.''' + fobj = open(outfile, "w") + os.ftruncate(fobj.fileno(), size)
+ +
[docs]def mkqcow2(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + mkqemu_img(outfile, size, options)
+ +
[docs]def mkqemu_img(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + options = options or [] + if "-f" not in options: + options.extend(["-f", "qcow2"]) + runcmd(["qemu-img", "create"] + options + [outfile, str(size)])
+ +
[docs]def loop_waitfor(loop_dev, outfile): + """Make sure the loop device is attached to the outfile. + + It seems that on rare occasions losetup can return before the /dev/loopX is + ready for use, causing problems with mkfs. This tries to make sure that the + loop device really is associated with the backing file before continuing. + + Raise RuntimeError if it isn't setup after 5 tries. + """ + for _x in range(0,5): + runcmd(["udevadm", "settle", "--timeout", "300"]) + ## XXX Note that losetup --list output can be truncated to 64 bytes in some + ## situations. Don't use it to lookup backing file, go the other way + ## and lookup the loop for the backing file. See util-linux lib/loopdev.c + ## loopcxt_get_backing_file() + if get_loop_name(outfile) == os.path.basename(loop_dev): + return + + # If this really is a race, give it some time to settle down + time.sleep(1) + + raise RuntimeError("Unable to setup %s on %s" % (loop_dev, outfile))
+ +
[docs]def loop_attach(outfile): + '''Attach a loop device to the given file. Return the loop device name. + Raises CalledProcessError if losetup fails.''' + dev = runcmd_output(["losetup", "--find", "--show", outfile]) + + # Sometimes the loop device isn't ready yet, make extra sure before returning + loop_waitfor(dev.strip(), outfile) + return dev.strip()
+ +
[docs]def loop_detach(loopdev): + '''Detach the given loop device. Return False on failure.''' + return (execWithRedirect("losetup", ["--detach", loopdev]) == 0)
+ +
[docs]def get_loop_name(path): + '''Return the loop device associated with the path. + Raises RuntimeError if more than one loop is associated''' + buf = runcmd_output(["losetup", "-j", path]) + if len(buf.splitlines()) > 1: + # there should never be more than one loop device listed + raise RuntimeError("multiple loops associated with %s" % path) + name = os.path.basename(buf.split(":")[0]) + return name
+ +
[docs]def dm_attach(dev, size, name=None): + '''Attach a devicemapper device to the given device, with the given size. + If name is None, a random name will be chosen. Returns the device name. + raises CalledProcessError if dmsetup fails.''' + if name is None: + name = tempfile.mktemp(prefix="lorax.imgutils.", dir="") + runcmd(["dmsetup", "create", name, "--table", + "0 %i linear %s 0" % (size/512, dev)]) + return name
+ +
[docs]def dm_detach(dev): + '''Detach the named devicemapper device. Returns False if dmsetup fails.''' + dev = dev.replace("/dev/mapper/", "") # strip prefix, if it's there + return execWithRedirect("dmsetup", ["remove", dev])
+ +
[docs]def mount(dev, opts="", mnt=None): + '''Mount the given device at the given mountpoint, using the given opts. + opts should be a comma-separated string of mount options. + if mnt is none, a temporary directory will be created and its path will be + returned. + raises CalledProcessError if mount fails.''' + if mnt is None: + mnt = tempfile.mkdtemp(prefix="lorax.imgutils.") + logger.debug("make tmp mountdir %s", mnt) + cmd = ["mount"] + if opts: + cmd += ["-o", opts] + cmd += [dev, mnt] + runcmd(cmd) + return mnt
+ +
[docs]def umount(mnt, lazy=False, maxretry=3, retrysleep=1.0, delete=True): + '''Unmount the given mountpoint. If lazy is True, do a lazy umount (-l). + If the mount was a temporary dir created by mount, it will be deleted. + raises CalledProcessError if umount fails.''' + cmd = ["umount"] + if lazy: cmd += ["-l"] + cmd += [mnt] + count = 0 + while maxretry > 0: + try: + rv = runcmd(cmd) + except CalledProcessError: + count += 1 + if count == maxretry: + raise + logger.warning("failed to unmount %s. retrying (%d/%d)...", + mnt, count, maxretry) + if logger.getEffectiveLevel() <= logging.DEBUG: + fuser = execWithCapture("fuser", ["-vm", mnt]) + logger.debug("fuser -vm:\n%s\n", fuser) + sleep(retrysleep) + else: + break + if delete and 'lorax.imgutils' in mnt: + os.rmdir(mnt) + logger.debug("remove tmp mountdir %s", mnt) + return (rv == 0)
+ +
[docs]def copytree(src, dest, preserve=True): + '''Copy a tree of files using cp -a, thus preserving modes, timestamps, + links, acls, sparse files, xattrs, selinux contexts, etc. + If preserve is False, uses cp -R (useful for modeless filesystems) + raises CalledProcessError if copy fails.''' + logger.debug("copytree %s %s", src, dest) + cp = ["cp", "-a"] if preserve else ["cp", "-R", "-L"] + cp += [join(src, "."), os.path.abspath(dest)] + runcmd(cp)
+ +
[docs]def do_grafts(grafts, dest, preserve=True): + '''Copy each of the items listed in grafts into dest. + If the key ends with '/' it's assumed to be a directory which should be + created, otherwise just the leading directories will be created.''' + for imgpath, filename in grafts.items(): + if imgpath[-1] == '/': + targetdir = join(dest, imgpath) + imgpath = imgpath[:-1] + else: + targetdir = join(dest, dirname(imgpath)) + if not os.path.isdir(targetdir): + os.makedirs(targetdir) + if os.path.isdir(filename): + copytree(filename, join(dest, imgpath), preserve) + else: + cpfile(filename, join(dest, imgpath))
+ +
[docs]def round_to_blocks(size, blocksize): + '''If size isn't a multiple of blocksize, round up to the next multiple''' + diff = size % blocksize + if diff or not size: + size += blocksize - diff + return size
+ +# TODO: move filesystem data outside this function +
[docs]def estimate_size(rootdir, graft=None, fstype=None, blocksize=4096, overhead=256): + graft = graft or {} + getsize = lambda f: os.lstat(f).st_size + if fstype == "btrfs": + overhead = 64*1024 # don't worry, it's all sparse + if fstype == "hfsplus": + overhead = 200 # hack to deal with two bootloader copies + if fstype in ("vfat", "msdos"): + blocksize = 2048 + getsize = lambda f: os.stat(f).st_size # no symlinks, count as copies + total = overhead*blocksize + dirlist = list(graft.values()) + if rootdir: + dirlist.append(rootdir) + for root in dirlist: + for top, dirs, files in os.walk(root): + for f in files + dirs: + total += round_to_blocks(getsize(join(top,f)), blocksize) + if fstype == "btrfs": + total = max(256*1024*1024, total) # btrfs minimum size: 256MB + logger.info("Size of %s block %s fs at %s estimated to be %s", blocksize, fstype, rootdir, total) + return total
+ +######## Execution contexts - use with the 'with' statement ############## + +
[docs]class LoopDev(object): + def __init__(self, filename, size=None): + self.loopdev = None + self.filename = filename + if size: + mksparse(self.filename, size) + def __enter__(self): + self.loopdev = loop_attach(self.filename) + return self.loopdev + def __exit__(self, exc_type, exc_value, tracebk): + loop_detach(self.loopdev)
+ +
[docs]class DMDev(object): + def __init__(self, dev, size, name=None): + self.mapperdev = None + (self.dev, self.size, self.name) = (dev, size, name) + def __enter__(self): + self.mapperdev = dm_attach(self.dev, self.size, self.name) + return self.mapperdev + def __exit__(self, exc_type, exc_value, tracebk): + dm_detach(self.mapperdev)
+ +
[docs]class Mount(object): + def __init__(self, dev, opts="", mnt=None): + (self.dev, self.opts, self.mnt) = (dev, opts, mnt) + def __enter__(self): + self.mnt = mount(self.dev, self.opts, self.mnt) + return self.mnt + def __exit__(self, exc_type, exc_value, tracebk): + umount(self.mnt)
+ +
[docs]class PartitionMount(object): + """ Mount a partitioned image file using kpartx """ + def __init__(self, disk_img, mount_ok=None, submount=None): + """ + :param str disk_img: The full path to a partitioned disk image + :param mount_ok: A function that is passed the mount point and + returns True if it should be mounted. + :param str submount: Directory inside mount_dir to mount at + + If mount_ok is not set it will look for /etc/passwd + + If the partition is found it will be mounted under a temporary + directory and self.temp_dir set to it. If submount is passed it will be + created and mounted there instead, with self.mount_dir set to point to + it. self.mount_dev is set to the loop device, and self.mount_size is + set to the size of the partition. + + When no subdir is passed self.temp_dir and self.mount_dir will be the same. + """ + self.mount_dev = None + self.mount_size = None + self.mount_dir = None + self.disk_img = disk_img + self.mount_ok = mount_ok + self.submount = submount + self.temp_dir = None + + # Default is to mount partition with /etc/passwd + if not self.mount_ok: + self.mount_ok = lambda mount_dir: os.path.isfile(mount_dir+"/etc/passwd") + + # Example kpartx output + # kpartx -p p -v -a /tmp/diskV2DiCW.im + # add map loop2p1 (253:2): 0 3481600 linear /dev/loop2 2048 + # add map loop2p2 (253:3): 0 614400 linear /dev/loop2 3483648 + kpartx_output = runcmd_output(["kpartx", "-v", "-a", "-s", self.disk_img]) + logger.debug(kpartx_output) + + # list of (deviceName, sizeInBytes) + self.loop_devices = [] + for line in kpartx_output.splitlines(): + # add map loop2p3 (253:4): 0 7139328 linear /dev/loop2 528384 + # 3rd element is size in 512 byte blocks + if line.startswith("add map "): + fields = line[8:].split() + self.loop_devices.append( (fields[0], int(fields[3])*512) ) + + def __enter__(self): + # Mount the device selected by mount_ok, if possible + self.temp_dir = tempfile.mkdtemp() + if self.submount: + mount_dir = os.path.normpath(os.path.sep.join([self.temp_dir, self.submount])) + os.makedirs(mount_dir, mode=0o755, exist_ok=True) + else: + mount_dir = self.temp_dir + for dev, size in self.loop_devices: + try: + mount( "/dev/mapper/"+dev, mnt=mount_dir ) + if self.mount_ok(mount_dir): + self.mount_dir = mount_dir + self.mount_dev = dev + self.mount_size = size + break + umount( mount_dir ) + except CalledProcessError: + logger.debug(traceback.format_exc()) + if self.mount_dir: + logger.info("Partition mounted on %s size=%s", self.mount_dir, self.mount_size) + else: + logger.debug("Unable to mount anything from %s", self.disk_img) + os.rmdir(self.temp_dir) + self.temp_dir = None + return self + + def __exit__(self, exc_type, exc_value, tracebk): + if self.temp_dir: + umount(self.mount_dir) + shutil.rmtree(self.temp_dir) + self.mount_dir = None + self.temp_dir = None + execWithRedirect("kpartx", ["-d", "-s", self.disk_img])
+ + +######## Functions for making filesystem images ########################## + +
[docs]def mkfsimage(fstype, rootdir, outfile, size=None, mkfsargs=None, mountargs="", graft=None): + '''Generic filesystem image creation function. + fstype should be a filesystem type - "mkfs.${fstype}" must exist. + graft should be a dict: {"some/path/in/image": "local/file/or/dir"}; + if the path ends with a '/' it's assumed to be a directory. + Will raise CalledProcessError if something goes wrong.''' + mkfsargs = mkfsargs or [] + graft = graft or {} + preserve = (fstype not in ("msdos", "vfat")) + if not size: + size = estimate_size(rootdir, graft, fstype) + with LoopDev(outfile, size) as loopdev: + try: + runcmd(["mkfs.%s" % fstype] + mkfsargs + [loopdev]) + except CalledProcessError as e: + logger.error("mkfs exited with a non-zero return code: %d", e.returncode) + logger.error(e.output) + sys.exit(e.returncode) + + with Mount(loopdev, mountargs) as mnt: + if rootdir: + copytree(rootdir, mnt, preserve) + do_grafts(graft, mnt, preserve) + + # Make absolutely sure that the data has been written + runcmd(["sync"])
+ +# convenience functions with useful defaults +
[docs]def mkdosimg(rootdir, outfile, size=None, label="", mountargs="shortname=winnt,umask=0077", graft=None): + graft = graft or {} + mkfsimage("msdos", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-n", label], graft=graft)
+ +
[docs]def mkext4img(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("ext4", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label, "-b", "4096", "-m", "0"], graft=graft)
+ +
[docs]def mkbtrfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("btrfs", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label], graft=graft)
+ +
[docs]def mkhfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("hfsplus", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-v", label], graft=graft)
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/ltmpl.html b/f28-branch/_modules/pylorax/ltmpl.html new file mode 100644 index 00000000..5595c5d3 --- /dev/null +++ b/f28-branch/_modules/pylorax/ltmpl.html @@ -0,0 +1,1016 @@ + + + + + + + + + + + pylorax.ltmpl — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.ltmpl

+#
+# ltmpl.py
+#
+# Copyright (C) 2009-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.ltmpl")
+
+import os, re, glob, shlex, fnmatch
+from os.path import basename, isdir
+from subprocess import CalledProcessError
+import shutil
+
+from pylorax.sysutils import joinpaths, cpfile, mvfile, replace, remove
+from pylorax.dnfhelper import LoraxDownloadCallback, LoraxRpmCallback
+from pylorax.base import DataHolder
+from pylorax.executils import runcmd, runcmd_output
+from pylorax.imgutils import mkcpio
+
+from mako.lookup import TemplateLookup
+from mako.exceptions import text_error_template
+import sys, traceback
+import struct
+import dnf
+import collections
+
+
[docs]class LoraxTemplate(object): + def __init__(self, directories=None): + directories = directories or ["/usr/share/lorax"] + # we have to add ["/"] to the template lookup directories or the + # file includes won't work properly for absolute paths + self.directories = ["/"] + directories + +
[docs] def parse(self, template_file, variables): + lookup = TemplateLookup(directories=self.directories) + template = lookup.get_template(template_file) + + try: + textbuf = template.render(**variables) + except: + logger.error("Problem rendering %s (%s):", template_file, variables) + logger.error(text_error_template().render()) + raise + + # split, strip and remove empty lines + lines = textbuf.splitlines() + lines = [line.strip() for line in lines] + lines = [line for line in lines if line] + + # remove comments + lines = [line for line in lines if not line.startswith("#")] + + # split with shlex and perform brace expansion + lines = [split_and_expand(line) for line in lines] + + return lines
+ +
[docs]def split_and_expand(line): + return [exp for word in shlex.split(line) for exp in brace_expand(word)]
+ +
[docs]def brace_expand(s): + if not ('{' in s and ',' in s and '}' in s): + yield s + else: + right = s.find('}') + left = s[:right].rfind('{') + (prefix, choices, suffix) = (s[:left], s[left+1:right], s[right+1:]) + for choice in choices.split(','): + for alt in brace_expand(prefix+choice+suffix): + yield alt
+ +
[docs]def rglob(pathname, root="/", fatal=False): + seen = set() + rootlen = len(root)+1 + for f in glob.iglob(joinpaths(root, pathname)): + if f not in seen: + seen.add(f) + yield f[rootlen:] # remove the root to produce relative path + if fatal and not seen: + raise IOError("nothing matching %s in %s" % (pathname, root))
+ +
[docs]def rexists(pathname, root=""): + # Generator is always True, even with no values; + # bool(rglob(...)) won't work here. + for _path in rglob(pathname, root): + return True + return False
+ +# TODO: operate inside an actual chroot for safety? Not that RPM bothers.. +
[docs]class LoraxTemplateRunner(object): + ''' + This class parses and executes Lorax templates. Sample usage: + + # install a bunch of packages + runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj) + runner.run("install-packages.ltmpl") + + # modify a runtime dir + runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun) + runner.run("runtime-transmogrify.ltmpl") + + NOTES: + + * Parsing procedure is roughly: + 1. Mako template expansion (on the whole file) + 2. For each line of the result, + a. Whitespace splitting (using shlex.split()) + b. Brace expansion (using brace_expand()) + c. If the first token is the name of a function, call that function + with the rest of the line as arguments + + * Parsing and execution are *separate* passes - so you can't use the result + of a command in an %if statement (or any other control statements)! + + * Commands that run external programs (systemctl, gconfset) currently use + the *host*'s copy of that program, which may cause problems if there's a + big enough difference between the host and the image you're modifying. + + * The commands are not executed under a real chroot, so absolute symlinks + will point *outside* the inroot/outroot. Be careful with symlinks! + + ADDING NEW COMMANDS: + + * Each template command is just a method of the LoraxTemplateRunner + object - so adding a new command is as easy as adding a new function. + + * Each function gets arguments that correspond to the rest of the tokens + on that line (after word splitting and brace expansion) + + * Commands should raise exceptions for errors - don't use sys.exit() + ''' + def __init__(self, inroot, outroot, dbo=None, fatalerrors=True, + templatedir=None, defaults=None): + self.inroot = inroot + self.outroot = outroot + self.dbo = dbo + self.fatalerrors = fatalerrors + self.templatedir = templatedir or "/usr/share/lorax" + self.templatefile = None + # some builtin methods + self.builtins = DataHolder(exists=lambda p: rexists(p, root=inroot), + glob=lambda g: list(rglob(g, root=inroot))) + self.defaults = defaults or {} + self.results = DataHolder(treeinfo=dict()) # just treeinfo for now + # TODO: set up custom logger with a filter to add line info + + def _out(self, path): + return joinpaths(self.outroot, path) + def _in(self, path): + return joinpaths(self.inroot, path) + + def _filelist(self, *pkgs): + """ Return the list of files in the packages """ + pkglist = [] + for pkg_glob in pkgs: + pkglist += list(self.dbo.sack.query().installed().filter(name__glob=pkg_glob)) + + # dnf/hawkey doesn't make any distinction between file, dir or ghost like yum did + # so only return the files. + return set(f for pkg in pkglist for f in pkg.files if not os.path.isdir(self._out(f))) + + def _getsize(self, *files): + return sum(os.path.getsize(self._out(f)) for f in files if os.path.isfile(self._out(f))) + + def _write_debuginfo_log(self): + """ + Write a list of debuginfo packages to /root/debug-pkgs.log + + If lorax is called with a debug repo find the corresponding debuginfo package + names and write them to /root/debubg-pkgs.log on the boot.iso + """ + for repo in self.dbo.repos: + repo = self.dbo.repos[repo] + if any(True for url in repo.baseurl if "debug" in url): + break + if repo.metalink and "debug" in repo.metalink: + break + if repo.mirrorlist and "debug" in repo.mirrorlist: + break + else: + # No debug repos + return + + available = self.dbo.sack.query().available() + debug_pkgs = [] + for p in list(self.dbo.transaction.install_set): + if available.filter(name=p.name+"-debuginfo"): + debug_pkgs += ["{0.name}-debuginfo-{0.epoch}:{0.version}-{0.release}".format(p)] + + os.makedirs(self._out("root/"), exist_ok=True) + with open(self._out("root/debug-pkgs.log"), "w") as f: + for pkg in debug_pkgs: + f.write("%s\n" % pkg) + + +
[docs] def run(self, templatefile, **variables): + for k,v in list(self.defaults.items()) + list(self.builtins.items()): + variables.setdefault(k,v) + logger.debug("executing %s with variables=%s", templatefile, variables) + self.templatefile = templatefile + t = LoraxTemplate(directories=[self.templatedir]) + commands = t.parse(templatefile, variables) + self._run(commands)
+ + + def _run(self, parsed_template): + logger.info("running %s", self.templatefile) + for (num, line) in enumerate(parsed_template,1): + logger.debug("template line %i: %s", num, " ".join(line)) + skiperror = False + (cmd, args) = (line[0], line[1:]) + # Following Makefile convention, if the command is prefixed with + # a dash ('-'), we'll ignore any errors on that line. + if cmd.startswith('-'): + cmd = cmd[1:] + skiperror = True + try: + # grab the method named in cmd and pass it the given arguments + f = getattr(self, cmd, None) + if cmd[0] == '_' or cmd == 'run' or not isinstance(f, collections.Callable): + raise ValueError("unknown command %s" % cmd) + f(*args) + except Exception: # pylint: disable=broad-except + if skiperror: + logger.debug("ignoring error") + continue + logger.error("template command error in %s:", self.templatefile) + logger.error(" %s", " ".join(line)) + # format the exception traceback + exclines = traceback.format_exception(*sys.exc_info()) + # skip the bit about "ltmpl.py, in _run()" - we know that + exclines.pop(1) + # log the "ErrorType: this is what happened" line + logger.error(" " + exclines[-1].strip()) + # and log the entire traceback to the debug log + for _line in ''.join(exclines).splitlines(): + logger.debug(" " + _line) + if self.fatalerrors: + raise + +
[docs] def install(self, srcglob, dest): + ''' + install SRC DEST + Copy the given file (or files, if a glob is used) from the input + tree to the given destination in the output tree. + The path to DEST must exist in the output tree. + If DEST is a directory, SRC will be copied into that directory. + If DEST doesn't exist, SRC will be copied to a file with that name, + assuming the rest of the path exists. + This is pretty much like how the 'cp' command works. + Examples: + install usr/share/myconfig/grub.conf /boot + install /usr/share/myconfig/grub.conf.in /boot/grub.conf + ''' + for src in rglob(self._in(srcglob), fatal=True): + try: + cpfile(src, self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def installimg(self, *args): + ''' + installimg [--xz|--gzip|--bzip2|--lzma] [-ARG|--ARG=OPTION] SRCDIR DESTFILE + Create a compressed cpio archive of the contents of SRCDIR and place + it in DESTFILE. + + If SRCDIR doesn't exist or is empty nothing is created. + + Examples: + installimg ${LORAXDIR}/product/ images/product.img + installimg ${LORAXDIR}/updates/ images/updates.img + installimg --xz -6 ${LORAXDIR}/updates/ images/updates.img + installimg --xz -9 --memlimit-compress=3700MiB ${LORAXDIR}/updates/ images/updates.img + + Optionally use a different compression type and override the default args + passed to it. The default is xz -9 + ''' + COMPRESSORS = ("--xz", "--gzip", "--bzip2", "--lzma") + if len(args) < 2: + raise ValueError("Not enough args for installimg.") + + srcdir = args[-2] + destfile = args[-1] + if not os.path.isdir(self._in(srcdir)) or not os.listdir(self._in(srcdir)): + return + + compression = "xz" + compressargs = [] + if args[0] in COMPRESSORS: + compression = args[0][2:] + + for arg in args[1:-2]: + if arg.startswith('-'): + compressargs.append(arg) + else: + raise ValueError("Argument is missing -") + + logger.info("Creating image file %s from contents of %s", self._out(destfile), self._in(srcdir)) + logger.debug("Using %s %s compression", compression, compressargs or "") + mkcpio(self._in(srcdir), self._out(destfile), compression=compression, compressargs=compressargs)
+ +
[docs] def mkdir(self, *dirs): + ''' + mkdir DIR [DIR ...] + Create the named DIR(s). Will create leading directories as needed. + Example: + mkdir /images + ''' + for d in dirs: + d = self._out(d) + if not isdir(d): + os.makedirs(d)
+ +
[docs] def replace(self, pat, repl, *fileglobs): + ''' + replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...] + Find-and-replace the given PATTERN (Python-style regex) with the given + REPLACEMENT string for each of the files listed. + Example: + replace @VERSION@ ${product.version} /boot/grub.conf /boot/isolinux.cfg + ''' + match = False + for g in fileglobs: + for f in rglob(self._out(g)): + match = True + replace(f, pat, repl) + if not match: + raise IOError("no files matched %s" % " ".join(fileglobs))
+ +
[docs] def append(self, filename, data): + ''' + append FILE STRING + Append STRING (followed by a newline character) to FILE. + Python character escape sequences ('\\n', '\\t', etc.) will be + converted to the appropriate characters. + Examples: + append /etc/depmod.d/dd.conf "search updates built-in" + append /etc/resolv.conf "" + ''' + with open(self._out(filename), "a") as fobj: + fobj.write(bytes(data, "utf8").decode('unicode_escape')+"\n")
+ +
[docs] def treeinfo(self, section, key, *valuetoks): + ''' + treeinfo SECTION KEY ARG [ARG ...] + Add an item to the treeinfo data store. + The given SECTION will have a new item added where + KEY = ARG ARG ... + Example: + treeinfo images-${kernel.arch} boot.iso images/boot.iso + ''' + if section not in self.results.treeinfo: + self.results.treeinfo[section] = dict() + self.results.treeinfo[section][key] = " ".join(valuetoks)
+ +
[docs] def installkernel(self, section, src, dest): + ''' + installkernel SECTION SRC DEST + Install the kernel from SRC in the input tree to DEST in the output + tree, and then add an item to the treeinfo data store, in the named + SECTION, where "kernel" = DEST. + + Equivalent to: + install SRC DEST + treeinfo SECTION kernel DEST + ''' + self.install(src, dest) + self.treeinfo(section, "kernel", dest)
+ +
[docs] def installinitrd(self, section, src, dest): + ''' + installinitrd SECTION SRC DEST + Same as installkernel, but for "initrd". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "initrd", dest)
+ +
[docs] def installupgradeinitrd(self, section, src, dest): + ''' + installupgradeinitrd SECTION SRC DEST + Same as installkernel, but for "upgrade". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "upgrade", dest)
+ + + + + +
[docs] def copy(self, src, dest): + ''' + copy SRC DEST + Copy SRC to DEST. + If DEST is a directory, SRC will be copied inside it. + If DEST doesn't exist, SRC will be copied to a file with + that name, if the path leading to it exists. + ''' + try: + cpfile(self._out(src), self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def move(self, src, dest): + ''' + move SRC DEST + Move SRC to DEST. + ''' + mvfile(self._out(src), self._out(dest))
+ +
[docs] def remove(self, *fileglobs): + ''' + remove FILEGLOB [FILEGLOB ...] + Remove all the named files or directories. + Will *not* raise exceptions if the file(s) are not found. + ''' + for g in fileglobs: + for f in rglob(self._out(g)): + remove(f) + logger.debug("removed %s", f)
+ +
[docs] def chmod(self, fileglob, mode): + ''' + chmod FILEGLOB OCTALMODE + Change the mode of all the files matching FILEGLOB to OCTALMODE. + ''' + for f in rglob(self._out(fileglob), fatal=True): + os.chmod(f, int(mode,8))
+ + # TODO: do we need a new command for gsettings? +
[docs] def gconfset(self, path, keytype, value, outfile=None): + ''' + gconfset PATH KEYTYPE VALUE [OUTFILE] + Set the given gconf PATH, with type KEYTYPE, to the given value. + OUTFILE defaults to /etc/gconf/gconf.xml.defaults if not given. + Example: + gconfset /apps/metacity/general/num_workspaces int 1 + ''' + if outfile is None: + outfile = self._out("etc/gconf/gconf.xml.defaults") + cmd = ["gconftool-2", "--direct", + "--config-source=xml:readwrite:%s" % outfile, + "--set", "--type", keytype, path, value] + runcmd(cmd)
+ +
[docs] def log(self, msg): + ''' + log MESSAGE + Emit the given log message. Be sure to put it in quotes! + Example: + log "Reticulating splines, please wait..." + ''' + logger.info(msg)
+ + # TODO: add ssh-keygen, mkisofs(?), find, and other useful commands +
[docs] def runcmd(self, *cmdlist): + ''' + runcmd CMD [ARG ...] + Run the given command with the given arguments. + + NOTE: All paths given MUST be COMPLETE, ABSOLUTE PATHS to the file + or files mentioned. ${root}/${inroot}/${outroot} are good for + constructing these paths. + + FURTHER NOTE: Please use this command only as a last resort! + Whenever possible, you should use the existing template commands. + If the existing commands don't do what you need, fix them! + + Examples: + (this should be replaced with a "find" function) + runcmd find ${root} -name "*.pyo" -type f -delete + %for f in find(root, name="*.pyo"): + remove ${f} + %endfor + ''' + cmd = cmdlist + logger.debug('running command: %s', cmd) + if cmd[0].startswith("--chdir="): + logger.error("--chdir is no longer supported for runcmd.") + raise ValueError("--chdir is no longer supported for runcmd.") + + try: + stdout = runcmd_output(cmd) + if stdout: + logger.debug('command output:\n%s', stdout) + logger.debug("command finished successfully") + except CalledProcessError as e: + if e.output: + logger.error('command output:\n%s', e.output) + logger.error('command returned failure (%d)', e.returncode) + raise
+ +
[docs] def installpkg(self, *pkgs): + ''' + installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...] + Request installation of all packages matching the given globs. + Note that this is just a *request* - nothing is *actually* installed + until the 'run_pkg_transaction' command is given. + + --required is now the default. If the PKGGLOB can be missing pass --optional + ''' + if pkgs[0] == '--optional': + pkgs = pkgs[1:] + required = False + elif pkgs[0] == '--required': + pkgs = pkgs[1:] + required = True + else: + required = True + + excludes = [] + while '--except' in pkgs: + idx = pkgs.index('--except') + if len(pkgs) == idx+1: + raise ValueError("installpkg needs an argument after --except") + + excludes.append(pkgs[idx+1]) + pkgs = pkgs[:idx] + pkgs[idx+2:] + + errors = False + for p in pkgs: + try: + # Start by using Subject to generate a package query, which will + # give us a query object similar to what dbo.install would select, + # minus the handling for multilib. This query may contain + # multiple arches. Pull the package names out of that, filter any + # that match the excludes patterns, and pass those names back to + # dbo.install to do the actual, arch and version and multilib + # aware, package selction. + + # dnf queries don't have a concept of negative globs which is why + # the filtering is done the hard way. + + pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(self.dbo.sack).filter(latest=True)] + if not pkgnames: + raise dnf.exceptions.PackageNotFoundError("no package matched", p) + + # Apply excludes to the name only + for exclude in excludes: + pkgnames = [pkg for pkg in pkgnames if not fnmatch.fnmatch(pkg.name, exclude)] + + # Convert to a sorted NVR list for installation + pkgnvrs = sorted(["{}-{}-{}".format(pkg.name, pkg.version, pkg.release) for pkg in pkgnames]) + + # If the request is a glob, expand it in the log + if any(g for g in ['*','?','.'] if g in p): + logger.info("installpkg: %s expands to %s", p, ",".join(pkgnvrs)) + + for pkgnvr in pkgnvrs: + try: + self.dbo.install(pkgnvr) + except Exception as e: # pylint: disable=broad-except + if required: + raise + # Not required, log it and continue processing pkgs + logger.error("installpkg %s failed: %s", pkgnvr, str(e)) + except Exception as e: # pylint: disable=broad-except + logger.error("installpkg %s failed: %s", p, str(e)) + errors = True + + if errors and required: + raise Exception("Required installpkg failed.")
+ +
[docs] def removepkg(self, *pkgs): + ''' + removepkg PKGGLOB [PKGGLOB...] + Delete the named package(s). + IMPLEMENTATION NOTES: + RPM scriptlets (%preun/%postun) are *not* run. + Files are deleted, but directories are left behind. + ''' + for p in pkgs: + filepaths = [f.lstrip('/') for f in self._filelist(p)] + # TODO: also remove directories that aren't owned by anything else + if filepaths: + logger.debug("removepkg %s: %ikb", p, self._getsize(*filepaths)/1024) + self.remove(*filepaths) + else: + logger.debug("removepkg %s: no files to remove!", p)
+ +
[docs] def run_pkg_transaction(self): + ''' + run_pkg_transaction + Actually install all the packages requested by previous 'installpkg' + commands. + ''' + try: + logger.info("Checking dependencies") + self.dbo.resolve() + except dnf.exceptions.DepsolveError as e: + logger.error("Dependency check failed: %s", e) + raise + logger.info("%d packages selected", len(self.dbo.transaction)) + if len(self.dbo.transaction) == 0: + raise Exception("No packages in transaction") + + # If a debug repo has been included, write out a list of debuginfo packages + self._write_debuginfo_log() + + pkgs_to_download = self.dbo.transaction.install_set + logger.info("Downloading packages") + progress = LoraxDownloadCallback() + try: + self.dbo.download_packages(pkgs_to_download, progress) + except dnf.exceptions.DownloadError as e: + logger.error("Failed to download the following packages: %s", e) + raise + + logger.info("Preparing transaction from installation source") + try: + display = LoraxRpmCallback() + self.dbo.do_transaction(display=display) + except BaseException as e: + logger.error("The transaction process has ended abruptly: %s", e) + raise + + # Reset the package sack to pick up the installed packages + self.dbo.reset(repos=False) + self.dbo.fill_sack(load_system_repo=True, load_available_repos=False) + + # At this point dnf should know about the installed files. Double check that it really does. + if len(self._filelist("anaconda-core")) == 0: + raise Exception("Failed to reset dbo to installed package set")
+ +
[docs] def removefrom(self, pkg, *globs): + ''' + removefrom PKGGLOB [--allbut] FILEGLOB [FILEGLOB...] + Remove all files matching the given file globs from the package + (or packages) named. + If '--allbut' is used, all the files from the given package(s) will + be removed *except* the ones which match the file globs. + Examples: + removefrom usbutils /usr/bin/* + removefrom xfsprogs --allbut /sbin/* + ''' + cmd = "%s %s" % (pkg, " ".join(globs)) # save for later logging + keepmatches = False + if globs[0] == '--allbut': + keepmatches = True + globs = globs[1:] + # get pkg filelist and find files that match the globs + filelist = self._filelist(pkg) + matches = set() + for g in globs: + globs_re = re.compile(fnmatch.translate(g)) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removefrom %s %s: no files matched!", pkg, g) + # are we removing the matches, or keeping only the matches? + if keepmatches: + remove_files = filelist.difference(matches) + else: + remove_files = matches + # remove the files + if remove_files: + logger.debug("removefrom %s: removed %i/%i files, %ikb/%ikb", cmd, + len(remove_files), len(filelist), + self._getsize(*remove_files)/1024, self._getsize(*filelist)/1024) + self.remove(*remove_files) + else: + logger.debug("removefrom %s: no files to remove!", cmd)
+ +
[docs] def removekmod(self, *globs): + ''' + removekmod GLOB [GLOB...] [--allbut] KEEPGLOB [KEEPGLOB...] + Remove all files and directories matching the given file globs from the kernel + modules directory. + + If '--allbut' is used, all the files from the modules will be removed *except* + the ones which match the file globs. There must be at least one initial GLOB + to search and one KEEPGLOB to keep. The KEEPGLOB is expanded to be *KEEPGLOB* + so that it will match anywhere in the path. + + This only removes files from under /lib/modules/*/kernel/ + + Examples: + removekmod sound drivers/media drivers/hwmon drivers/video + removekmod drivers/char --allbut virtio_console hw_random + ''' + cmd = " ".join(globs) + if "--allbut" in globs: + idx = globs.index("--allbut") + if idx == 0: + raise ValueError("removekmod needs at least one GLOB before --allbut") + + # Apply keepglobs anywhere they appear in the path + keepglobs = globs[idx+1:] + if len(keepglobs) == 0: + raise ValueError("removekmod needs at least one GLOB after --allbut") + + globs = globs[:idx] + else: + # Nothing to keep + keepglobs = [] + + filelist = set() + for g in globs: + for top_dir in rglob(self._out("/lib/modules/*/kernel/"+g)): + for root, _dirs, files in os.walk(top_dir): + filelist.update(root+"/"+f for f in files) + + # Remove anything matching keepglobs from the list + matches = set() + for g in keepglobs: + globs_re = re.compile(fnmatch.translate("*"+g+"*")) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removekmod %s: no files matched!", g) + remove_files = filelist.difference(matches) + + if remove_files: + logger.debug("removekmod: removing %d files", len(remove_files)) + list(remove(f) for f in remove_files) + else: + logger.debug("removekmod %s: no files to remove!", cmd)
+ +
[docs] def createaddrsize(self, addr, src, dest): + ''' + createaddrsize INITRD_ADDRESS INITRD ADDRSIZE + Create the initrd.addrsize file required in LPAR boot process. + Examples: + createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize + ''' + addrsize = open(dest, "wb") + addrsize_data = struct.pack(">iiii", 0, int(addr, 16), 0, os.stat(src).st_size) + addrsize.write(addrsize_data) + addrsize.close()
+ +
[docs] def systemctl(self, cmd, *units): + ''' + systemctl [enable|disable|mask] UNIT [UNIT...] + Enable, disable, or mask the given systemd units. + Examples: + systemctl disable lvm2-monitor.service + systemctl mask fedora-storage-init.service fedora-configure.service + ''' + if cmd not in ('enable', 'disable', 'mask'): + raise ValueError('unsupported systemctl cmd: %s' % cmd) + if not units: + logger.debug("systemctl: no units given for %s, ignoring", cmd) + return + self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug + systemctl = ['systemctl', '--root', self.outroot, '--no-reload', cmd] + # When a unit doesn't exist systemd aborts the command. Run them one at a time. + # XXX for some reason 'systemctl enable/disable' always returns 1 + for unit in units: + try: + cmd = systemctl + [unit] + runcmd(cmd) + except CalledProcessError: + pass
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/monitor.html b/f28-branch/_modules/pylorax/monitor.html new file mode 100644 index 00000000..4e6a631c --- /dev/null +++ b/f28-branch/_modules/pylorax/monitor.html @@ -0,0 +1,424 @@ + + + + + + + + + + + pylorax.monitor — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.monitor

+# monitor.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import re
+import socket
+import socketserver
+import threading
+import time
+
+
[docs]class LogRequestHandler(socketserver.BaseRequestHandler): + """ + Handle monitoring and saving the logfiles from the virtual install + + Incoming data is written to self.server.log_path and each line is checked + for patterns that would indicate that the installation failed. + self.server.log_error is set True when this happens. + """ +
[docs] def setup(self): + """Start writing to self.server.log_path""" + + if self.server.log_path: + self.fp = open(self.server.log_path, "w") # pylint: disable=attribute-defined-outside-init + else: + self.fp = None + self.request.settimeout(10)
+ +
[docs] def handle(self): + """ + Write incoming data to a logfile and check for errors + + Split incoming data into lines and check for any Tracebacks or other + errors that indicate that the install failed. + + Loops until self.server.kill is True + """ + log.info("Processing logs from %s", self.client_address) + line = "" + while True: + if self.server.kill: + break + + try: + data = str(self.request.recv(4096), "utf8") + if self.fp: + self.fp.write(data) + self.fp.flush() + + # check the data for errors and set error flag + # need to assemble it into lines so we can test for the error + # string. + while data: + more = data.split("\n", 1) + line += more[0] + if len(more) > 1: + self.iserror(line) + line = "" + data = more[1] + else: + data = None + + except socket.timeout: + pass + except Exception as e: # pylint: disable=broad-except + log.info("log processing killed by exception: %s", e) + break
+ +
[docs] def finish(self): + log.info("Shutting down log processing") + self.request.close() + if self.fp: + self.fp.close()
+ +
[docs] def iserror(self, line): + """ + Check a line to see if it contains an error indicating installation failure + + :param str line: log line to check for failure + + If the line contains IGNORED it will be skipped. + """ + if "IGNORED" in line: + return + simple_tests = ["Traceback (", + "Out of memory:", + "Call Trace:", + "insufficient disk space:", + "Not enough disk space to download the packages", + "error populating transaction after", + "traceback script(s) have been run", + "crashed on signal", + "packaging: Missed: NoSuchPackage", + "packaging: Installation failed", + "The following error occurred while installing. This is a fatal error"] + re_tests = [r"packaging: base repo .* not valid", + r"packaging: .* requires .*"] + for t in simple_tests: + if t in line: + self.server.log_error = True + self.server.error_line = line + return + for t in re_tests: + if re.search(t, line): + self.server.log_error = True + self.server.error_line = line + return
+ + +
[docs]class LogServer(socketserver.TCPServer): + """A TCP Server that listens for log data""" + + # Number of seconds to wait for a connection after startup + timeout = 60 + + def __init__(self, log_path, *args, **kwargs): + """ + Setup the log server + + :param str log_path: Path to the log file to write + """ + self.kill = False + self.log_error = False + self.error_line = "" + self.log_path = log_path + self._timeout = kwargs.pop("timeout", None) + if self._timeout: + self._start_time = time.time() + socketserver.TCPServer.__init__(self, *args, **kwargs) + +
[docs] def log_check(self): + """ + Check to see if an error has been found in the log + + :returns: True if there has been an error + :rtype: bool + """ + if self._timeout: + taking_too_long = time.time() > self._start_time + (self._timeout * 60) + if taking_too_long: + log.error("Canceling installation due to timeout") + else: + taking_too_long = False + return self.log_error or taking_too_long
+ + +
[docs]class LogMonitor(object): + """ + Setup a server to monitor the logs output by the installation + + This needs to be running before the virt-install runs, it expects + there to be a listener on the port used for the virtio log port. + """ + def __init__(self, log_path=None, host="localhost", port=0, timeout=None): + """ + Start a thread to monitor the logs. + + :param str log_path: Path to the logfile to write + :param str host: Host to bind to. Default is localhost. + :param int port: Port to listen to or 0 to pick a port + + If 0 is passed for the port the dynamically assigned port will be + available as self.port + + If log_path isn't set then it only monitors the logs, instead of + also writing them to disk. + """ + self.server = LogServer(log_path, (host, port), LogRequestHandler, timeout=timeout) + self.host, self.port = self.server.server_address + self.log_path = log_path + self.server_thread = threading.Thread(target=self.server.handle_request) + self.server_thread.daemon = True + self.server_thread.start() + +
[docs] def shutdown(self): + """Force shutdown of the monitoring thread""" + self.server.kill = True + self.server_thread.join()
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/mount.html b/f28-branch/_modules/pylorax/mount.html new file mode 100644 index 00000000..3a977998 --- /dev/null +++ b/f28-branch/_modules/pylorax/mount.html @@ -0,0 +1,331 @@ + + + + + + + + + + + pylorax.mount — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.mount

+# mount.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import os
+
+from pylorax.imgutils import mount, umount
+from pylorax.executils import execWithCapture
+
+
[docs]class IsoMountpoint(object): + """ + Mount the iso and check to make sure the vmlinuz and initrd.img files exist + + Also check the iso for a a stage2 image and set a flag and extract the + iso's label. + + stage2 can be either LiveOS/squashfs.img or images/install.img + """ + def __init__(self, iso_path, initrd_path=None): + """ + Mount the iso + + :param str iso_path: Path to the iso to mount + :param str initrd_path: Optional path to initrd + + initrd_path can be used to point to a tree with a newer + initrd.img than the iso has. The iso is still used for stage2. + + self.kernel and self.initrd point to the kernel and initrd. + self.stage2 is set to True if there is a stage2 image. + self.repo is the path to the mounted iso if there is a /repodata dir. + """ + self.label = None + self.iso_path = iso_path + self.initrd_path = initrd_path + + if not self.initrd_path: + self.mount_dir = mount(self.iso_path, opts="loop") + else: + self.mount_dir = self.initrd_path + + kernel_list = [("/isolinux/vmlinuz", "/isolinux/initrd.img"), + ("/ppc/ppc64/vmlinuz", "/ppc/ppc64/initrd.img")] + + if os.path.isdir(self.mount_dir+"/repodata"): + self.repo = self.mount_dir + else: + self.repo = None + self.stage2 = os.path.exists(self.mount_dir+"/LiveOS/squashfs.img") or \ + os.path.exists(self.mount_dir+"/images/install.img") + + try: + for kernel, initrd in kernel_list: + if (os.path.isfile(self.mount_dir+kernel) and + os.path.isfile(self.mount_dir+initrd)): + self.kernel = self.mount_dir+kernel + self.initrd = self.mount_dir+initrd + break + else: + raise Exception("Missing kernel and initrd file in iso, failed" + " to search under: {0}".format(kernel_list)) + except: + self.umount() + raise + + self.get_iso_label() + +
[docs] def umount( self ): + """Unmount the iso""" + if not self.initrd_path: + umount(self.mount_dir)
+ +
[docs] def get_iso_label(self): + """ + Get the iso's label using isoinfo + + Sets self.label if one is found + """ + isoinfo_output = execWithCapture("isoinfo", ["-d", "-i", self.iso_path]) + log.debug(isoinfo_output) + for line in isoinfo_output.splitlines(): + if line.startswith("Volume id: "): + self.label = line[11:] + return
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/sysutils.html b/f28-branch/_modules/pylorax/sysutils.html new file mode 100644 index 00000000..408443e6 --- /dev/null +++ b/f28-branch/_modules/pylorax/sysutils.html @@ -0,0 +1,337 @@ + + + + + + + + + + + pylorax.sysutils — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.sysutils

+#
+# sysutils.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+__all__ = ["joinpaths", "touch", "replace", "chown_", "chmod_", "remove",
+           "linktree"]
+
+import sys
+import os
+import re
+import fileinput
+import pwd
+import grp
+import glob
+import shutil
+
+from pylorax.executils import runcmd
+
+
[docs]def joinpaths(*args, **kwargs): + path = os.path.sep.join(args) + + if kwargs.get("follow_symlinks"): + return os.path.realpath(path) + else: + return path
+ + +
[docs]def touch(fname): + # python closes the file when it goes out of scope + open(fname, "w").write("")
+ + +
[docs]def replace(fname, find, sub): + fin = fileinput.input(fname, inplace=1) + pattern = re.compile(find) + + for line in fin: + line = pattern.sub(sub, line) + sys.stdout.write(line) + + fin.close()
+ + +
[docs]def chown_(path, user=None, group=None, recursive=False): + uid = gid = -1 + + if user is not None: + uid = pwd.getpwnam(user)[2] + if group is not None: + gid = grp.getgrnam(group)[2] + + for fname in glob.iglob(path): + os.chown(fname, uid, gid) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chown_(nested, user, group, recursive)
+ + +
[docs]def chmod_(path, mode, recursive=False): + for fname in glob.iglob(path): + os.chmod(fname, mode) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chmod_(nested, mode, recursive)
+ + +def cpfile(src, dst): + shutil.copy2(src, dst) + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + + return dst + +def mvfile(src, dst): + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + os.rename(src, dst) + return dst + +
[docs]def remove(target): + if os.path.isdir(target) and not os.path.islink(target): + shutil.rmtree(target) + else: + os.unlink(target)
+ +
[docs]def linktree(src, dst): + runcmd(["/bin/cp", "-alx", src, dst])
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/treebuilder.html b/f28-branch/_modules/pylorax/treebuilder.html new file mode 100644 index 00000000..1eaf6ee8 --- /dev/null +++ b/f28-branch/_modules/pylorax/treebuilder.html @@ -0,0 +1,629 @@ + + + + + + + + + + + pylorax.treebuilder — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treebuilder

+# treebuilder.py - handle arch-specific tree building stuff using templates
+#
+# Copyright (C) 2011-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.treebuilder")
+
+import os, re
+from os.path import basename
+from shutil import copytree, copy2
+from pathlib import Path
+import itertools
+
+from pylorax.sysutils import joinpaths, remove
+from pylorax.base import DataHolder
+from pylorax.ltmpl import LoraxTemplateRunner
+import pylorax.imgutils as imgutils
+from pylorax.executils import runcmd, runcmd_output, execWithCapture
+
+templatemap = {
+    'i386':    'x86.tmpl',
+    'x86_64':  'x86.tmpl',
+    'ppc':     'ppc.tmpl',
+    'ppc64':   'ppc.tmpl',
+    'ppc64le': 'ppc64le.tmpl',
+    's390':    's390.tmpl',
+    's390x':   's390.tmpl',
+    'aarch64': 'aarch64.tmpl',
+    'arm':     'arm.tmpl',
+    'armhfp':  'arm.tmpl',
+}
+
+
[docs]def generate_module_info(moddir, outfile=None): + def module_desc(mod): + output = runcmd_output(["modinfo", "-F", "description", mod]) + return output.strip() + def read_module_set(name): + return set(l.strip() for l in open(joinpaths(moddir,name)) if ".ko" in l) + modsets = {'scsi':read_module_set("modules.block"), + 'eth':read_module_set("modules.networking")} + + modinfo = list() + for root, _dirs, files in os.walk(moddir): + for modtype, modset in modsets.items(): + for mod in modset.intersection(files): # modules in this dir + (name, _ext) = os.path.splitext(mod) # foo.ko -> (foo, .ko) + desc = module_desc(joinpaths(root,mod)) or "%s driver" % name + modinfo.append(dict(name=name, type=modtype, desc=desc)) + + out = open(outfile or joinpaths(moddir,"module-info"), "w") + out.write("Version 0\n") + for mod in sorted(modinfo, key=lambda m: m.get('name')): + out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
+ +
[docs]class RuntimeBuilder(object): + '''Builds the anaconda runtime image.''' + def __init__(self, product, arch, dbo, templatedir=None, + installpkgs=None, excludepkgs=None, + add_templates=None, + add_template_vars=None): + root = dbo.conf.installroot + # use a copy of product so we can modify it locally + product = product.copy() + product.name = product.name.lower() + self.vars = DataHolder(arch=arch, product=product, dbo=dbo, root=root, + basearch=arch.basearch, libdir=arch.libdir) + self.dbo = dbo + self._runner = LoraxTemplateRunner(inroot=root, outroot=root, + dbo=dbo, templatedir=templatedir) + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self._installpkgs = installpkgs or [] + self._excludepkgs = excludepkgs or [] + self._runner.defaults = self.vars + self.dbo.reset() + + def _install_branding(self): + release = None + q = self.dbo.sack.query() + a = q.available() + for pkg in a.filter(provides='system-release'): + logger.debug("Found release package %s", pkg) + if pkg.name.startswith('generic'): + continue + else: + release = pkg.name + break + + if not release: + logger.error('could not get the release') + return + + # release + logger.info('got release: %s', release) + self._runner.installpkg(release) + + # logos + release, _suffix = release.split('-', 1) + self._runner.installpkg('%s-logos' % release) + +
[docs] def install(self): + '''Install packages and do initial setup with runtime-install.tmpl''' + self._install_branding() + if len(self._installpkgs) > 0: + self._runner.installpkg(*self._installpkgs) + if len(self._excludepkgs) > 0: + self._runner.removepkg(*self._excludepkgs) + self._runner.run("runtime-install.tmpl") + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars)
+ +
[docs] def writepkglists(self, pkglistdir): + '''debugging data: write out lists of package contents''' + if not os.path.isdir(pkglistdir): + os.makedirs(pkglistdir) + q = self.dbo.sack.query() + for pkgobj in q.installed(): + with open(joinpaths(pkglistdir, pkgobj.name), "w") as fobj: + for fname in pkgobj.files: + fobj.write("{0}\n".format(fname))
+ +
[docs] def postinstall(self): + '''Do some post-install setup work with runtime-postinstall.tmpl''' + # copy configdir into runtime root beforehand + configdir = joinpaths(self._runner.templatedir,"config_files") + configdir_path = "tmp/config_files" + fullpath = joinpaths(self.vars.root, configdir_path) + if os.path.exists(fullpath): + remove(fullpath) + copytree(configdir, fullpath) + self._runner.run("runtime-postinstall.tmpl", configdir=configdir_path)
+ +
[docs] def cleanup(self): + '''Remove unneeded packages and files with runtime-cleanup.tmpl''' + self._runner.run("runtime-cleanup.tmpl")
+ +
[docs] def verify(self): + '''Ensure that contents of the installroot can run''' + status = True + + ELF_MAGIC = b'\x7fELF' + + # Iterate over all files in /usr/bin and /usr/sbin + # For ELF files, gather them into a list and we'll check them all at + # the end. For files with a #!, check them as we go + elf_files = [] + usr_bin = Path(self.vars.root + '/usr/bin') + usr_sbin = Path(self.vars.root + '/usr/sbin') + for path in (str(x) for x in itertools.chain(usr_bin.iterdir(), usr_sbin.iterdir()) \ + if x.is_file()): + with open(path, "rb") as f: + magic = f.read(4) + if magic == ELF_MAGIC: + # Save the path, minus the chroot prefix + elf_files.append(path[len(self.vars.root):]) + elif magic[:2] == b'#!': + # Reopen the file as text and read the first line. + # Open as latin-1 so that stray 8-bit characters don't make + # things blow up. We only really care about ASCII parts. + with open(path, "rt", encoding="latin-1") as f_text: + # Remove the #!, split on space, and take the first part + shabang = f_text.readline()[2:].split()[0] + + # Does the path exist? + if not os.path.exists(self.vars.root + shabang): + logger.error('%s, needed by %s, does not exist', shabang, path) + status = False + + # Now, run ldd on all the ELF files + # Just run ldd once on everything so it isn't logged a million times. + # At least one thing in the list isn't going to be a dynamic executable, + # so use execWithCapture to ignore the exit code. + filename = '' + for line in execWithCapture('ldd', elf_files, root=self.vars.root, + log_output=False, filter_stderr=True).split('\n'): + if line and not line[0].isspace(): + # New filename header, strip the : at the end and save + filename = line[:-1] + elif 'not found' in line: + logger.error('%s, needed by %s, not found', line.split()[0], filename) + status = False + + return status
+ +
[docs] def writepkgsizes(self, pkgsizefile): + '''debugging data: write a big list of pkg sizes''' + fobj = open(pkgsizefile, "w") + getsize = lambda f: os.lstat(f).st_size if os.path.exists(f) else 0 + q = self.dbo.sack.query() + for p in sorted(q.installed()): + pkgsize = sum(getsize(joinpaths(self.vars.root,f)) for f in p.files) + fobj.write("{0.name}.{0.arch}: {1}\n".format(p, pkgsize))
+ +
[docs] def generate_module_data(self): + root = self.vars.root + moddir = joinpaths(root, "lib/modules/") + for kver in os.listdir(moddir): + ksyms = joinpaths(root, "boot/System.map-%s" % kver) + logger.info("doing depmod and module-info for %s", kver) + runcmd(["depmod", "-a", "-F", ksyms, "-b", root, kver]) + generate_module_info(moddir+kver, outfile=moddir+"module-info")
+ +
[docs] def create_runtime(self, outfile="/var/tmp/squashfs.img", compression="xz", compressargs=None, size=2): + # make live rootfs image - must be named "LiveOS/rootfs.img" for dracut + compressargs = compressargs or [] + workdir = joinpaths(os.path.dirname(outfile), "runtime-workdir") + os.makedirs(joinpaths(workdir, "LiveOS")) + + imgutils.mkrootfsimg(self.vars.root, joinpaths(workdir, "LiveOS/rootfs.img"), + "Anaconda", size=size) + + # squash the live rootfs and clean up workdir + imgutils.mksquashfs(workdir, outfile, compression, compressargs) + remove(workdir)
+ +
[docs] def finished(self): + """ Done using RuntimeBuilder + + Close the dnf base object + """ + self.dbo.close()
+ +
[docs]class TreeBuilder(object): + '''Builds the arch-specific boot images. + inroot should be the installtree root (the newly-built runtime dir)''' + def __init__(self, product, arch, inroot, outroot, runtime, isolabel, domacboot=True, doupgrade=True, templatedir=None, add_templates=None, add_template_vars=None, workdir=None): + + # NOTE: if you pass an arg named "runtime" to a mako template it'll + # clobber some mako internal variables - hence "runtime_img". + self.vars = DataHolder(arch=arch, product=product, runtime_img=runtime, + runtime_base=basename(runtime), + inroot=inroot, outroot=outroot, + basearch=arch.basearch, libdir=arch.libdir, + isolabel=isolabel, udev=udev_escape, domacboot=domacboot, doupgrade=doupgrade, + workdir=workdir, lower=string_lower) + self._runner = LoraxTemplateRunner(inroot, outroot, templatedir=templatedir) + self._runner.defaults = self.vars + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self.templatedir = templatedir + self.treeinfo_data = None + + @property + def kernels(self): + return findkernels(root=self.vars.inroot) + +
[docs] def rebuild_initrds(self, add_args=None, backup="", prefix=""): + '''Rebuild all the initrds in the tree. If backup is specified, each + initrd will be renamed with backup as a suffix before rebuilding. + If backup is empty, the existing initrd files will be overwritten. + If suffix is specified, the existing initrd is untouched and a new + image is built with the filename "${prefix}-${kernel.version}.img" + + If the initrd doesn't exist its name will be created based on the + name of the kernel. + ''' + add_args = add_args or [] + dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args + if not backup: + dracut.append("--force") + + if not self.kernels: + raise Exception("No kernels found, cannot rebuild_initrds") + + # Hush some dracut warnings. TODO: bind-mount proc in place? + open(joinpaths(self.vars.inroot,"/proc/modules"),"w") + for kernel in self.kernels: + if prefix: + idir = os.path.dirname(kernel.path) + outfile = joinpaths(idir, prefix+'-'+kernel.version+'.img') + elif hasattr(kernel, "initrd"): + # If there is an existing initrd, use that + outfile = kernel.initrd.path + else: + # Construct an initrd from the kernel name + outfile = kernel.path.replace("vmlinuz-", "initrd-") + ".img" + logger.info("rebuilding %s", outfile) + if backup: + initrd = joinpaths(self.vars.inroot, outfile) + if os.path.exists(initrd): + os.rename(initrd, initrd + backup) + cmd = dracut + [outfile, kernel.version] + runcmd(cmd, root=self.vars.inroot) + + # ppc64 cannot boot images > 32MiB, check size and warn + if self.vars.arch.basearch in ("ppc64", "ppc64le") and os.path.exists(outfile): + st = os.stat(outfile) + if st.st_size > 32 * 1024 * 1024: + logging.warning("ppc64 initrd %s is > 32MiB", outfile) + + os.unlink(joinpaths(self.vars.inroot,"/proc/modules"))
+ +
[docs] def build(self): + templatefile = templatemap[self.vars.arch.basearch] + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars) + self._runner.run(templatefile, kernels=self.kernels) + self.treeinfo_data = self._runner.results.treeinfo + self.implantisomd5()
+ +
[docs] def implantisomd5(self): + for _section, data in self.treeinfo_data.items(): + if 'boot.iso' in data: + iso = joinpaths(self.vars.outroot, data['boot.iso']) + runcmd(["implantisomd5", iso])
+ + @property + def dracut_hooks_path(self): + """ Return the path to the lorax dracut hooks scripts + + Use the configured share dir if it is setup, + otherwise default to /usr/share/lorax/dracut_hooks + """ + if self.templatedir: + return joinpaths(self.templatedir, "dracut_hooks") + else: + return "/usr/share/lorax/dracut_hooks" + +
[docs] def copy_dracut_hooks(self, hooks): + """ Copy the hook scripts in hooks into the installroot's /tmp/ + and return a list of commands to pass to dracut when creating the + initramfs + + hooks is a list of tuples with the name of the hook script and the + target dracut hook directory + (eg. [("99anaconda-copy-ks.sh", "/lib/dracut/hooks/pre-pivot")]) + """ + dracut_commands = [] + for hook_script, dracut_path in hooks: + src = joinpaths(self.dracut_hooks_path, hook_script) + if not os.path.exists(src): + logger.error("Missing lorax dracut hook script %s", (src)) + continue + dst = joinpaths(self.vars.inroot, "/tmp/", hook_script) + copy2(src, dst) + dracut_commands += ["--include", joinpaths("/tmp/", hook_script), + dracut_path] + return dracut_commands
+ +#### TreeBuilder helper functions + +
[docs]def findkernels(root="/", kdir="boot"): + # To find possible flavors, awk '/BuildKernel/ { print $4 }' kernel.spec + flavors = ('debug', 'PAE', 'PAEdebug', 'smp', 'xen', 'lpae') + kre = re.compile(r"vmlinuz-(?P<version>.+?\.(?P<arch>[a-z0-9_]+)" + r"(.(?P<flavor>{0}))?)$".format("|".join(flavors))) + kernels = [] + bootfiles = os.listdir(joinpaths(root, kdir)) + for f in bootfiles: + match = kre.match(f) + if match: + kernel = DataHolder(path=joinpaths(kdir, f)) + kernel.update(match.groupdict()) # sets version, arch, flavor + kernels.append(kernel) + + # look for associated initrd/initramfs/etc. + for kernel in kernels: + for f in bootfiles: + if f.endswith('-'+kernel.version+'.img'): + imgtype, _rest = f.split('-',1) + # special backwards-compat case + if imgtype == 'initramfs': + imgtype = 'initrd' + kernel[imgtype] = DataHolder(path=joinpaths(kdir, f)) + + logger.debug("kernels=%s", kernels) + return kernels
+ +# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c) +udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist +udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable +
[docs]def udev_escape(label): + out = '' + for ch in label: + out += ch if ch not in udev_blacklist else '\\x%02x' % ord(ch) + return out
+ +
[docs]def string_lower(string): + """ Return a lowercase string. + + :param string: String to lowercase + + This is used as a filter in the templates. + """ + return string.lower()
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_modules/pylorax/treeinfo.html b/f28-branch/_modules/pylorax/treeinfo.html new file mode 100644 index 00000000..720063fd --- /dev/null +++ b/f28-branch/_modules/pylorax/treeinfo.html @@ -0,0 +1,286 @@ + + + + + + + + + + + pylorax.treeinfo — Lorax 28.9 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treeinfo

+#
+# treeinfo.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.treeinfo")
+
+import configparser
+import time
+
+
+
[docs]class TreeInfo(object): + + def __init__(self, product, version, variant, basearch, + packagedir=""): + + self.c = configparser.ConfigParser() + + section = "general" + data = {"timestamp": str(time.time()), + "family": product, + "version": version, + "name": "%s-%s" % (product, version), + "variant": variant or "", + "arch": basearch, + "packagedir": packagedir} + + self.c.add_section(section) + list(self.c.set(section, key, value) for key, value in data.items()) + +
[docs] def add_section(self, section, data): + if not self.c.has_section(section): + self.c.add_section(section) + + list(self.c.set(section, key, value) for key, value in data.items())
+ +
[docs] def write(self, outfile): + logger.info("writing .treeinfo file") + with open(outfile, "w") as fobj: + self.c.write(fobj)
+
+ +
+
+ +
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/f28-branch/_sources/index.rst.txt b/f28-branch/_sources/index.rst.txt new file mode 100644 index 00000000..c9b962d8 --- /dev/null +++ b/f28-branch/_sources/index.rst.txt @@ -0,0 +1,27 @@ +.. Lorax documentation master file, created by + sphinx-quickstart on Wed Apr 8 13:46:00 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Lorax's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 1 + + intro + lorax + livemedia-creator + product-images + modules + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/f28-branch/_sources/index.txt b/f28-branch/_sources/index.txt new file mode 100644 index 00000000..c9b962d8 --- /dev/null +++ b/f28-branch/_sources/index.txt @@ -0,0 +1,27 @@ +.. Lorax documentation master file, created by + sphinx-quickstart on Wed Apr 8 13:46:00 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Lorax's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 1 + + intro + lorax + livemedia-creator + product-images + modules + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/f28-branch/_sources/intro.rst.txt b/f28-branch/_sources/intro.rst.txt new file mode 100644 index 00000000..01857ee9 --- /dev/null +++ b/f28-branch/_sources/intro.rst.txt @@ -0,0 +1,67 @@ +Introduction to Lorax +===================== + +I am the Lorax. I speak for the trees [and images]. + +Lorax is used to build the Anaconda Installer boot.iso, it consists of a +library, pylorax, a set of templates, and the lorax script. Its operation +is driven by a customized set of Mako templates that lists the packages +to be installed, steps to execute to remove unneeded files, and creation +of the iso for all of the supported architectures. + + + + + + +Before Lorax +============ + +Tree building tools such as pungi and revisor rely on 'buildinstall' in +anaconda/scripts/ to produce the boot images and other such control files +in the final tree. The existing buildinstall scripts written in a mix of +bash and Python are unmaintainable. Lorax is an attempt to replace them +with something more flexible. + + +EXISTING WORKFLOW: + +pungi and other tools call scripts/buildinstall, which in turn call other +scripts to do the image building and data generation. Here's how it +currently looks: + + -> buildinstall + * process command line options + * write temporary yum.conf to point to correct repo + * find anaconda release RPM + * unpack RPM, pull in those versions of upd-instroot, mk-images, + maketreeinfo.py, makestamp.py, and buildinstall + + -> call upd-instroot + + -> call maketreeinfo.py + + -> call mk-images (which figures out which mk-images.ARCH to call) + + -> call makestamp.py + + * clean up + + +PROBLEMS: + +The existing workflow presents some problems with maintaining the scripts. +First, almost all knowledge of what goes in to the stage 1 and stage 2 +images lives in upd-instroot. The mk-images* scripts copy things from the +root created by upd-instroot in order to build the stage 1 image, though +it's not completely clear from reading the scripts. + + +NEW IDEAS: + +Create a new central driver with all information living in Python modules. +Configuration files will provide the knowledge previously contained in the +upd-instroot and mk-images* scripts. + + + diff --git a/f28-branch/_sources/intro.txt b/f28-branch/_sources/intro.txt new file mode 100644 index 00000000..01857ee9 --- /dev/null +++ b/f28-branch/_sources/intro.txt @@ -0,0 +1,67 @@ +Introduction to Lorax +===================== + +I am the Lorax. I speak for the trees [and images]. + +Lorax is used to build the Anaconda Installer boot.iso, it consists of a +library, pylorax, a set of templates, and the lorax script. Its operation +is driven by a customized set of Mako templates that lists the packages +to be installed, steps to execute to remove unneeded files, and creation +of the iso for all of the supported architectures. + + + + + + +Before Lorax +============ + +Tree building tools such as pungi and revisor rely on 'buildinstall' in +anaconda/scripts/ to produce the boot images and other such control files +in the final tree. The existing buildinstall scripts written in a mix of +bash and Python are unmaintainable. Lorax is an attempt to replace them +with something more flexible. + + +EXISTING WORKFLOW: + +pungi and other tools call scripts/buildinstall, which in turn call other +scripts to do the image building and data generation. Here's how it +currently looks: + + -> buildinstall + * process command line options + * write temporary yum.conf to point to correct repo + * find anaconda release RPM + * unpack RPM, pull in those versions of upd-instroot, mk-images, + maketreeinfo.py, makestamp.py, and buildinstall + + -> call upd-instroot + + -> call maketreeinfo.py + + -> call mk-images (which figures out which mk-images.ARCH to call) + + -> call makestamp.py + + * clean up + + +PROBLEMS: + +The existing workflow presents some problems with maintaining the scripts. +First, almost all knowledge of what goes in to the stage 1 and stage 2 +images lives in upd-instroot. The mk-images* scripts copy things from the +root created by upd-instroot in order to build the stage 1 image, though +it's not completely clear from reading the scripts. + + +NEW IDEAS: + +Create a new central driver with all information living in Python modules. +Configuration files will provide the knowledge previously contained in the +upd-instroot and mk-images* scripts. + + + diff --git a/f28-branch/_sources/livemedia-creator.rst.txt b/f28-branch/_sources/livemedia-creator.rst.txt new file mode 100644 index 00000000..94ae0ad1 --- /dev/null +++ b/f28-branch/_sources/livemedia-creator.rst.txt @@ -0,0 +1,639 @@ +livemedia-creator +================= + +:Authors: + Brian C. Lane + +livemedia-creator uses `Anaconda `_, +`kickstart `_ and `Lorax +`_ to create bootable media that use the +same install path as a normal system installation. It can be used to make live +isos, bootable (partitioned) disk images, tarfiles, and filesystem images for +use with virtualization and container solutions like libvirt, docker, and +OpenStack. + +The general idea is to use qemu with kickstart and an Anaconda boot.iso to +install into a disk image and then use the disk image to create the bootable +media. + +livemedia-creator --help will describe all of the options available. At the +minimum you need: + +``--make-iso`` to create a final bootable .iso or one of the other ``--make-*`` options. + +``--iso`` to specify the Anaconda install media to use with qemu. + +``--ks`` to select the kickstart file describing what to install. + +To use livemedia-creator with virtualization you will need to have qemu installed. + +If you are going to be using Anaconda directly, with ``--no-virt`` mode, make sure +you have the anaconda-tui package installed. + +Conventions used in this document: + +``lmc`` is an abbreviation for livemedia-creator. + +``builder`` is the system where livemedia-creator is being run + +``image`` is the disk image being created by running livemedia-creator + + +livemedia-creator cmdline arguments +----------------------------------- + +.. argparse:: + :ref: pylorax.cmdline.lmc_parser + :prog: livemedia-creator + + +Quickstart +---------- + +Run this to create a bootable live iso:: + + sudo livemedia-creator --make-iso \ + --iso=/extra/iso/boot.iso --ks=./docs/fedora-livemedia.ks + +You can run it directly from the lorax git repo like this:: + + sudo PATH=./src/sbin/:$PATH PYTHONPATH=./src/ ./src/sbin/livemedia-creator \ + --make-iso --iso=/extra/iso/boot.iso \ + --ks=./docs/fedora-livemedia.ks --lorax-templates=./share/ + +You can observe the installation using vnc. The logs will show what port was +chosen, or you can use a specific port by passing it. eg. ``--vnc vnc:127.0.0.1:5`` + +This is usually a good idea when testing changes to the kickstart. lmc tries +to monitor the logs for fatal errors, but may not catch everything. + + +How ISO creation works +---------------------- + +There are 2 stages, the install stage which produces a disk or filesystem image +as its output, and the boot media creation which uses the image as its input. +Normally you would run both stages, but it is possible to stop after the +install stage, by using ``--image-only``, or to skip the install stage and use +a previously created disk image by passing ``--disk-image`` or ``--fs-image`` + +When creating an iso qemu boots using the passed Anaconda installer iso +and installs the system based on the kickstart. The ``%post`` section of the +kickstart is used to customize the installed system in the same way that +current spin-kickstarts do. + +livemedia-creator monitors the install process for problems by watching the +install logs. They are written to the current directory or to the base +directory specified by the --logfile command. You can also monitor the install +by using a vnc client. This is recommended when first modifying a kickstart, +since there are still places where Anaconda may get stuck without the log +monitor catching it. + +The output from this process is a partitioned disk image. kpartx can be used +to mount and examine it when there is a problem with the install. It can also +be booted using kvm. + +When creating an iso the disk image's / partition is copied into a formatted +filesystem image which is then used as the input to lorax for creation of the +final media. + +The final image is created by lorax, using the templates in /usr/share/lorax/live/ +or the live directory below the directory specified by ``--lorax-templates``. The +templates are written using the Mako template system with some extra commands +added by lorax. + +.. note:: + The output from --make-iso includes the artifacts used to create the boot.iso; + the kernel, initrd, the squashfs filesystem, etc. If you only want the + boot.iso you can pass ``--iso-only`` and the other files will be removed. You + can also name the iso by using ``--iso-name my-live.iso``. + + +Kickstarts +---------- + +The docs/ directory includes several example kickstarts, one to create a live +desktop iso using GNOME, and another to create a minimal disk image. When +creating your own kickstarts you should start with the minimal example, it +includes several needed packages that are not always included by dependencies. + +Or you can use existing spin kickstarts to create live media with a few +changes. Here are the steps I used to convert the Fedora XFCE spin. + +1. Flatten the xfce kickstart using ksflatten +2. Add zerombr so you don't get the disk init dialog +3. Add clearpart --all +4. Add swap partition +5. bootloader target +6. Add shutdown to the kickstart +7. Add network --bootproto=dhcp --activate to activate the network + This works for F16 builds but for F15 and before you need to pass + something on the cmdline that activate the network, like sshd: + + ``livemedia-creator --kernel-args="sshd"`` + +8. Add a root password:: + + rootpw rootme + network --bootproto=dhcp --activate + zerombr + clearpart --all + bootloader --location=mbr + part swap --size=512 + shutdown + +9. In the livesys script section of the %post remove the root password. This + really depends on how the spin wants to work. You could add the live user + that you create to the %wheel group so that sudo works if you wanted to. + + ``passwd -d root > /dev/null`` + +10. Remove /etc/fstab in %post, dracut handles mounting the rootfs + + ``cat /dev/null > /dev/fstab`` + + Do this only for live iso's, the filesystem will be mounted read only if + there is no /etc/fstab + +11. Don't delete initramfs files from /boot in %post +12. When creating live iso's you need to have, at least, these packages in the %package section:: + dracut-config-generic + dracut-live + -dracut-config-rescue + grub-efi + memtest86+ + syslinux + +One drawback to using qemu is that it pulls the packages from the repo each +time you run it. To speed things up you either need a local mirror of the +packages, or you can use a caching proxy. When using a proxy you pass it to +livemedia-creator like this: + + ``--proxy=http://proxy.yourdomain.com:3128`` + +You also need to use a specific mirror instead of mirrormanager so that the +packages will get cached, so your kickstart url would look like: + + ``url --url="http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/"`` + +You can also add an update repo, but don't name it updates. Add --proxy to it +as well. + + +Anaconda image install (no-virt) +-------------------------------- + +You can create images without using qemu by passing ``--no-virt`` on the +cmdline. This will use Anaconda's directory install feature to handle the +install. There are a couple of things to keep in mind when doing this: + +1. It will be most reliable when building images for the same release that the + host is running. Because Anaconda has expectations about the system it is + running under you may encounter strange bugs if you try to build newer or + older releases. + +2. Make sure selinux is set to permissive or disabled. It won't install + correctly with selinux set to enforcing yet. + +3. It may totally trash your host. So far I haven't had this happen, but the + possibility exists that a bug in Anaconda could result in it operating on + real devices. I recommend running it in a virt or on a system that you can + afford to lose all data from. + +The logs from anaconda will be placed in an ./anaconda/ directory in either +the current directory or in the directory used for --logfile + +Example cmdline: + +``sudo livemedia-creator --make-iso --no-virt --ks=./fedora-livemedia.ks`` + +.. note:: + Using no-virt to create a partitioned disk image (eg. --make-disk or + --make-vagrant) will only create disks usable on the host platform (BIOS + or UEFI). You can create BIOS partitioned disk images on UEFI by using + virt. + + +AMI Images +---------- + +Amazon EC2 images can be created by using the --make-ami switch and an appropriate +kickstart file. All of the work to customize the image is handled by the kickstart. +The example currently included was modified from the cloud-kickstarts version so +that it would work with livemedia-creator. + +Example cmdline: + +``sudo livemedia-creator --make-ami --iso=/path/to/boot.iso --ks=./docs/fedora-livemedia-ec2.ks`` + +This will produce an ami-root.img file in the working directory. + +At this time I have not tested the image with EC2. Feedback would be welcome. + + +Appliance Creation +------------------ + +livemedia-creator can now replace appliance-tools by using the --make-appliance +switch. This will create the partitioned disk image and an XML file that can be +used with virt-image to setup a virtual system. + +The XML is generated using the Mako template from +/usr/share/lorax/appliance/libvirt.xml You can use a different template by +passing ``--app-template

_cJ${g+aMZuiB32zLpDMNwMAQ7;VZAh}1Ti~E9 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