Merge branch 'fedora-25'
6
Makefile
@ -58,10 +58,10 @@ iso-installer: iso-prepare
|
||||
mkdir -p work
|
||||
pushd work && pungi --name=Qubes $(PUNGI_OPTS) -c $(INSTALLER_KICKSTART) && popd
|
||||
# Move result files to known-named directories
|
||||
mkdir -p build/ISO/qubes-x86_64/iso build/work
|
||||
mkdir -p build/ISO/qubes-x86_64/iso
|
||||
mv work/$(ISO_VERSION)/x86_64/iso/*-DVD*.iso build/ISO/qubes-x86_64/iso/
|
||||
rm -rf build/work/$(ISO_VERSION)
|
||||
mv work/$(ISO_VERSION)/x86_64/os build/work/$(ISO_VERSION)
|
||||
rm -rf build/work
|
||||
mv work build/work
|
||||
chown --reference=Makefile -R build yum
|
||||
rm -rf work
|
||||
|
||||
|
@ -4,7 +4,6 @@ RPM_SPEC_FILES.dom0 := \
|
||||
lorax-templates-qubes/lorax-templates-qubes.spec \
|
||||
pungi/pungi.spec \
|
||||
anaconda/anaconda.spec \
|
||||
initial-setup-launcher/initial-setup-launcher.spec \
|
||||
qubes-anaconda-addon/qubes-anaconda-addon.spec \
|
||||
qubes-release/qubes-release.spec \
|
||||
qubes-release/qubes-dom0-dist-upgrade.spec
|
||||
|
14
anaconda/.coveragerc
Normal file
@ -0,0 +1,14 @@
|
||||
# http://nedbatchelder.com/code/coverage/config.html
|
||||
|
||||
[run]
|
||||
branch = True
|
||||
parallel = True
|
||||
source = ..
|
||||
|
||||
# used by coverage combine
|
||||
# when combining Jenkins and kickstart_tests data
|
||||
# doesn't affect combination of pyanaconda tests data
|
||||
[paths]
|
||||
source = .
|
||||
/usr/lib*/python*/site-packages/
|
||||
/usr/sbin/
|
161
anaconda/CONTRIBUTING
Normal file
@ -0,0 +1,161 @@
|
||||
How to Contribute to the Anaconda Installer (the short version)
|
||||
----------------------------------------------------------------
|
||||
|
||||
a) I want to contribute to the upstream Anaconda Installer (used in Fedora):
|
||||
- open a pull request for the ``<next Fedora number>-devel`` branch (f25-devel, etc.)
|
||||
- check the *Commit Messages* section below for how to format your commit messages
|
||||
|
||||
b) I want to contribute to the RHEL Anaconda installer:
|
||||
- open a pull request for the ``<RHEL number>-branch`` branch (rhel7-branch, etc.)
|
||||
- check the *Commits for RHEL Branches* section below for how to format your commit messages
|
||||
|
||||
If you want to contribute a change to both the upstream and RHEL Anaconda then follow both a) and b) separately.
|
||||
|
||||
Anaconda Installer Branching Policy (the long version)
|
||||
-------------------------------------------------------
|
||||
|
||||
The basic premise is that there are the following branches:
|
||||
- master
|
||||
- unstable
|
||||
- <next fedora number>-release
|
||||
- <next fedora number>-devel
|
||||
|
||||
``Master`` branch never waits for any release-related processes to take place. The spec file will remain there to track dependencies. ``Master`` branch is *not* associated with Fedora Rawhide builds anymore. Its purpose is to function purely as an upstream branch.
|
||||
|
||||
The ``unstable`` branch is used for making periodic Anaconda releases for Rawhide (or possibly anyone else wanting to taste the cutting edge).
|
||||
|
||||
Concerning current RHEL branches, they are too divergent to integrate into this scheme. Thus, commits are merged onto, and builds are done on the RHEL branches.
|
||||
In this case, two pull requests will very likely be needed:
|
||||
- one for the ``rhel<number>-branch``
|
||||
- one for the ``master`` or ``<fedora number>-devel`` branch (if the change is not RHEL only)
|
||||
|
||||
Releases
|
||||
---------
|
||||
|
||||
For specific Fedora version, the release process is as follows:
|
||||
- ``<next Fedora number>-devel`` is merged onto ``<next Fedora number>-release``
|
||||
- a release commit is made (which bumps version in spec file) & tagged
|
||||
|
||||
Concerning Fedora Rawhide, the release process is (very) slightly different:
|
||||
- master is merged onto the unstable branch
|
||||
- a release commit is made (which bumps version in spec file) & tagged
|
||||
|
||||
Concerning the ``<next Fedora number>`` branches (which could also be called ``next stable release`` if we wanted to decouple our versioning from Fedora in the future):
|
||||
- work which goes into the next Fedora goes to ``<next Fedora number>-devel``, which is periodically merged back to ``master``
|
||||
- this way we can easily see what was developed in which Fedora timeframe and possibly due to given Fedora testing phase feedback (bugfixes, etc.)
|
||||
- stuff we *don't* want to go to the next Fedora (too cutting edge, etc.) goes only to ``master`` branch
|
||||
- commits specific to a given Fedora release (temporary fixes, etc.) go only to the ``<next Fedora number>-release`` branch
|
||||
- the ``<next Fedora number>-release`` branch also contains release commits
|
||||
|
||||
Example for the F25 cycle
|
||||
--------------------------
|
||||
|
||||
- master
|
||||
- unstable
|
||||
- f25-devel
|
||||
- f25-release
|
||||
|
||||
This would continue until F25 is released, after which we:
|
||||
- drop the f25-devel branch
|
||||
- keep f25-release as an inactive record of the f25 cycle
|
||||
- branch f26-devel and f26-release from the master branch
|
||||
|
||||
This will result in the following branches for the F26 cycle:
|
||||
- master
|
||||
- unstable
|
||||
- f26-devel
|
||||
- f26-release
|
||||
|
||||
Guidelines for Commits
|
||||
-----------------------
|
||||
|
||||
Commit Messages
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
The first line should be a succinct description of what the commit does. If your commit is fixing a bug in Red Hat's bugzilla instance, you should add `` (#123456)`` to the end of the first line of the commit message. The next line should be blank, followed (optionally) by a more in-depth description of your changes. Here's an example:
|
||||
|
||||
Stop kickstart when space check fails
|
||||
|
||||
Text mode kickstart behavior was inconsistent, it would allow an
|
||||
installation to continue even though the space check failed. Every other
|
||||
install method stops, letting the user add more space before continuing.
|
||||
|
||||
Commits for RHEL Branches
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you are submitting a patch for any rhel-branch, the last line of your commit must identify the bugzilla bug id it fixes, using the ``Resolves`` or ``Related`` keyword, e.g.:
|
||||
``Resolves: rhbz#111111``
|
||||
|
||||
or
|
||||
|
||||
``Related: rhbz#1234567``
|
||||
|
||||
Use ``Resolves`` if the patch fixes the core issue which caused the bug.
|
||||
Use ``Related`` if the patch fixes an ancillary issue that is related to, but might not actually fix the bug.
|
||||
|
||||
Pull Request Review
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Please note that there is a minimum review period of 24 hours for any patch. The purpose of this rule is to ensure that all interested parties have an opportunity to review every patch. When posting a patch before or after a holiday break it is important to extend this period as appropriate.
|
||||
|
||||
All subsequent changes made to patches must be force-pushed to the PR branch before merging it into the main branch.
|
||||
|
||||
Merging examples
|
||||
----------------
|
||||
|
||||
Merging the Fedora ``devel`` branch back to the ``master`` branch
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
(Fedora 25 is used as an example, don't forget to use appropriate Fedora version.)
|
||||
|
||||
Checkout and pull the master branch:
|
||||
|
||||
``git checkout master``
|
||||
``git pull``
|
||||
|
||||
Merge the Fedora devel branch to the master branch:
|
||||
|
||||
``git merge --no-ff f25-devel``
|
||||
|
||||
Push the merge to the remote:
|
||||
|
||||
``git push origin master``
|
||||
|
||||
Merging a GitHub pull request
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
(Fedora 25 is used as an example, don't forget to use appropriate Fedora version.)
|
||||
|
||||
Press the green *Merge pull request* button on the pull request page.
|
||||
|
||||
If the pull request has been opened for:
|
||||
- master
|
||||
- f25-release
|
||||
- rhel7-branch
|
||||
Then you are done.
|
||||
|
||||
If the pull request has been opened for the ``f25-devel`` branch, then you also need to merge the ``f25-devel``
|
||||
branch back to ``master`` once you merge your pull request (see "Merging the Fedora devel branch back to the master branch" above).
|
||||
|
||||
Merging a topic branch manually
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
(Fedora 25 is used as an example, don't forget to use appropriate Fedora version.)
|
||||
|
||||
Let's say that there is a topic branch called "fix_foo_with_bar" that should be merged to a given Anaconda non-topic branch.
|
||||
|
||||
Checkout the given target branch, pull it and merge your topic branch into it:
|
||||
|
||||
``git checkout <target branch>``
|
||||
``git pull``
|
||||
``git merge --no-ff fix_foo_with_bar``
|
||||
|
||||
Then push the merge to the remote:
|
||||
|
||||
``git push origin <target branch>``
|
||||
|
||||
If the <target branch> was one of:
|
||||
- master
|
||||
- f25-release
|
||||
- rhel7-branch
|
||||
Then you are done.
|
||||
|
||||
If the pull request has been opened for the ``f25-devel`` branch, then you also need to merge the ``f25-devel``
|
||||
branch back to ``master`` once you merge your pull request (see "Merging the Fedora devel branch back to the master branch" above).
|
@ -14,39 +14,58 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = data docs dracut po pyanaconda scripts tests widgets utils
|
||||
|
||||
EXTRA_DIST = config.rpath COPYING
|
||||
EXTRA_DIST = COPYING .coveragerc
|
||||
|
||||
# Files generated for gettext need to be included in the distribution
|
||||
EXTRA_DIST += $(srcdir)/anaconda.po
|
||||
$(srcdir)/anaconda.po: $(srcdir)/anaconda
|
||||
@$(MAKE) -C $(top_builddir)/po $(abs_top_srcdir)/$(subdir)/$$(basename $@)
|
||||
# Include the xgettext wrapper so pot-update can be run from the source distribution
|
||||
# This is needed for make distcheck.
|
||||
EXTRA_DIST += $(srcdir)/translation-canary/xgettext_werror.sh
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \
|
||||
depcomp install-sh ltmain.sh missing ABOUT-NLS \
|
||||
INSTALL aclocal.m4 configure *.pyc py-compile \
|
||||
m4/* config.rpath po/Makefile.in.in po/Rules-quot \
|
||||
m4/* po/Makefile.in.in po/Rules-quot \
|
||||
test-driver
|
||||
|
||||
CLEANFILES = *~
|
||||
|
||||
dist_noinst_DATA = $(PACKAGE_NAME).spec
|
||||
|
||||
dist_sbin_SCRIPTS = anaconda
|
||||
dist_sbin_SCRIPTS = anaconda.py
|
||||
|
||||
install-exec-hook:
|
||||
cd $(DESTDIR)$(sbindir) && mv anaconda.py anaconda
|
||||
|
||||
uninstall-hook:
|
||||
-cd $(DESTDIR)$(sbindir) && rm -f anaconda
|
||||
|
||||
ARCHIVE_TAG = $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)
|
||||
|
||||
ZANATA_PULL_ARGS = --transdir $(srcdir)/po/
|
||||
ZANATA_PUSH_ARGS = --srcdir $(srcdir)/po/ --push-type source --force
|
||||
ZANATA_PUSH_ARGS = --srcfile $(srcdir)/po/anaconda.pot --push-type source --force
|
||||
|
||||
RC_RELEASE ?= $(shell date -u +0.1.%Y%m%d%H%M%S)
|
||||
MOCKCHROOT ?= fedora-rawhide-$(shell uname -m)
|
||||
MOCKCHROOT ?= fedora-25-$(shell uname -m)
|
||||
|
||||
COVERAGE ?= coverage3
|
||||
USER_SITE_BASE ?= $(abs_top_builddir)/python-site
|
||||
USER_SITE_PACKAGES ?= $(shell PYTHONUSERBASE=$(USER_SITE_BASE) $(PYTHON) -m site --user-site)
|
||||
|
||||
# If translations are present, run tests on the .po files before tarring them
|
||||
# up. Use a weird looking loop because shell doesn't have a good way to test
|
||||
# for a wildcard
|
||||
dist-hook:
|
||||
for p in $(distdir)/po/*.po ; do \
|
||||
if [ -e "$$p" ]; then \
|
||||
PYTHONPATH=$(srcdir)/translation-canary python3 -m translation_canary.translated \
|
||||
--release $(distdir)/po ; \
|
||||
fi ; \
|
||||
break ; \
|
||||
done
|
||||
|
||||
tag:
|
||||
@git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG)
|
||||
@ -54,20 +73,16 @@ tag:
|
||||
|
||||
po-pull:
|
||||
rpm -q zanata-python-client &>/dev/null || ( echo "need to run: dnf install zanata-python-client"; exit 1 )
|
||||
zanata pull $(ZANATA_PULL_ARGS)
|
||||
( cd $(srcdir) && zanata pull $(ZANATA_PULL_ARGS) )
|
||||
|
||||
po-empty:
|
||||
for lingua in $$(grep -v '^#' $(srcdir)/po/LINGUAS) ; do \
|
||||
[ -f $(srcdir)/po/$$lingua.po ] || \
|
||||
msginit -i $(srcdir)/po/$(PACKAGE_NAME).pot -o $(srcdir)/po/$$lingua.po --no-translator || \
|
||||
exit 1 ; \
|
||||
done
|
||||
# Try to fetch translations, but if that fails just keep going
|
||||
po-fallback:
|
||||
-$(MAKE) po-pull
|
||||
|
||||
scratch: po-empty
|
||||
scratch:
|
||||
$(MAKE) ARCHIVE_TAG=HEAD dist
|
||||
git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
|
||||
|
||||
scratch-bumpver: po-empty
|
||||
scratch-bumpver:
|
||||
@opts="-S -n $(PACKAGE_NAME) -v $(PACKAGE_VERSION) -r $(PACKAGE_RELEASE) -b $(PACKAGE_BUGREPORT) --newrelease $(RC_RELEASE)" ; \
|
||||
if [ ! -z "$(IGNORE)" ]; then \
|
||||
opts="$${opts} -i $(IGNORE)" ; \
|
||||
@ -82,7 +97,7 @@ scratch-bumpver: po-empty
|
||||
$(MAKE) -C po $(PACKAGE_NAME).pot-update
|
||||
|
||||
release:
|
||||
$(MAKE) dist && $(MAKE) tag && git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
|
||||
$(MAKE) dist && $(MAKE) tag
|
||||
|
||||
rc-release: scratch-bumpver scratch
|
||||
mock -r $(MOCKCHROOT) --scrub all || exit 1
|
||||
@ -105,6 +120,7 @@ bumpver: po-pull
|
||||
fi ; \
|
||||
( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
|
||||
$(MAKE) -C po $(PACKAGE_NAME).pot-update && \
|
||||
rm $(srcdir)/po/{main,extra}.pot
|
||||
zanata push $(ZANATA_PUSH_ARGS)
|
||||
|
||||
# Install all packages specified as BuildRequires in the Anaconda specfile
|
||||
@ -117,7 +133,8 @@ install-buildrequires:
|
||||
if ! [[ $$(uname -m) =~ s390x? ]]; then \
|
||||
pkglist=$$(echo "$$pkglist" | grep -v s390utils) ; \
|
||||
fi ; \
|
||||
dnf install $$pkglist
|
||||
extra_pkgs="gettext-devel libtool glibc-langpack-en python3-pocketlint" ; \
|
||||
dnf install $$pkglist $$extra_pkgs
|
||||
|
||||
# Install all packages specified as Requires in the Anaconda specfile
|
||||
# -> installs packages needed to run Anaconda and the Anaconda unit tests
|
||||
@ -127,6 +144,14 @@ install-requires:
|
||||
: $${srcdir:=.} && \
|
||||
dnf install $$(grep ^Requires: $${srcdir}/anaconda.spec.in | grep -v %{name} | cut -d ' ' -f 2 | grep -v ^anaconda)
|
||||
|
||||
# Install all packages required for running the tests
|
||||
install-test-requires: install-buildrequires install-requires
|
||||
dnf install bzip2 cppcheck \
|
||||
lorax mock parallel rpm-ostree virt-install pykickstart spin-kickstarts \
|
||||
python3-rpmfluff python3-mock python3-pocketlint python3-nose-testconfig \
|
||||
python3-sphinx_rtd_theme libvirt-python3 python3-lxml python3-dogtail \
|
||||
qemu-img
|
||||
|
||||
# Generate an updates.img based on the changed files since the release
|
||||
# was tagged. Updates are copied to ./updates-img and then the image is
|
||||
# created. By default, the updates subdirectory is removed after the
|
||||
@ -144,7 +169,6 @@ updates:
|
||||
runglade:
|
||||
ANACONDA_DATA=$(srcdir)/data \
|
||||
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
|
||||
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
|
||||
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||
@ -155,10 +179,43 @@ runglade:
|
||||
glade ${GLADE_FILE}
|
||||
|
||||
ci: rc-release
|
||||
$(MAKE) -C utils/dd
|
||||
$(MAKE) TMPDIR=/var/tmp check
|
||||
@sudo $(MAKE) TMPDIR=/var/tmp TESTS=nosetests_root.sh check
|
||||
@rm -f tests/test-suite.log.*
|
||||
@mkdir -p $(USER_SITE_PACKAGES)
|
||||
@cp $(abs_builddir)/tests/usercustomize.py $(USER_SITE_PACKAGES)
|
||||
$(MAKE)
|
||||
$(MAKE) TMPDIR=/var/tmp COVERAGE_PROCESS_START=$(abs_builddir)/.coveragerc \
|
||||
TEST_SUITE_LOG=test-suite.log.$$$$ PYTHONUSERBASE=$(USER_SITE_BASE) check
|
||||
@tail -n 1 tests/gettext_tests/*.log > tests/gettext_tests/gettext_tests.log
|
||||
@sudo $(MAKE) TMPDIR=/var/tmp COVERAGE_PROCESS_START=$(abs_builddir)/.coveragerc \
|
||||
TEST_SUITE_LOG=test-suite.log.$$$$ TESTS=nosetests_root.sh \
|
||||
PYTHONUSERBASE=$(USER_SITE_BASE) check
|
||||
@mkdir -p repo
|
||||
@mv *rpm repo
|
||||
@createrepo -p repo
|
||||
@sudo $(MAKE) TMPDIR=/var/tmp TESTS=install/run_install_test.sh TEST_ANACONDA_REPO=file://$(abs_builddir)/repo/ check
|
||||
@createrepo_c -p repo
|
||||
@sudo $(MAKE) TMPDIR=/var/tmp COVERAGE_PROCESS_START=$(abs_builddir)/.coveragerc \
|
||||
TEST_SUITE_LOG=test-suite.log.$$$$ TESTS=install/run_install_test.sh \
|
||||
TEST_ANACONDA_REPO=file://$(abs_builddir)/repo/ PYTHONUSERBASE=$(USER_SITE_BASE) check
|
||||
@cat tests/test-suite.log.* > tests/test-suite.log
|
||||
@rm -f tests/test-suite.log.*
|
||||
@rm -rf $(USER_SITE_BASE)
|
||||
$(MAKE) coverage-report
|
||||
|
||||
test-gui:
|
||||
@rm -f tests/test-suite.log
|
||||
@rm -rf tests/autogui-results-*/
|
||||
@mkdir -p $(USER_SITE_PACKAGES)
|
||||
@cp $(abs_builddir)/tests/usercustomize.py $(USER_SITE_PACKAGES)
|
||||
$(MAKE) -C pyanaconda/isys
|
||||
sudo COVERAGE_PROCESS_START=$(abs_builddir)/.coveragerc \
|
||||
PYTHONPATH=$(builddir)/pyanaconda/isys/.libs \
|
||||
PYTHONUSERBASE=$(USER_SITE_BASE) \
|
||||
$(abs_builddir)/tests/run_gui_tests.sh >tests/test-suite.log 2>&1
|
||||
@rm -rf $(USER_SITE_BASE)
|
||||
@cat tests/test-suite.log
|
||||
@mv .coverage.* tests/
|
||||
$(MAKE) coverage-report
|
||||
|
||||
coverage-report:
|
||||
$(COVERAGE) combine tests/.coverage.*
|
||||
$(COVERAGE) report --omit "tests/*" > tests/coverage-report.log
|
||||
@cat tests/coverage-report.log
|
||||
|
@ -14,8 +14,6 @@ dnl GNU Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public License
|
||||
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
dnl Author: David Shea <dshea@redhat.com>
|
||||
|
||||
dnl ANACONDA_SOFT_FAILURE(MESSAGE)
|
||||
dnl
|
||||
|
@ -18,34 +18,33 @@
|
||||
# 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): Brent Fox <bfox@redhat.com>
|
||||
# Mike Fulbright <msf@redhat.com>
|
||||
# Jakub Jelinek <jakub@redhat.com>
|
||||
# Jeremy Katz <katzj@redhat.com>
|
||||
# Chris Lumens <clumens@redhat.com>
|
||||
# Paul Nasrat <pnasrat@redhat.com>
|
||||
# Erik Troan <ewt@rpath.com>
|
||||
# Matt Wilson <msw@rpath.com>
|
||||
#
|
||||
|
||||
# This toplevel file is a little messy at the moment... (2001-06-22)
|
||||
# ...still messy (2013-07-12)
|
||||
|
||||
import os
|
||||
import site
|
||||
|
||||
coverage = None
|
||||
|
||||
# If we get a signal immediately after starting that would be pretty messed up
|
||||
proc_cmdline = open("/proc/cmdline", "r").read() # pylint: disable=interruptible-system-call
|
||||
proc_cmdline = open("/proc/cmdline", "r").read()
|
||||
proc_cmdline = proc_cmdline.split()
|
||||
if ("debug=1" in proc_cmdline) or ("debug" in proc_cmdline):
|
||||
if ("inst.debug=1" in proc_cmdline) or ("inst.debug" in proc_cmdline):
|
||||
import coverage
|
||||
pyanaconda_dir = "pyanaconda"
|
||||
for sitepkg in site.getsitepackages():
|
||||
possible_dir = os.path.join(sitepkg, "pyanaconda")
|
||||
if os.path.isdir(possible_dir):
|
||||
pyanaconda_dir = possible_dir
|
||||
break
|
||||
cov = coverage.coverage(data_file="/mnt/sysimage/root/anaconda.coverage",
|
||||
branch=True,
|
||||
source=["/usr/sbin/anaconda", "pyanaconda"]
|
||||
source=["/usr/sbin/anaconda", pyanaconda_dir]
|
||||
)
|
||||
cov.start()
|
||||
|
||||
|
||||
import atexit, sys, os, time, signal
|
||||
import atexit, sys, time, signal
|
||||
import pid
|
||||
|
||||
def exitHandler(rebootData, storage):
|
||||
@ -68,16 +67,6 @@ def exitHandler(rebootData, storage):
|
||||
while True:
|
||||
time.sleep(10000)
|
||||
|
||||
if image_count or flags.dirInstall:
|
||||
anaconda.storage.umountFilesystems(swapoff=False)
|
||||
devicetree = anaconda.storage.devicetree
|
||||
devicetree.teardownAll()
|
||||
for imageName in devicetree.diskImages:
|
||||
dev = devicetree.getDeviceByName(imageName)
|
||||
for loop in dev.parents:
|
||||
loop.controllable = True
|
||||
dev.deactivate(recursive=True)
|
||||
|
||||
if anaconda.dbus_inhibit_id:
|
||||
from pyanaconda.screensaver import uninhibit_screensaver
|
||||
uninhibit_screensaver(anaconda.dbus_session_connection, anaconda.dbus_inhibit_id)
|
||||
@ -87,6 +76,16 @@ def exitHandler(rebootData, storage):
|
||||
if anaconda.payload:
|
||||
anaconda.payload.unsetup()
|
||||
|
||||
if image_count or flags.dirInstall:
|
||||
anaconda.storage.umount_filesystems(swapoff=False)
|
||||
devicetree = anaconda.storage.devicetree
|
||||
devicetree.teardown_all()
|
||||
for imageName in devicetree.disk_images:
|
||||
dev = devicetree.get_device_by_name(imageName)
|
||||
for loop in dev.parents:
|
||||
loop.controllable = True
|
||||
dev.deactivate(recursive=True)
|
||||
|
||||
# Clean up the PID file
|
||||
if pidfile:
|
||||
pidfile.close()
|
||||
@ -94,23 +93,22 @@ def exitHandler(rebootData, storage):
|
||||
if not flags.imageInstall and not flags.livecdInstall \
|
||||
and not flags.dirInstall:
|
||||
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT
|
||||
from pyanaconda.iutil import dracut_eject, get_mount_paths, execWithRedirect
|
||||
|
||||
if flags.eject or rebootData.eject:
|
||||
for cdrom in storage.devicetree.getDevicesByType("cdrom"):
|
||||
if get_mount_paths(cdrom.path):
|
||||
dracut_eject(cdrom.path)
|
||||
for cdrom in (d for d in storage.devices if d.type == "cdrom"):
|
||||
if iutil.get_mount_paths(cdrom.path):
|
||||
iutil.dracut_eject(cdrom.path)
|
||||
|
||||
if flags.kexec:
|
||||
execWithRedirect("systemctl", ["--no-wall", "kexec"])
|
||||
iutil.execWithRedirect("systemctl", ["--no-wall", "kexec"])
|
||||
while True:
|
||||
time.sleep(10000)
|
||||
elif rebootData.action == KS_SHUTDOWN:
|
||||
execWithRedirect("systemctl", ["--no-wall", "poweroff"])
|
||||
iutil.execWithRedirect("systemctl", ["--no-wall", "poweroff"])
|
||||
elif rebootData.action == KS_WAIT:
|
||||
execWithRedirect("systemctl", ["--no-wall", "halt"])
|
||||
iutil.execWithRedirect("systemctl", ["--no-wall", "halt"])
|
||||
else: # reboot action is KS_REBOOT or None
|
||||
execWithRedirect("systemctl", ["--no-wall", "reboot"])
|
||||
iutil.execWithRedirect("systemctl", ["--no-wall", "reboot"])
|
||||
|
||||
def startSpiceVDAgent():
|
||||
status = iutil.execWithRedirect("spice-vdagent", [])
|
||||
@ -139,10 +137,11 @@ def doStartupX11Actions():
|
||||
# fingers crossed.
|
||||
# Add XDG_DATA_DIRS to the environment to pull in our overridden schema
|
||||
# files.
|
||||
datadir = os.environ.get('ANACONDA_DATADIR', '/usr/share/anaconda')
|
||||
if 'XDG_DATA_DIRS' in os.environ:
|
||||
xdg_data_dirs = '/usr/share/anaconda/window-manager:' + os.environ['XDG_DATA_DIRS']
|
||||
xdg_data_dirs = datadir + '/window-manager:' + os.environ['XDG_DATA_DIRS']
|
||||
else:
|
||||
xdg_data_dirs = '/usr/share/anaconda/window-manager:/usr/share'
|
||||
xdg_data_dirs = datadir + '/window-manager:/usr/share'
|
||||
|
||||
childproc = iutil.startProgram(["metacity", "--display", ":1", "--sm-disable"],
|
||||
env_add={'XDG_DATA_DIRS': xdg_data_dirs})
|
||||
@ -164,12 +163,20 @@ def doExtraX11Actions(runres):
|
||||
|
||||
set_x_resolution(runres)
|
||||
|
||||
# Load the system-wide Xresources
|
||||
iutil.execWithRedirect("xrdb",
|
||||
["-nocpp", "-merge", "/etc/X11/Xresources"])
|
||||
|
||||
startSpiceVDAgent()
|
||||
|
||||
def setupPythonUpdates():
|
||||
from distutils.sysconfig import get_python_lib
|
||||
import gi.overrides
|
||||
|
||||
if "ANACONDA_WIDGETS_OVERRIDES" in os.environ:
|
||||
for p in os.environ["ANACONDA_WIDGETS_OVERRIDES"].split(":"):
|
||||
gi.overrides.__path__.insert(0, os.path.abspath(p))
|
||||
|
||||
# Temporary hack for F18 alpha to symlink updates and product directories
|
||||
# into tmpfs. To be removed after beta in order to directly use content
|
||||
# from /run/install/ -- JLK
|
||||
@ -234,145 +241,8 @@ def getAnacondaVersionString():
|
||||
|
||||
|
||||
def parseArguments(argv=None, boot_cmdline=None):
|
||||
from pyanaconda.anaconda_argparse import AnacondaArgumentParser
|
||||
from pyanaconda.anaconda_argparse import HelpTextParser
|
||||
|
||||
datadir = os.environ.get("ANACONDA_DATADIR", "/usr/share/anaconda")
|
||||
|
||||
# NOTE: for each long option (like '--repo'), AnacondaOptionParser
|
||||
# checks the boot arguments for bootarg_prefix+option ('inst.repo').
|
||||
# If require_prefix is False, it also accepts the option without the
|
||||
# bootarg_prefix ('repo').
|
||||
# See anaconda_optparse.py and BootArgs (in flags.py) for details.
|
||||
ap = AnacondaArgumentParser(bootarg_prefix="inst.", require_prefix=False)
|
||||
help_parser = HelpTextParser(os.path.join(datadir, "anaconda_options.txt"))
|
||||
|
||||
# NOTE: store_false options will *not* get negated when the user does
|
||||
# "option=0" on the boot commandline (store_true options do, though).
|
||||
# Basically, don't use store_false unless the option starts with "no".
|
||||
|
||||
# YET ANOTHER NOTE: If you change anything here:
|
||||
# a) document its usage in docs/boot-options.txt
|
||||
# b) be prepared to maintain it for a very long time
|
||||
# If this seems like too much trouble, *don't add a new option*!
|
||||
|
||||
# Version
|
||||
ap.add_argument('--version', action='version', version="%(prog)s " + getAnacondaVersionString())
|
||||
|
||||
# Interface
|
||||
ap.add_argument("-C", "--cmdline", dest="display_mode", action="store_const", const="c",
|
||||
default="g", help=help_parser.help_text("cmdline"))
|
||||
ap.add_argument("-G", "--graphical", dest="display_mode", action="store_const", const="g",
|
||||
help=help_parser.help_text("graphical"))
|
||||
ap.add_argument("-T", "--text", dest="display_mode", action="store_const", const="t",
|
||||
help=help_parser.help_text("text"))
|
||||
|
||||
# Network
|
||||
ap.add_argument("--proxy", metavar='PROXY_URL', help=help_parser.help_text("proxy"))
|
||||
|
||||
# Method of operation
|
||||
ap.add_argument("-d", "--debug", dest="debug", action="store_true",
|
||||
default=False, help=help_parser.help_text("debug"))
|
||||
ap.add_argument("--ks", dest="ksfile", action="store_const",
|
||||
metavar="KICKSTART_URL", const="/run/install/ks.cfg",
|
||||
help=help_parser.help_text("ks"))
|
||||
ap.add_argument("--kickstart", dest="ksfile", metavar="KICKSTART_PATH",
|
||||
help=help_parser.help_text("kickstart"))
|
||||
ap.add_argument("--rescue", dest="rescue", action="store_true", default=False,
|
||||
help=help_parser.help_text("rescue"))
|
||||
ap.add_argument("--armplatform", dest="armPlatform", type=str, metavar="PLATFORM_ID",
|
||||
help=help_parser.help_text("armplatform"))
|
||||
ap.add_argument("--multilib", dest="multiLib", action="store_true", default=False,
|
||||
help=help_parser.help_text("multilib"))
|
||||
|
||||
ap.add_argument("-m", "--method", dest="method", default=None, metavar="METHOD",
|
||||
help=help_parser.help_text("method"))
|
||||
ap.add_argument("--askmethod", dest="askmethod", action="store_true", default=False,
|
||||
help=help_parser.help_text("askmethod"))
|
||||
ap.add_argument("--repo", dest="method", default=None, metavar="REPO_URL",
|
||||
help=help_parser.help_text("repo"))
|
||||
ap.add_argument("--stage2", dest="stage2", default=None, metavar="STAGE2_URL",
|
||||
help=help_parser.help_text("stage2"))
|
||||
ap.add_argument("--noverifyssl", action="store_true", default=False,
|
||||
help=help_parser.help_text("noverifyssl"))
|
||||
ap.add_argument("--liveinst", action="store_true", default=False,
|
||||
help=help_parser.help_text("liveinst"))
|
||||
|
||||
# Display
|
||||
ap.add_argument("--resolution", dest="runres", default=None, metavar="WIDTHxHEIGHT",
|
||||
help=help_parser.help_text("resolution"))
|
||||
ap.add_argument("--usefbx", dest="xdriver", action="store_const", const="fbdev",
|
||||
help=help_parser.help_text("usefbx"))
|
||||
ap.add_argument("--vnc", action="store_true", default=False,
|
||||
help=help_parser.help_text("vnc"))
|
||||
ap.add_argument("--vncconnect", metavar="HOST:PORT", help=help_parser.help_text("vncconnect"))
|
||||
ap.add_argument("--vncpassword", default="", metavar="PASSWORD",
|
||||
help=help_parser.help_text("vncpassword"))
|
||||
ap.add_argument("--xdriver", dest="xdriver", action="store", type=str,
|
||||
default=None, metavar="DRIVER", help=help_parser.help_text("xdriver"))
|
||||
|
||||
# Language
|
||||
ap.add_argument("--keymap", metavar="KEYMAP", help=help_parser.help_text("keymap"))
|
||||
ap.add_argument("--lang", metavar="LANG", help=help_parser.help_text("lang"))
|
||||
|
||||
# Obvious
|
||||
ap.add_argument("--loglevel", metavar="LEVEL", help=help_parser.help_text("loglevel"))
|
||||
ap.add_argument("--syslog", metavar="HOST[:PORT]", help=help_parser.help_text("syslog"))
|
||||
ap.add_argument("--remotelog", metavar="HOST:PORT", help=help_parser.help_text("remotelog"))
|
||||
|
||||
from pykickstart.constants import SELINUX_DISABLED, SELINUX_ENFORCING
|
||||
from pyanaconda.constants import SELINUX_DEFAULT
|
||||
ap.add_argument("--noselinux", dest="selinux", action="store_const",
|
||||
const=SELINUX_DISABLED, default=SELINUX_DEFAULT,
|
||||
help=help_parser.help_text("noselinux"))
|
||||
ap.add_argument("--selinux", action="store_const",
|
||||
const=SELINUX_ENFORCING, help=help_parser.help_text("selinux"))
|
||||
|
||||
ap.add_argument("--nompath", dest="mpath", action="store_false", default=True,
|
||||
help=help_parser.help_text("nompath"))
|
||||
ap.add_argument("--mpath", action="store_true", help=help_parser.help_text("mpath"))
|
||||
|
||||
ap.add_argument("--nodmraid", dest="dmraid", action="store_false", default=True,
|
||||
help=help_parser.help_text("nodmraid"))
|
||||
ap.add_argument("--dmraid", action="store_true", help=help_parser.help_text("dmraid"))
|
||||
|
||||
ap.add_argument("--noibft", dest="ibft", action="store_false", default=True,
|
||||
help=help_parser.help_text("noibft"))
|
||||
ap.add_argument("--ibft", action="store_true", help=help_parser.help_text("ibft"))
|
||||
|
||||
# Geolocation
|
||||
ap.add_argument("--geoloc", metavar="PROVIDER_ID", help=help_parser.help_text("geoloc"))
|
||||
|
||||
# Miscellaneous
|
||||
ap.add_argument("--nomount", dest="rescue_nomount", action="store_true", default=False,
|
||||
help=help_parser.help_text("nomount"))
|
||||
ap.add_argument("--updates", dest="updateSrc", action="store", type=str,
|
||||
metavar="UPDATES_URL", help=help_parser.help_text("updates"))
|
||||
ap.add_argument("--image", action="append", dest="images", default=[],
|
||||
metavar="IMAGE_SPEC", help=help_parser.help_text("image"))
|
||||
ap.add_argument("--dirinstall", nargs="?", const=True, default=False,
|
||||
help=help_parser.help_text("dirinstall"))
|
||||
ap.add_argument("--memcheck", action="store_true", default=True,
|
||||
help=help_parser.help_text("memcheck"))
|
||||
ap.add_argument("--nomemcheck", action="store_false", dest="memcheck",
|
||||
help=help_parser.help_text("nomemcheck"))
|
||||
ap.add_argument("--leavebootorder", action="store_true", default=False,
|
||||
help=help_parser.help_text("leavebootorder"))
|
||||
ap.add_argument("--noeject", action="store_false", dest="eject", default=True,
|
||||
help=help_parser.help_text("noeject"))
|
||||
ap.add_argument("--extlinux", action="store_true", default=False,
|
||||
help=help_parser.help_text("extlinux"))
|
||||
ap.add_argument("--nombr", action="store_true", default=False,
|
||||
help=help_parser.help_text("nombr"))
|
||||
ap.add_argument("--mpathfriendlynames", action="store_true", default=True,
|
||||
help=help_parser.help_text("mpathfriendlynames"))
|
||||
ap.add_argument("--kexec", action="store_true", default=False,
|
||||
help=help_parser.help_text("kexec"))
|
||||
|
||||
# some defaults change based on cmdline flags
|
||||
if boot_cmdline is not None:
|
||||
if "console" in boot_cmdline:
|
||||
ap.set_defaults(display_mode="t")
|
||||
from pyanaconda.anaconda_argparse import getArgumentParser
|
||||
ap = getArgumentParser(getAnacondaVersionString(), boot_cmdline)
|
||||
|
||||
namespace = ap.parse_args(argv, boot_cmdline=boot_cmdline)
|
||||
return (namespace, ap.deprecated_bootargs)
|
||||
@ -456,7 +326,6 @@ def gtk_warning(title, reason):
|
||||
# pylint: disable=redefined-outer-name
|
||||
def check_memory(anaconda, options, display_mode=None):
|
||||
from pyanaconda import isys
|
||||
from pyanaconda.iutil import persistent_root_image
|
||||
|
||||
reason_strict = _("%(product_name)s requires %(needed_ram)s MB of memory to "
|
||||
"install, but you only have %(total_ram)s MB on this machine.\n")
|
||||
@ -464,7 +333,7 @@ def check_memory(anaconda, options, display_mode=None):
|
||||
"MB of memory, but you only have %(total_ram)s MB\n.")
|
||||
|
||||
reboot_extra = _('\n'
|
||||
'Press <return> to reboot your system.\n')
|
||||
'Press [Enter] to reboot your system.\n')
|
||||
livecd_title = _("Not enough RAM")
|
||||
livecd_extra = _(" Try the text mode installer by running:\n\n"
|
||||
"'/usr/bin/liveinst -T'\n\n from a root "
|
||||
@ -478,12 +347,12 @@ def check_memory(anaconda, options, display_mode=None):
|
||||
display_mode = anaconda.displayMode
|
||||
|
||||
reason = reason_strict
|
||||
total_ram = int(isys.total_memory())
|
||||
total_ram = int(isys.total_memory() / 1024)
|
||||
needed_ram = int(isys.MIN_RAM)
|
||||
graphical_ram = int(isys.MIN_GUI_RAM)
|
||||
|
||||
# count the squashfs.img in if it is kept in RAM
|
||||
if not persistent_root_image():
|
||||
if not iutil.persistent_root_image():
|
||||
needed_ram += isys.SQUASHFS_EXTRA_RAM
|
||||
graphical_ram += isys.SQUASHFS_EXTRA_RAM
|
||||
|
||||
@ -552,7 +421,7 @@ def setupDisplay(anaconda, options, addons=None):
|
||||
vncS.anaconda = anaconda
|
||||
|
||||
anaconda.displayMode = options.display_mode
|
||||
anaconda.isHeadless = arch.isS390()
|
||||
anaconda.isHeadless = arch.is_s390()
|
||||
|
||||
if options.vnc:
|
||||
flags.usevnc = True
|
||||
@ -743,7 +612,7 @@ def prompt_for_ssh():
|
||||
if connxinfo:
|
||||
stdoutLog.info(_("Please ssh install@%s to begin the install."), connxinfo)
|
||||
else:
|
||||
stdoutLog.info(_("Please ssh install@<host> to continue installation."))
|
||||
stdoutLog.info(_("Please ssh install@HOSTNAME to continue installation."))
|
||||
|
||||
def cleanPStore():
|
||||
"""remove files stored in nonvolatile ram created by the pstore subsystem"""
|
||||
@ -753,8 +622,7 @@ def cleanPStore():
|
||||
# is sufficient free space on the flash part. On some machines this will
|
||||
# take effect immediately, which is the best case. Unfortunately on some,
|
||||
# an intervening reboot is needed."""
|
||||
from pyanaconda.iutil import dir_tree_map
|
||||
dir_tree_map("/sys/fs/pstore", os.unlink, files=True, dirs=False)
|
||||
iutil.dir_tree_map("/sys/fs/pstore", os.unlink, files=True, dirs=False)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# check if the CLI help is requested and return it at once,
|
||||
@ -792,6 +660,7 @@ if __name__ == "__main__":
|
||||
from pyanaconda import constants
|
||||
from pyanaconda.addons import collect_addon_paths
|
||||
from pyanaconda import geoloc
|
||||
from pyanaconda import iutil
|
||||
|
||||
# do this early so we can set flags before initializing logging
|
||||
from pyanaconda.flags import flags, can_touch_runtime_system
|
||||
@ -818,6 +687,16 @@ if __name__ == "__main__":
|
||||
stdoutLog.error("anaconda must be run as root.")
|
||||
sys.exit(1)
|
||||
|
||||
# check if input kickstart should be saved
|
||||
if flags.nosave_input_ks:
|
||||
log.warning("Input kickstart will not be saved to the installed system due to the nosave option.")
|
||||
iutil.touch('/tmp/NOSAVE_INPUT_KS')
|
||||
|
||||
# check if logs should be saved
|
||||
if flags.nosave_logs:
|
||||
log.warning("Installation logs will not be saved to the installed system due to the nosave option.")
|
||||
iutil.touch('/tmp/NOSAVE_LOGS')
|
||||
|
||||
# see if we're on s390x and if we've got an ssh connection
|
||||
uname = os.uname()
|
||||
if uname[4] == 's390x':
|
||||
@ -840,19 +719,19 @@ if __name__ == "__main__":
|
||||
|
||||
from pyanaconda import isys
|
||||
|
||||
from pyanaconda import iutil
|
||||
|
||||
iutil.ipmi_report(constants.IPMI_STARTED)
|
||||
|
||||
if (opts.images or opts.dirinstall) and opts.liveinst:
|
||||
stdoutLog.error("--liveinst cannot be used with --images or --dirinstall")
|
||||
iutil.ipmi_report(constants.IPMI_ABORTED)
|
||||
sys.exit(1)
|
||||
|
||||
if opts.images and opts.dirinstall:
|
||||
stdoutLog.error("--images and --dirinstall cannot be used at the same time")
|
||||
iutil.ipmi_report(constants.IPMI_ABORTED)
|
||||
sys.exit(1)
|
||||
elif opts.dirinstall:
|
||||
if opts.dirinstall is True:
|
||||
root_path = os.environ.get("ANACONDA_ROOT_PATH", "/mnt/sysimage")
|
||||
else:
|
||||
root_path = opts.dirinstall
|
||||
root_path = opts.dirinstall
|
||||
iutil.setTargetPhysicalRoot(root_path)
|
||||
iutil.setSysroot(root_path)
|
||||
|
||||
@ -861,7 +740,6 @@ if __name__ == "__main__":
|
||||
from pyanaconda import ntp
|
||||
from pyanaconda import keyboard
|
||||
from pyanaconda.iutil import ProxyString, ProxyStringError
|
||||
from pyanaconda.iutil import open # pylint: disable=redefined-builtin
|
||||
|
||||
verdesc = "%s for %s %s" % (getAnacondaVersionString(),
|
||||
product.productName, product.productVersion)
|
||||
@ -888,7 +766,7 @@ if __name__ == "__main__":
|
||||
if not opts.images and not opts.dirinstall:
|
||||
print(logs_note)
|
||||
# no fancy stuff like TTYs on a s390...
|
||||
if not arch.isS390():
|
||||
if not arch.is_s390():
|
||||
if "TMUX" in os.environ and os.environ.get("TERM") == "screen":
|
||||
print(shell_and_tmux_note)
|
||||
else:
|
||||
@ -997,6 +875,7 @@ if __name__ == "__main__":
|
||||
flags.selinux = opts.selinux
|
||||
flags.eject = opts.eject
|
||||
flags.kexec = opts.kexec
|
||||
flags.singlelang = opts.singlelang
|
||||
|
||||
# Switch to tty1 on exception in case something goes wrong during X start.
|
||||
# This way if, for example, metacity doesn't start, we switch back to a
|
||||
@ -1030,8 +909,6 @@ if __name__ == "__main__":
|
||||
log.info("anaconda called with cmdline = %s", sys.argv)
|
||||
log.info("Default encoding = %s ", sys.getdefaultencoding())
|
||||
|
||||
iutil.execWithRedirect("udevadm", ["control", "--env=ANACONDA=1"])
|
||||
|
||||
# Collect all addon paths
|
||||
addon_paths = collect_addon_paths(constants.ADDON_PATHS)
|
||||
|
||||
@ -1048,6 +925,12 @@ if __name__ == "__main__":
|
||||
flags.automatedInstall = True
|
||||
flags.eject = False
|
||||
ksFiles = [opts.ksfile]
|
||||
elif os.path.exists("/run/install/ks.cfg") and not opts.liveinst:
|
||||
# this is to handle such cases where a user has pre-loaded a
|
||||
# ks.cfg onto an OEMDRV labeled device
|
||||
flags.automatedInstall = True
|
||||
flags.eject = False
|
||||
ksFiles = ["/run/install/ks.cfg"]
|
||||
else:
|
||||
ksFiles = ["/tmp/updates/interactive-defaults.ks",
|
||||
"/usr/share/anaconda/interactive-defaults.ks"]
|
||||
@ -1203,6 +1086,14 @@ if __name__ == "__main__":
|
||||
networkInitialize(ksdata)
|
||||
threadMgr.add(AnacondaThread(name=constants.THREAD_WAIT_FOR_CONNECTING_NM, target=wait_for_connecting_NM_thread, args=(ksdata,)))
|
||||
|
||||
# initialize the screen access manager before launching the UI
|
||||
from pyanaconda import screen_access
|
||||
screen_access.initSAM()
|
||||
# try to open any existing config file
|
||||
# (might be created by pre-anaconda helper tools, injected during image
|
||||
# generation, etc.)
|
||||
screen_access.sam.open_config_file()
|
||||
|
||||
# now start the interface
|
||||
setupDisplay(anaconda, opts, addon_paths)
|
||||
if anaconda.gui_startup_failed:
|
||||
@ -1232,23 +1123,23 @@ if __name__ == "__main__":
|
||||
try:
|
||||
for (name, path) in name_path_pairs(opts.images):
|
||||
log.info("naming disk image '%s' '%s'", path, name)
|
||||
anaconda.storage.config.diskImages[name] = path
|
||||
anaconda.storage.config.disk_images[name] = path
|
||||
image_count += 1
|
||||
flags.imageInstall = True
|
||||
except ValueError as e:
|
||||
stdoutLog.error("error specifying image file: %s", e)
|
||||
iutil.ipmi_report(constants.IPMI_ABORTED)
|
||||
iutil.ipmi_abort(scripts=ksdata.scripts)
|
||||
sys.exit(1)
|
||||
|
||||
if image_count:
|
||||
anaconda.storage.setupDiskImages()
|
||||
anaconda.storage.setup_disk_images()
|
||||
|
||||
from blivet.osinstall import storageInitialize
|
||||
from blivet.osinstall import storage_initialize
|
||||
from pyanaconda.packaging import payloadMgr
|
||||
from pyanaconda.timezone import time_initialize
|
||||
|
||||
if not flags.dirInstall:
|
||||
threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE, target=storageInitialize,
|
||||
threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE, target=storage_initialize,
|
||||
args=(anaconda.storage, ksdata, anaconda.protected)))
|
||||
|
||||
if can_touch_runtime_system("initialize time", touch_live=True):
|
1765
anaconda/anaconda.spec.orig
Normal file
@ -1,6 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
[ -d m4 ] || mkdir m4
|
||||
autopoint --force
|
||||
libtoolize --copy --force
|
||||
aclocal -I m4
|
||||
autoconf
|
||||
|
@ -14,13 +14,11 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
m4_define(python_required_version, 3.4)
|
||||
|
||||
AC_PREREQ([2.63])
|
||||
AC_INIT([anaconda], [23.19.10], [anaconda-devel-list@redhat.com])
|
||||
AC_INIT([anaconda], [25.20.9], [anaconda-devel-list@redhat.com])
|
||||
|
||||
# Disable building static libraries.
|
||||
# This needs to be set before initializing automake
|
||||
@ -43,34 +41,13 @@ AC_PROG_LN_S
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_MKDIR_P
|
||||
|
||||
# Check for the intltool programs
|
||||
# These checks and subsitutions are adapted IT_PROG_INTLTOOL provided in
|
||||
# intltool.m4, but without the parts where it breaks gettext.
|
||||
AC_PATH_PROG([INTLTOOL_EXTRACT], [intltool-extract])
|
||||
AC_PATH_PROG([INTLTOOL_MERGE], [intltool-merge])
|
||||
AS_IF([test -z "$INTLTOOL_EXTRACT" -o -z "$INTLTOOL_MERGE"],
|
||||
[ANACONDA_SOFT_FAILURE([intltool not found])])
|
||||
|
||||
# Add the bits for Makefile rules
|
||||
INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
|
||||
INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
|
||||
INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;'
|
||||
INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
|
||||
intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
|
||||
intltool__v_merge_options_0='-q'
|
||||
AC_SUBST(INTLTOOL_V_MERGE)
|
||||
AC_SUBST(INTLTOOL__v_MERGE_)
|
||||
AC_SUBST(INTLTOOL__v_MERGE_0)
|
||||
AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
|
||||
AC_SUBST(intltool__v_merge_options_)
|
||||
AC_SUBST(intltool__v_merge_options_0)
|
||||
|
||||
INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
|
||||
AC_SUBST(INTLTOOL_DESKTOP_RULE)
|
||||
|
||||
AM_GNU_GETTEXT([external])
|
||||
# Also update in gettextver in anaconda.spec.in
|
||||
AM_GNU_GETTEXT_VERSION([0.18.3])
|
||||
# Check for the gettext programs
|
||||
AC_PATH_PROG([XGETTEXT], [xgettext])
|
||||
AC_PATH_PROG([MSGFMT], [msgfmt])
|
||||
AC_PATH_PROG([MSGMERGE], [msgmerge])
|
||||
AC_PATH_PROG([MSGCAT], [msgcat])
|
||||
AS_IF([test -z "$XGETTEXT" -o -z "$MSGFMT" -o -z "$MSGMERGE" -o -z "$MSGCAT"],
|
||||
[ANACONDA_SOFT_FAILURE([gettext not found])])
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/time.h unistd.h],
|
||||
@ -147,7 +124,7 @@ AC_CONFIG_FILES([Makefile
|
||||
data/window-manager/Makefile
|
||||
data/window-manager/config/Makefile
|
||||
data/window-manager/theme/Makefile
|
||||
po/Makefile.in
|
||||
po/Makefile
|
||||
scripts/Makefile
|
||||
pyanaconda/Makefile
|
||||
pyanaconda/version.py
|
||||
@ -166,6 +143,7 @@ AC_CONFIG_FILES([Makefile
|
||||
pyanaconda/ui/tui/spokes/Makefile
|
||||
pyanaconda/ui/tui/Makefile
|
||||
data/post-scripts/Makefile
|
||||
data/pixmaps/Makefile
|
||||
tests/Makefile
|
||||
utils/Makefile
|
||||
utils/dd/Makefile])
|
||||
|
@ -14,10 +14,8 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Martin Sivak <msivak@redhat.com>
|
||||
|
||||
SUBDIRS = command-stubs liveinst systemd post-scripts window-manager
|
||||
SUBDIRS = command-stubs liveinst systemd post-scripts pixmaps window-manager
|
||||
|
||||
CLEANFILES = *~
|
||||
|
||||
|
@ -8,59 +8,26 @@
|
||||
* default, but it defines them for level bars using a continuous value between
|
||||
* 0 and 1, so our discrete level bars are effectively always at the "high"
|
||||
* level.
|
||||
*
|
||||
* Fun surprises that might change in future versions:
|
||||
*
|
||||
* - Defining properties for a level will set properties on both the filled
|
||||
* portion and the empty portion of the level bar. So if all of the display
|
||||
* properties are set, which we do, the level bar effectively becomes 100%
|
||||
* filled with whatever properties are set. Copying the .empty-fill-block
|
||||
* properties from the theme so that they apply at the application level
|
||||
* works around this.
|
||||
*
|
||||
* - There's a bug in the handling of the maximum offset in that it only
|
||||
* applies when value == max-value, rather than when it's between
|
||||
* max-value and the next lower offset. For example, consider a
|
||||
* discrete-mode level bar with a max-value of 4 and offsets defined as
|
||||
* "low": 2.0, "medium": 3.0 and "high": 4.0. Value 1 will be low,
|
||||
* value 2 will be medium, value 3 will be in an undefined no-man's land,
|
||||
* and value 4 will be high. To get around this we re-define the default
|
||||
* fill-block values as the same as fill-block.level-high.
|
||||
*
|
||||
* - The GNOME Adwaita theme applies a gradient to the progress bar when the
|
||||
* window is focused. It does this by redefining the colors in a
|
||||
* background-image property, so unless we reset background-image our colors
|
||||
* will only apply when the window is out of focus, which uses the :backdrop
|
||||
* selector.
|
||||
*/
|
||||
|
||||
@define-color anaconda_level_bar_low red;
|
||||
@define-color anaconda_level_bar_medium orange;
|
||||
@define-color anaconda_level_bar_high green;
|
||||
|
||||
.level-bar.fill-block.level-low {
|
||||
levelbar.discrete trough block.filled.low {
|
||||
border-color: darker(@anaconda_level_bar_low);
|
||||
background-color: @anaconda_level_bar_low;
|
||||
background-image: none;
|
||||
background: @anaconda_level_bar_low;
|
||||
}
|
||||
|
||||
.level-bar.fill-block.level-medium {
|
||||
levelbar.discrete trough block.filled.medium {
|
||||
border-color: darker(@anaconda_level_bar_medium);
|
||||
background-color: @anaconda_level_bar_medium;
|
||||
background-image: none;
|
||||
background: @anaconda_level_bar_medium;
|
||||
}
|
||||
|
||||
.level-bar.fill-block,
|
||||
.level-bar.fill-block.level-high {
|
||||
levelbar.discrete trough block.filled.full,
|
||||
levelbar.discrete trough block.filled.high {
|
||||
border-color: darker(@anaconda_level_bar_high);
|
||||
background-color: @anaconda_level_bar_high;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.level-bar.fill-block.empty-fill-block {
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: alpha(#000000, 0.1);
|
||||
background: @anaconda_level_bar_high;
|
||||
}
|
||||
|
||||
/* As of gnome-themes-standard 3.9.90, the Adwaita theme uses the same color
|
||||
@ -158,44 +125,12 @@ AnacondaSpokeWindow #nav-box {
|
||||
background-color: @fedora;
|
||||
}
|
||||
|
||||
/* These rules were removed when the Adwaita theme moved from
|
||||
* gnome-themes-standard to gtk. The selectors had been wildcards, but after
|
||||
* the move they were replaced with more specific selectors. We need to apply
|
||||
* the old style to anconda's custom widgets in order for the selection
|
||||
* highlight and insensitive shading to appear.
|
||||
*/
|
||||
@define-color anaconda_selected_bg_color #4a90d9;
|
||||
@define-color anaconda_selected_fg_color #ffffff;
|
||||
|
||||
AnacondaMountpointSelector:selected,
|
||||
AnacondaDiskOverview:selected,
|
||||
AnacondaSpokeSelector:selected,
|
||||
AnacondaMountpointSelector:selected:focus,
|
||||
AnacondaDiskOverview:selected:focus,
|
||||
AnacondaSpokeSelector:selected:focus {
|
||||
background-color: @anaconda_selected_bg_color;
|
||||
color: @anaconda_selected_fg_color;
|
||||
}
|
||||
|
||||
@define-color anaconda_insensitive_bg_color #f4f4f2;
|
||||
@define-color anaconda_insensitive_fg_color #a7aba7;
|
||||
@define-color anaconda_internal_element_color #888a85;
|
||||
@define-color anaconda_insensitive_borders shade(@anaconda_internal_element_color, 1.37);
|
||||
|
||||
AnacondaMountpointSelector:insensitive,
|
||||
AnacondaDiskOverview:insensitive,
|
||||
AnacondaSpokeSelector:insensitive {
|
||||
background-color: @anaconda_insensitive_bg_color;
|
||||
color: @anaconda_insensitive_fg_color;
|
||||
border-color: @anaconda_insensitive_borders;
|
||||
}
|
||||
|
||||
/* When multi-column GtkTreeViews set a row separator, the horizontal-separator
|
||||
* style property is still applied to the row separator, breaking the row
|
||||
* separator up for each column. It looks kind of dumb. Provide a way to not do
|
||||
* that.
|
||||
*/
|
||||
GtkTreeView.solid-separator {
|
||||
treeview.solid-separator {
|
||||
-GtkTreeView-horizontal-separator: 0;
|
||||
}
|
||||
|
||||
|
@ -30,10 +30,11 @@ syntax see the Anaconda options wiki page: http://fedoraproject.org/wiki/Anacond
|
||||
|
||||
kickstart
|
||||
Gives the local file path to use for kickstart. Normally only used when running anaconda
|
||||
from the cmdline.
|
||||
from the cmdline. This option is not supported for live installations.
|
||||
|
||||
rescue
|
||||
Start the rescue environment instead of installation.
|
||||
Start the rescue environment instead of installation. This option is not supported for
|
||||
live installations.
|
||||
|
||||
armplatform
|
||||
Can be used to specify the ARM platform for the installation by passing the appropriate PLATFORM_ID.
|
||||
@ -109,6 +110,9 @@ lang
|
||||
Language to use for the installation. LANG should be a language code which is valid to be used
|
||||
with the lang kickstart command.
|
||||
|
||||
singlelang
|
||||
Install in single language mode - no interactive options for language configuration will be available.
|
||||
|
||||
loglevel
|
||||
Set the minimum level required for messages to be logged on a terminal (log files always
|
||||
contain messages of all levels). Values for LEVEL are "debug", "info", "warning", "error",
|
||||
@ -234,3 +238,14 @@ be retried if there is no listener (ie. won't block the installation).
|
||||
kexec
|
||||
Reboot the system using kexec with the new kernel and initrd. This will result in
|
||||
a faster reboot by skipping the BIOS/Firmware and bootloader steps.
|
||||
|
||||
nosave
|
||||
This option controls what installation results should not be saved to the installed system,
|
||||
valid values are: "input_ks", "output_ks", "all_ks", "logs" and "all".
|
||||
The "input_ks" value disables saving of the input kickstart (if any), "output_ks" disables saving of the output
|
||||
kickstart generated by Anaconda, "all_ks" disables saving of both input and output kickstarts, "logs" disables saving
|
||||
of all installation logs and "all" disables saving of all kickstarts and all logs. Multiple values can be combined
|
||||
as a comma separated list, for example: "all_ks,logs"
|
||||
|
||||
legacygrub
|
||||
Enable legacygrub (for installing older OSes). You probably do not want this.
|
||||
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
commandstubsdir = $(datadir)/$(PACKAGE_NAME)
|
||||
dist_commandstubs_SCRIPTS = $(srcdir)/*-stub
|
||||
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
# scan system for harddrives and output device name/size
|
||||
#
|
||||
# Copyright (C) 2007, 2009 Red Hat, Inc. All rights reserved.
|
||||
# Copyright (C) 2007-2016 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
|
||||
@ -19,12 +19,42 @@
|
||||
#
|
||||
|
||||
import sys
|
||||
import os
|
||||
import stat
|
||||
import parted
|
||||
|
||||
# The list-harddrives script is primarily meant for use in the
|
||||
# kickstart %post scriptlets for listing all individual harddrives
|
||||
# on the system.
|
||||
#
|
||||
# For more information check the docs/list-harddrives.rsh file
|
||||
# in the Anaconda source code.
|
||||
|
||||
def check_device(device):
|
||||
if stat.S_ISBLK(os.stat(device.path).st_mode):
|
||||
# exclude device mapper devices
|
||||
if device.type == parted.DEVICE_DM:
|
||||
return False
|
||||
# exclude block devices for CD/DVD disks
|
||||
elif device.path.startswith("/dev/sr"):
|
||||
return False
|
||||
# exclude zram block devices
|
||||
elif device.path.startswith("/dev/zram"):
|
||||
return False
|
||||
# exclude software raid block devices
|
||||
elif device.path.startswith("/dev/md"):
|
||||
return False
|
||||
# the remaining block devices should be fine
|
||||
else:
|
||||
return True
|
||||
else:
|
||||
# ignore everything that is not a block device
|
||||
return False
|
||||
|
||||
def main(argv):
|
||||
lst = set()
|
||||
|
||||
for dev in filter(lambda d: d.type != parted.DEVICE_DM and not d.path.startswith("/dev/sr"), parted.getAllDevices()):
|
||||
for dev in filter(check_device, parted.getAllDevices()):
|
||||
if dev.path.startswith("/dev/"):
|
||||
path = dev.path[5:]
|
||||
else:
|
||||
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
SUBDIRS = console.apps gnome pam.d
|
||||
|
||||
@ -23,28 +21,33 @@ if IS_LIVEINST_ARCH
|
||||
dist_sbin_SCRIPTS = liveinst
|
||||
|
||||
desktopdir = $(datadir)/applications
|
||||
desktop_DATA = liveinst.desktop
|
||||
dist_desktop_DATA = liveinst.desktop
|
||||
|
||||
xinitdir = $(sysconfdir)/X11/xinit/xinitrc.d
|
||||
dist_xinit_SCRIPTS = zz-liveinst.sh
|
||||
dist_libexec_SCRIPTS = liveinst-setup.sh
|
||||
|
||||
autostartdir = $(sysconfdir)/xdg/autostart
|
||||
dist_autostart_DATA = liveinst-setup.desktop
|
||||
|
||||
install-exec-local:
|
||||
$(MKDIR_P) $(DESTDIR)$(bindir)
|
||||
$(LN_S) consolehelper $(DESTDIR)$(bindir)/liveinst
|
||||
|
||||
# Merge translations into the desktop file
|
||||
# Use the merged translations in $(builddir). If no merged translations exist,
|
||||
# just exit.
|
||||
install-data-hook:
|
||||
for p in $(top_builddir)/po/*.mpo ; do \
|
||||
[ -e $$p ] || exit 0 ; \
|
||||
$(MSGFMT) --desktop --template=$(DESTDIR)$(desktopdir)/liveinst.desktop \
|
||||
--locale=$$(basename $$p .mpo) \
|
||||
-o $(DESTDIR)$(desktopdir)/liveinst.desktop.new $$p || exit 1 ; \
|
||||
mv $(DESTDIR)$(desktopdir)/liveinst.desktop.new $(DESTDIR)$(desktopdir)/liveinst.desktop || exit 1 ; \
|
||||
done
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(bindir)/liveinst
|
||||
endif
|
||||
|
||||
EXTRA_DIST = README liveinst.desktop.in
|
||||
|
||||
CLEANFILES = liveinst.desktop *.h
|
||||
EXTRA_DIST = README
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
# Files generated for gettext need to be included in the distribution
|
||||
EXTRA_DIST += $(srcdir)/liveinst.desktop.in.h
|
||||
$(srcdir)/liveinst.desktop.in.h: $(srcdir)/liveinst.desktop.in
|
||||
@$(MAKE) -C $(top_builddir)/po $(abs_top_srcdir)/$(subdir)/$$(basename $@)
|
||||
|
@ -14,18 +14,11 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
if IS_LIVEINST_ARCH
|
||||
consoledir = $(sysconfdir)/security/console.apps
|
||||
dist_console_DATA = liveinst
|
||||
endif
|
||||
#
|
||||
# Files generated for gettext need to be included in the distribution
|
||||
EXTRA_DIST = $(srcdir)/liveinst.h
|
||||
$(srcdir)/liveinst.h: $(srcdir)/liveinst
|
||||
@$(MAKE) -C $(top_builddir)/po $(abs_top_srcdir)/$(subdir)/$$(basename $@)
|
||||
|
||||
CLEANFILES = *.h
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
@ -14,24 +14,26 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Kalev Lember <kalevlember@gmail.com>
|
||||
|
||||
welcomedir = $(datadir)/$(PACKAGE_NAME)/gnome
|
||||
dist_welcome_DATA = install-button.png
|
||||
dist_welcome_SCRIPTS = fedora-welcome
|
||||
welcome_DATA = fedora-welcome.desktop
|
||||
|
||||
EXTRA_DIST = fedora-welcome.desktop.in
|
||||
|
||||
CLEANFILES = fedora-welcome.desktop
|
||||
dist_welcome_DATA = install-button.png fedora-welcome.desktop
|
||||
dist_welcome_SCRIPTS = fedora-welcome.js
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
# Merge the translations into the desktop file
|
||||
# Use the merged translations in $(builddir). If no merged translations exist,
|
||||
# just exit.
|
||||
# Rename fedora-welcome.js to just fedora-welcome
|
||||
install-data-hook:
|
||||
for p in $(top_builddir)/po/*.mpo ; do \
|
||||
[ -e $$p ] || exit 0 ; \
|
||||
$(MSGFMT) --desktop --template=$(DESTDIR)$(welcomedir)/fedora-welcome.desktop \
|
||||
--locale=$$(basename $$p .mpo) \
|
||||
-o $(DESTDIR)$(welcomedir)/fedora-welcome.desktop.new $$p || exit 1 ; \
|
||||
mv $(DESTDIR)$(welcomedir)/fedora-welcome.desktop.new $(DESTDIR)$(welcomedir)/fedora-welcome.desktop || exit 1 ; \
|
||||
done
|
||||
cd $(DESTDIR)$(welcomedir) && mv fedora-welcome.js fedora-welcome
|
||||
|
||||
# Files generated for gettext need to be included in the distribution
|
||||
EXTRA_DIST += $(srcdir)/fedora-welcome.po $(srcdir)/fedora-welcome.desktop.in.h
|
||||
$(srcdir)/fedora-welcome.po $(srcdir)/fedora-welcome.desktop.in.h: \
|
||||
$(srcdir)/fedora-welcome $(srcdir)/fedora-welcome.desktop.in
|
||||
@$(MAKE) -C $(top_builddir)/po $(abs_top_srcdir)/$(subdir)/$$(basename $@)
|
||||
uninstall-hook:
|
||||
-cd $(DESTDIR)$(welcomedir) && rm -f fedora-welcome
|
||||
|
@ -1,8 +0,0 @@
|
||||
[Desktop Entry]
|
||||
_Name=Welcome to Fedora
|
||||
Exec=/usr/share/anaconda/gnome/fedora-welcome
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
NoDisplay=true
|
||||
X-GNOME-Autostart-enabled=true
|
@ -16,9 +16,6 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Authors: Cosimo Cecchi <cosimoc@redhat.com>
|
||||
*
|
||||
*/
|
||||
|
||||
const Gdk = imports.gi.Gdk;
|
@ -20,10 +20,6 @@
|
||||
|
||||
LIVE_INSTALL=0
|
||||
IMAGE_INSTALL=0
|
||||
RESCUE=0
|
||||
if [[ "$LIVECMD $*" =~ "--rescue" ]]; then
|
||||
RESCUE=1
|
||||
fi
|
||||
|
||||
if [ -z "$LIVECMD" ]; then
|
||||
LIVE_INSTALL=1
|
||||
@ -134,6 +130,17 @@ for opt in `cat /proc/cmdline` $*; do
|
||||
echo "$text" >&2
|
||||
fi
|
||||
;;
|
||||
rescue|--rescue)
|
||||
title="Configuration not supported"
|
||||
text="Rescue mode is not supported on live media. Please use the normal system tools to recover your system."
|
||||
if which zenity &> /dev/null; then
|
||||
zenity --warning --title="$title" --text="$text"
|
||||
else
|
||||
echo "$title" >&2
|
||||
echo "$text" >&2
|
||||
fi
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@ -179,6 +186,9 @@ if [ -z $LC_ALL ]; then
|
||||
export LC_ALL=$LANG
|
||||
fi
|
||||
|
||||
# Force the X11 backend since sudo and wayland do not mix
|
||||
export GDK_BACKEND=x11
|
||||
|
||||
if [ -x /usr/bin/udisks ]; then
|
||||
/usr/bin/udisks --inhibit -- $ANACONDA $*
|
||||
else
|
||||
@ -189,7 +199,7 @@ if [ -e /tmp/updates ]; then rm -r /tmp/updates; fi
|
||||
if [ -e /tmp/updates.img ]; then rm /tmp/updates.img; fi
|
||||
|
||||
# try to teardown the filesystems if this was an image install
|
||||
if [ $IMAGE_INSTALL = 1 -a $RESCUE = 0 ]; then
|
||||
if [ $IMAGE_INSTALL = 1 ]; then
|
||||
anaconda-cleanup
|
||||
fi
|
||||
|
||||
|
9
anaconda/data/liveinst/liveinst-setup.desktop
Normal file
@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Liveinst Setup
|
||||
TryExec=/usr/sbin/liveinst
|
||||
Exec=/usr/libexec/liveinst-setup.sh
|
||||
NoDisplay=true
|
||||
X-GNOME-AutoRestart=false
|
||||
X-GNOME-Autostart-Phase=Initialization
|
||||
X-GNOME-Autostart-Notify=false
|
14
anaconda/data/liveinst/liveinst-setup.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
# Set up a launcher on the desktop for the live installer if we're on
|
||||
# a live CD
|
||||
|
||||
if [ ! \( -b /dev/mapper/live-base -o -b /dev/mapper/live-osimg-min \) ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Prevents breakage if the hostname is changed before or during the install
|
||||
# Also lets us run (with the X11 backend) on Wayland
|
||||
[ -x /usr/bin/xhost ] && xhost +si:localuser:root > /dev/null 2>&1
|
||||
|
||||
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
|
||||
cp /usr/share/applications/liveinst.desktop "${XDG_DESKTOP_DIR:-$HOME/Desktop}"
|
@ -1,11 +1,12 @@
|
||||
[Desktop Entry]
|
||||
_Name=Install to Hard Drive
|
||||
_GenericName=Install
|
||||
_Comment=Install the live CD to your hard disk
|
||||
Name=Install to Hard Drive
|
||||
GenericName=Install
|
||||
Comment=Install the live CD to your hard disk
|
||||
Categories=System;Utility;X-Red-Hat-Base;X-Fedora;GNOME;GTK;
|
||||
Exec=/usr/bin/liveinst
|
||||
Terminal=false
|
||||
Type=Application
|
||||
# TRANSLATORS: Icon name, probably should not be translated
|
||||
Icon=anaconda
|
||||
StartupNotify=true
|
||||
NoDisplay=true
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
if IS_LIVEINST_ARCH
|
||||
pamdir = $(sysconfdir)/pam.d
|
||||
|
@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Set up a launcher on the desktop for the live installer if we're on
|
||||
# a live CD
|
||||
|
||||
# Prevents breakage if the hostname is changed before or during the install
|
||||
[ -x /usr/bin/xhost ] && xhost +si:localuser:root > /dev/null 2>&1
|
||||
|
||||
# don't run on geode (olpc)
|
||||
if [ `grep -c Geode /proc/cpuinfo` -eq 0 ]; then
|
||||
if [ -b /dev/mapper/live-osimg-min ]; then
|
||||
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
|
||||
cp /usr/share/applications/liveinst.desktop "${XDG_DESKTOP_DIR:-$HOME/Desktop}"
|
||||
elif [ -f /.livecd-configured ]; then # FIXME: old way... this should go away
|
||||
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
|
||||
cp /usr/share/applications/liveinst.desktop "${XDG_DESKTOP_DIR:-$HOME/Desktop}"
|
||||
fi
|
||||
fi
|
@ -1,6 +1,6 @@
|
||||
# pixmaps/Makefile.am for anaconda
|
||||
#
|
||||
# Copyright (C) 2009 Red Hat, Inc.
|
||||
# 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 Lesser General Public License as published
|
||||
@ -15,9 +15,9 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
pixmapsdir = $(datadir)/anaconda/pixmaps
|
||||
dist_pixmaps_DATA = $(srcdir)/*.png $(srcdir)/*.svg
|
||||
# Author(s): Vendula Poncova <vponcova@redhat.com>
|
||||
#
|
||||
|
||||
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps
|
||||
dist_pixmaps_DATA = anaconda-password-show-off.svg anaconda-password-show-on.svg
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
13
anaconda/data/pixmaps/anaconda-password-show-off.svg
Normal file
@ -0,0 +1,13 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 13.314453 2 L 2 13.294922 L 2.7148438 14 L 14 2.6972656 L 13.314453 2 z M 8 3 A 8.9999916 9.000003 0 0 0 0.12304688 7.6679688 C 0.25199187 8.0317035 0.48048562 8.3445563 0.77929688 8.5761719 A 7.9999926 8.0000028 0 0 1 8 4 A 3.9999993 4.0000007 0 0 0 4 8 A 3.9999993 4.0000007 0 0 0 4.1054688 8.8945312 L 5 8 A 2.9999993 3.0000005 0 0 1 8 5 L 8.8925781 4.1074219 A 3.9999993 4.0000007 0 0 0 8.3496094 4.0175781 A 7.9999926 8.0000028 0 0 1 8.9277344 4.0722656 L 9.8066406 3.1933594 A 8.9999916 9.000003 0 0 0 8 3 z M 13.835938 5.1640625 L 13.121094 5.8789062 A 7.9999926 8.0000028 0 0 1 15.220703 8.5761719 C 15.522218 8.3424607 15.752612 8.0261216 15.880859 7.6582031 A 8.9999916 9.000003 0 0 0 13.835938 5.1640625 z M 11.894531 7.1054688 L 11 8 A 2.9999993 3.0000005 0 0 1 8 11 L 7.1074219 11.892578 A 3.9999993 4.0000007 0 0 0 8 12 A 3.9999993 4.0000007 0 0 0 12 8 A 3.9999993 4.0000007 0 0 0 11.894531 7.1054688 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
21
anaconda/data/pixmaps/anaconda-password-show-on.svg
Normal file
@ -0,0 +1,21 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(-421.71429,-531.79074)">
|
||||
<g
|
||||
transform="matrix(0.75,0,0,0.74999813,421.46429,-241.22897)">
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 8 3 A 8.9999925 9.0000023 0 0 0 0.12304688 7.6679688 C 0.2519919 8.0317178 0.48048563 8.3445725 0.77929688 8.5761719 A 7.9999935 8.0000021 0 0 1 8 4 A 3.9999996 4.0000004 0 0 0 4 8 A 3.9999996 4.0000004 0 0 0 8 12 A 3.9999996 4.0000004 0 0 0 12 8 A 3.9999996 4.0000004 0 0 0 8.3496094 4.0175781 A 7.9999935 8.0000021 0 0 1 15.220703 8.5761719 C 15.522218 8.3424725 15.752612 8.0260772 15.880859 7.6582031 A 8.9999925 9.0000023 0 0 0 8 3 z M 8 5 A 2.9999996 3.0000002 0 0 1 11 8 A 2.9999996 3.0000002 0 0 1 8 11 A 2.9999996 3.0000002 0 0 1 5 8 A 2.9999996 3.0000002 0 0 1 8 5 z M 8 6 A 1.9999999 2.0000003 0 0 0 6 8 A 1.9999999 2.0000003 0 0 0 8 10 A 1.9999999 2.0000003 0 0 0 10 8 A 1.9999999 2.0000003 0 0 0 9.9101562 7.4121094 A 0.9999999 1 0 0 1 9 8 A 0.9999999 1 0 0 1 8 7 A 0.9999999 1 0 0 1 8.5898438 6.0898438 A 1.9999999 2.0000003 0 0 0 8 6 z "
|
||||
transform="matrix(1.3333333,0,0,1.3333367,0.33333333,1030.6955)"
|
||||
class="ColorScheme-Text"
|
||||
id="rect4170" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
@ -1,12 +1,27 @@
|
||||
# Note, this script log will not be copied to the installed system.
|
||||
%post --nochroot
|
||||
|
||||
mkdir -p $ANA_INSTALL_PATH/var/log/anaconda
|
||||
for log in anaconda.log syslog X.log program.log packaging.log storage.log ifcfg.log yum.log dnf.log dnf.rpm.log; do
|
||||
[ -e /tmp/$log ] && cp /tmp/$log $ANA_INSTALL_PATH/var/log/anaconda/
|
||||
done
|
||||
cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/
|
||||
journalctl -b > $ANA_INSTALL_PATH/var/log/anaconda/journal.log
|
||||
chmod 0600 $ANA_INSTALL_PATH/var/log/anaconda/*
|
||||
NOSAVE_INPUT_KS_FILE=/tmp/NOSAVE_INPUT_KS
|
||||
NOSAVE_LOGS_FILE=/tmp/NOSAVE_LOGS
|
||||
PRE_ANA_LOGS=/tmp/pre-anaconda-logs
|
||||
|
||||
if [ -e ${NOSAVE_LOGS_FILE} ]; then
|
||||
rm -f ${NOSAVE_LOGS_FILE}
|
||||
else
|
||||
mkdir -p $ANA_INSTALL_PATH/var/log/anaconda
|
||||
for log in anaconda.log syslog X.log program.log packaging.log storage.log ifcfg.log lvm.log dnf.librepo.log hawkey.log; do
|
||||
[ -e /tmp/$log ] && cp /tmp/$log $ANA_INSTALL_PATH/var/log/anaconda/
|
||||
done
|
||||
[ -e /tmp/pre-anaconda-logs ] && cp -r $PRE_ANA_LOGS $ANA_INSTALL_PATH/var/log/anaconda
|
||||
cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/
|
||||
journalctl -b > $ANA_INSTALL_PATH/var/log/anaconda/journal.log
|
||||
chmod 0600 $ANA_INSTALL_PATH/var/log/anaconda/*
|
||||
fi
|
||||
|
||||
if [ -e ${NOSAVE_INPUT_KS_FILE} ]; then
|
||||
rm -f ${NOSAVE_INPUT_KS_FILE}
|
||||
else
|
||||
[ -e /run/install/ks.cfg ] && cp /run/install/ks.cfg $ANA_INSTALL_PATH/root/original-ks.cfg
|
||||
fi
|
||||
|
||||
%end
|
||||
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Chris Lumens <clumens@redhat.com>
|
||||
|
||||
postscriptsdir = $(datadir)/$(PACKAGE_NAME)/post-scripts
|
||||
dist_postscripts_DATA = 40-qubes-alt-kernels.ks 50-qubes.ks 60-systemd-preset.ks 80-setfilecons.ks 90-copy-screenshots.ks 99-copy-logs.ks
|
||||
|
@ -1,6 +1,6 @@
|
||||
# systemd/Makefile.am for anaconda
|
||||
#
|
||||
# Copyright (C) 2011 Red Hat, Inc.
|
||||
# Copyright (C) 2011, 2016 Red Hat, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
@ -14,22 +14,21 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Chris Lumens <clumens@redhat.com>
|
||||
|
||||
systemddir = $(prefix)/lib/systemd/system
|
||||
generatordir = $(prefix)/lib/systemd/system-generators
|
||||
|
||||
dist_systemd_DATA = anaconda.service \
|
||||
anaconda-noshell.service \
|
||||
anaconda-direct.service \
|
||||
anaconda.target \
|
||||
anaconda-tmux@.service \
|
||||
anaconda-shell@.service \
|
||||
instperf.service \
|
||||
anaconda-sshd.service \
|
||||
anaconda-nm-config.service \
|
||||
zram.service
|
||||
anaconda-noshell.service \
|
||||
anaconda-direct.service \
|
||||
anaconda.target \
|
||||
anaconda-tmux@.service \
|
||||
anaconda-shell@.service \
|
||||
instperf.service \
|
||||
anaconda-sshd.service \
|
||||
anaconda-nm-config.service \
|
||||
anaconda-pre.service \
|
||||
zram.service
|
||||
|
||||
dist_generator_SCRIPTS = anaconda-generator
|
||||
|
||||
|
@ -1,6 +1,14 @@
|
||||
#!/bin/bash
|
||||
# anaconda-generator: generate services needed for anaconda operation
|
||||
|
||||
# only run in the Anaconda installation environment
|
||||
ANACONDA_TARGET="/lib/systemd/system/anaconda.target"
|
||||
CURRENT_DEFAULT_TARGET=$(readlink /etc/systemd/system/default.target)
|
||||
|
||||
if [ "$ANACONDA_TARGET" != "$CURRENT_DEFAULT_TARGET" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# set up dirs
|
||||
systemd_dir=/lib/systemd/system
|
||||
target_dir=$systemd_dir/anaconda.target.wants
|
||||
@ -33,3 +41,4 @@ for tty in hvc0 hvc1 xvc0 hvsi0 hvsi1 hvsi2; do
|
||||
done
|
||||
|
||||
ln -sf $systemd_dir/anaconda-nm-config.service $target_dir/anaconda-nm-config.service
|
||||
ln -sf $systemd_dir/anaconda-pre.service $target_dir/anaconda-pre.service
|
||||
|
@ -4,4 +4,5 @@ Description=Anaconda NetworkManager configuration
|
||||
Before=NetworkManager.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/anaconda-disable-nm-ibft-plugin
|
||||
|
21
anaconda/data/systemd/anaconda-pre.service
Normal file
@ -0,0 +1,21 @@
|
||||
[Unit]
|
||||
# This service is to be run before anaconda starts and log data before anaconda changes them
|
||||
Description=pre-anaconda logging service
|
||||
Requires=basic.target
|
||||
After=basic.target
|
||||
Before=anaconda.target
|
||||
Wants=instperf.service
|
||||
Wants=rsyslog.service
|
||||
Wants=systemd-udev-settle.service
|
||||
Wants=NetworkManager.service
|
||||
Wants=plymouth-quit.service plymouth-quit-wait.service
|
||||
Wants=zram.service
|
||||
Wants=systemd-logind.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/libexec/anaconda/anaconda-pre-log-gen
|
||||
StardardInput=tty
|
||||
StandardOutput=journal+console
|
||||
StandardError=journal+console
|
||||
TimeoutSec=0
|
@ -1,15 +1,17 @@
|
||||
[Unit]
|
||||
Description=OpenSSH server daemon
|
||||
Before=anaconda.target
|
||||
After=syslog.target network.target
|
||||
After=syslog.target network.target sshd-keygen.target
|
||||
Wants=sshd-keygen.target
|
||||
ConditionKernelCommandLine=|sshd
|
||||
ConditionKernelCommandLine=|inst.sshd
|
||||
ConditionKernelCommandLine=!inst.sshd=0
|
||||
ConditionKernelCommandLine=!sshd=0
|
||||
# TODO: use ConditionArchitecture in systemd v210 or later
|
||||
ConditionPathIsDirectory=|/sys/hypervisor/s390
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/sysconfig/sshd
|
||||
ExecStartPre=/usr/sbin/sshd-keygen
|
||||
ExecStartPre=/usr/sbin/handle-sshpw
|
||||
ExecStart=/usr/sbin/sshd -D $OPTIONS -f /etc/ssh/sshd_config.anaconda
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
@ -10,5 +10,6 @@ Wants=NetworkManager.service
|
||||
Wants=plymouth-quit.service plymouth-quit-wait.service
|
||||
Wants=anaconda-direct.service anaconda.service
|
||||
Wants=anaconda-sshd.service
|
||||
Wants=anaconda-pre.service
|
||||
Wants=zram.service
|
||||
Wants=systemd-logind.service
|
||||
|
@ -17,4 +17,8 @@ new-window -d -n log "tail -F /tmp/anaconda.log"
|
||||
new-window -d -n storage-log "tail -F /tmp/storage.log"
|
||||
new-window -d -n program-log "tail -F /tmp/program.log"
|
||||
|
||||
detach-client -s anaconda
|
||||
# The idea here is to detach the client started here via anaconda.service, and
|
||||
# then re-attach to it in the tmux service run on the console tty. However,
|
||||
# the detach-client directive is now giving us "no current client" for some
|
||||
# reason.
|
||||
# detach-client -s anaconda
|
||||
|
@ -14,7 +14,5 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Shea <dshea@redhat.com>
|
||||
|
||||
SUBDIRS = config theme
|
||||
|
@ -14,15 +14,14 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Shea <dshea@redhat.com>
|
||||
|
||||
schemadir = $(pkgdatadir)/window-manager/glib-2.0/schemas
|
||||
|
||||
# These files need to be compiled by glib-compile-schemas. This is handled
|
||||
# in the spec file scriptlets.
|
||||
dist_schema_DATA = org.gnome.desktop.wm.keybindings.gschema.override \
|
||||
org.gnome.desktop.wm.preferences.gschema.override
|
||||
org.gnome.desktop.wm.preferences.gschema.override \
|
||||
org.gnome.metacity.gschema.override
|
||||
|
||||
# GSettings insists on the override files being in the same directory as the
|
||||
# schemas they modify, so pretend that this is the case with symlinks and
|
||||
@ -31,8 +30,9 @@ install-data-hook:
|
||||
$(MKDIR_P) $(DESTDIR)$(schemadir)
|
||||
$(LN_S) -f /usr/share/glib-2.0/schemas/org.gnome.desktop.wm.keybindings.gschema.xml $(DESTDIR)$(schemadir)
|
||||
$(LN_S) -f /usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.xml $(DESTDIR)$(schemadir)
|
||||
$(LN_S) -f /usr/share/glib-2.0/schemas/org.gnome.metacity.gschema.xml $(DESTDIR)$(schemadir)
|
||||
$(LN_S) -f /usr/share/glib-2.0/schemas/org.gnome.desktop.enums.xml $(DESTDIR)$(schemadir)
|
||||
glib-compile-schemas $(DESTDIR)$(schemadir)
|
||||
glib-compile-schemas --strict $(DESTDIR)$(schemadir)
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(schemadir)/*.xml
|
||||
|
@ -1,6 +1,7 @@
|
||||
[org.gnome.desktop.wm.preferences]
|
||||
button-layout=':'
|
||||
button-layout=':close'
|
||||
action-right-click-titlebar='none'
|
||||
action-double-click-titlebar='none'
|
||||
num-workspaces=1
|
||||
theme='Anaconda'
|
||||
mouse-button-modifier=''
|
||||
|
@ -0,0 +1,2 @@
|
||||
[org.gnome.metacity]
|
||||
edge-tiling=false
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Shea <dshea@redhat.com>
|
||||
|
||||
themedir = $(datadir)/themes/Anaconda/metacity-1
|
||||
|
||||
|
@ -14,8 +14,6 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: David Cantrell <dcantrell@redhat.com>
|
||||
|
||||
EXTRA_DIST = $(srcdir)/*.rst $(srcdir)/*.txt $(srcdir)/conf.py
|
||||
|
||||
@ -73,6 +71,8 @@ apidoc:
|
||||
if [ -f /usr/bin/$(SPHINXAPIDOC) ]; then \
|
||||
rm $(addprefix ./, $(MODULE_NAMES)) ; \
|
||||
$(SPHINXAPIDOC) -o . $(SOURCEDIR) ; \
|
||||
rm $(addprefix ./, tests/*.rst) ; \
|
||||
$(SPHINXAPIDOC) -o ./tests ../tests ../tests/storage/run_storage_tests.py ; \
|
||||
fi
|
||||
|
||||
html: apidoc
|
||||
|
@ -75,6 +75,11 @@ different ways:
|
||||
|
||||
You can specify what version of the NFS protocol to use by adding ``nfsvers=X``
|
||||
to the `options`.
|
||||
|
||||
This accepts not just an installable tree directory in the ``<path>`` element,
|
||||
but you can also specify an ``.iso`` file. That ISO file is then mounted and
|
||||
used as the installation tree. This is often used for simulating a standard
|
||||
DVD installation using a remote ``DVD.iso`` image.
|
||||
|
||||
.. _diskdev:
|
||||
|
||||
@ -269,6 +274,14 @@ ifname
|
||||
Assign the given interface name to the network device with the given MAC. May
|
||||
be used multiple times.
|
||||
|
||||
.. NOTE::
|
||||
|
||||
Dracut applies ifname option (which might involve renaming the device with
|
||||
given MAC) in initramfs only if the device is activated in initramfs stage
|
||||
(based on ip= option). If it is not the case, installer still binds the
|
||||
current device name to the MAC by adding HWADDR setting to the ifcfg file of
|
||||
the device.
|
||||
|
||||
.. inst.dhcpclass:
|
||||
|
||||
inst.dhcpclass
|
||||
@ -303,6 +316,21 @@ inst.lang
|
||||
Set the language to be used during installation. The language specified must
|
||||
be valid for the ``lang`` kickstart command.
|
||||
|
||||
|
||||
.. inst.singlelang:
|
||||
|
||||
inst.singlelang
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Install in single language mode - no interactive options for installation language
|
||||
and language support configuration will be available.
|
||||
If a language has been specified via the `inst.lang`_ boot option
|
||||
or the `lang` kickstart command it will be used.
|
||||
If no language is specified Anaconda will default to en_US.UTF-8.
|
||||
|
||||
.. NOTE::
|
||||
Atomic installations always run in single language mode.
|
||||
|
||||
.. inst.geoloc:
|
||||
|
||||
inst.geoloc
|
||||
@ -449,10 +477,10 @@ Locations may be specified using any of the formats allowed for ``inst.repo``.
|
||||
For any format the ``<path>`` component defaults to ``/updates.img`` if it is
|
||||
omitted.
|
||||
|
||||
.. nokill:
|
||||
.. inst.nokill:
|
||||
|
||||
nokill
|
||||
^^^^^^
|
||||
inst.nokill
|
||||
^^^^^^^^^^^
|
||||
|
||||
A debugging option that prevents anaconda from and rebooting when a fatal error
|
||||
occurs or at the end of the installation process.
|
||||
@ -582,6 +610,36 @@ Also note that while SELinux is running in the installation environment by
|
||||
default, it is running in permissive mode so disabling it there does not make
|
||||
much sense.
|
||||
|
||||
.. inst.nosave
|
||||
|
||||
inst.nosave
|
||||
^^^^^^^^^^^
|
||||
|
||||
Controls what installation results should not be saved to the installed system,
|
||||
valid values are: "input_ks", "output_ks", "all_ks", "logs" and "all".
|
||||
|
||||
``input_ks``
|
||||
Disables saving of the input kickstart (if any).
|
||||
|
||||
``output_ks``
|
||||
Disables saving of the output kickstart generated by Anaconda.
|
||||
|
||||
``all_ks``
|
||||
Disables saving of both input and output kickstarts.
|
||||
|
||||
``logs``
|
||||
Disables saving of all installation logs.
|
||||
|
||||
``all``
|
||||
Disables saving of all kickstarts and all logs.
|
||||
|
||||
Multiple values can be combined as a comma separated list, for example: ``input_ks,logs``
|
||||
|
||||
.. NOTE::
|
||||
The nosave option is meant for excluding files from the installed system that *can't*
|
||||
be removed by a kickstart %post script, such as logs and input/output kickstarts.
|
||||
|
||||
|
||||
Third-party options
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -11,9 +11,6 @@
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
# Ignore any interruptible calls
|
||||
# pylint: disable=interruptible-system-call
|
||||
|
||||
import sys, os
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
@ -21,6 +18,13 @@ import sys, os
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
# configuration required to import test modules
|
||||
for path in ["../pyanaconda/isys/.libs", "../pyanaconda", "../tests", "../tests/lib", "../dracut", "../widgets"]:
|
||||
sys.path.append(os.path.abspath(path))
|
||||
if not 'ANACONDA_INSTALL_CLASSES' in os.environ:
|
||||
# pylint: disable=environment-modify
|
||||
os.environ['ANACONDA_INSTALL_CLASSES'] = os.path.abspath('../pyanaconda/installclasses')
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
|
@ -1,91 +0,0 @@
|
||||
gettext, i18n, and the po/ subdirectory
|
||||
26-Nov-2013
|
||||
David Cantrell <dcantrell@redhat.com>
|
||||
David Shea <dshea@redhat.com>
|
||||
---------------------------------------
|
||||
|
||||
I have attempted to clean up our po/ subdirectory and bring it in to
|
||||
conformance with GNU gettext tools as well as hook it in to GNU autoconf and
|
||||
GNU automake. The gettext software has templates set up for this already,
|
||||
so I'm just using those.
|
||||
|
||||
From time to time, we may have to update our gettext template files and or
|
||||
expand or reduce the information in the files. How do you know what files
|
||||
do what? Here's an explanation:
|
||||
|
||||
ABOUT-NLS
|
||||
config.rpath
|
||||
m4/gettext.m4
|
||||
m4/iconv.m4
|
||||
m4/nls.m4
|
||||
m4/po.m4
|
||||
m4/...
|
||||
po/Makefile.in.in
|
||||
po/Makevars.template
|
||||
po/Rules-quot
|
||||
po/boldquot.sed
|
||||
po/en@boldquot.header
|
||||
po/en@quot.header
|
||||
po/insert-header.sin
|
||||
po/quot.sed
|
||||
po/remove-potcdate.sin
|
||||
|
||||
These files are copied in when 'autopoint' is run on the source
|
||||
project, which happens as part of autogen.sh. In general, we should never
|
||||
need to touch these files.
|
||||
|
||||
The autopoint tool depends on two macros in configure.ac: AM_GNU_GETTEXT,
|
||||
and AM_GNU_GETTEXT_VERSION([<version>]). From time to time we may need to
|
||||
update the set of gettext files that we use. To do so, update the gettext
|
||||
version number in AM_GNU_GETTEXT_VERSION and run autogen.sh. Be sure to
|
||||
also update the required gettext version in the spec file.
|
||||
|
||||
po/Makevars
|
||||
|
||||
Should be updated when we update gettext files from autopoint with a new
|
||||
gettext version. A file called po/Makevars.template will appear and we
|
||||
can move over our values to the new file and commit it. We do not need to
|
||||
change this file on a regular basis.
|
||||
|
||||
po/POTFILES.in
|
||||
|
||||
This file contains a listing of all source files in the project that
|
||||
have translatable strings.
|
||||
|
||||
Some files can't be handled by gettext directly, such as the GNOME desktop
|
||||
files and anything without a clear filename extension. For these types of
|
||||
files, add a rule to po/Rules-extract to create a file that gettext can
|
||||
handle, and add the name of the generated file to po/POTFILES.in.
|
||||
|
||||
po/LINGUAS
|
||||
|
||||
Space-delimited list of languages available. If a new language is
|
||||
added, it should be added to this file.
|
||||
|
||||
po/Rules-extract
|
||||
|
||||
Extra Makefile rules to process files that gettext can't handle on its
|
||||
own.
|
||||
|
||||
Currently there are two types of files handled in Rules-extract: files in
|
||||
a language that gettext doesn't know, and files in a language that gettext
|
||||
can't figure out from the filename. For the first type of file (.desktop
|
||||
files, consolehelper files), we use intltool-extract to create a C-style
|
||||
header file containing the translatable strings, and for the second we
|
||||
manually run xgettext, forcing a --language setting, and generate an
|
||||
intermediate .po file.
|
||||
|
||||
In both cases, the name of the generated file is what goes in
|
||||
po/POTFILES.in.
|
||||
|
||||
po/anaconda.pot
|
||||
|
||||
This is the template file built by xgettext containing all of the
|
||||
translatable strings. The file is updated and committed to git as part of
|
||||
building a release.
|
||||
|
||||
po/*.po
|
||||
|
||||
Actual translated strings, as maintained by the translation team(s). These
|
||||
files are not stored in git. The po-pull target will pull the latest
|
||||
translations from Transifex.
|
After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance0518f0e46c" name="inheritance0518f0e46c">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.shell_spoke.ShellSpoke" title=".. inheritance-diagram:: ShellSpoke" alt="" coords="329,309,527,337"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,8 @@
|
||||
<map id="inheritancea99f168d23" name="inheritancea99f168d23">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="73,157,233,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.keyboard.KeyboardSpoke" title=".. inheritance-diagram:: KeyboardSpoke" alt="" coords="48,233,257,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="152,81,313,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="173,5,292,33"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 30 KiB |
@ -0,0 +1,13 @@
|
||||
<map id="inheritance4b26f822c5" name="inheritance4b26f822c5">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.source.SourceSpoke" title="Spoke used to customize the install source repo." alt="" coords="439,385,620,413"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.EditTUISpoke" title="Spoke with declarative semantics, it contains" alt="" coords="348,309,508,337"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.helpers.SourceSwitchHandler" title="A class that can be used as a mixin handling" alt="" coords="532,309,732,337"/>
|
||||
<area shape="rect" id="node6" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node11" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance719cbf80e2" name="inheritance719cbf80e2">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.storage.StorageSpoke" title="Storage spoke where users proceed to customize storage features such" alt="" coords="333,309,523,337"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 8.4 KiB |
@ -0,0 +1,5 @@
|
||||
<map id="inheritance4e37dafe94" name="inheritance4e37dafe94">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.advstorage.zfcp.ZFCPDialog" title="Gtk dialog which allows users to manually add zFCP devices without" alt="" coords="5,157,188,185"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="41,81,152,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="29,5,164,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,12 @@
|
||||
<map id="inheritanceb4619035ea" name="inheritanceb4619035ea">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.gui.html#pyanaconda.ui.gui.helpers.GUIInputCheckHandler" title="Provide InputCheckHandler functionality for Gtk input screens." alt="" coords="503,81,720,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.gui.html#pyanaconda.ui.gui.helpers.GUISpokeInputCheckHandler" title="Provide InputCheckHandler functionality for graphical spokes." alt="" coords="484,157,739,185"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.html#pyanaconda.ui.helpers.InputCheckHandler" title="Provide a framework for adding input validation checks to a screen." alt="" coords="518,5,705,33"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.gui.spokes.password.PasswordSpoke" title=".. inheritance-diagram:: PasswordSpoke" alt="" coords="251,233,465,261"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="73,157,233,185"/>
|
||||
<area shape="rect" id="node5" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="152,81,313,109"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.FirstbootSpokeMixIn" title="This MixIn class marks Spokes as usable for Firstboot" alt="" coords="257,157,459,185"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="173,5,292,33"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,7 @@
|
||||
<map id="inheritance945d734cf8" name="inheritance945d734cf8">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.hubs.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="94,157,185,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.hubs.summary.SummaryHub" title=".. inheritance-diagram:: SummaryHub" alt="" coords="47,233,231,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="153,81,259,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 30 KiB |
@ -0,0 +1,13 @@
|
||||
<map id="inheritance4b26f822c5" name="inheritance4b26f822c5">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.source.SourceSpoke" title="Spoke used to customize the install source repo." alt="" coords="439,385,620,413"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.EditTUISpoke" title="Spoke with declarative semantics, it contains" alt="" coords="348,309,508,337"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.helpers.SourceSwitchHandler" title="A class that can be used as a mixin handling" alt="" coords="532,309,732,337"/>
|
||||
<area shape="rect" id="node6" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node11" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,7 @@
|
||||
<map id="inheritance945d734cf8" name="inheritance945d734cf8">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.hubs.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="94,157,185,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.hubs.summary.SummaryHub" title=".. inheritance-diagram:: SummaryHub" alt="" coords="47,233,231,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="153,81,259,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,12 @@
|
||||
<map id="inheritance55c7130382" name="inheritance55c7130382">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.gui.html#pyanaconda.ui.gui.helpers.GUIInputCheckHandler" title="Provide InputCheckHandler functionality for Gtk input screens." alt="" coords="503,81,720,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.gui.html#pyanaconda.ui.gui.helpers.GUISpokeInputCheckHandler" title="Provide InputCheckHandler functionality for graphical spokes." alt="" coords="484,157,739,185"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.html#pyanaconda.ui.helpers.InputCheckHandler" title="Provide a framework for adding input validation checks to a screen." alt="" coords="518,5,705,33"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.gui.spokes.user.UserSpoke" title=".. inheritance-diagram:: UserSpoke" alt="" coords="281,233,435,261"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="73,157,233,185"/>
|
||||
<area shape="rect" id="node5" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="152,81,313,109"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.FirstbootSpokeMixIn" title="This MixIn class marks Spokes as usable for Firstboot" alt="" coords="257,157,459,185"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="173,5,292,33"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritancec265f1ca2e" name="inheritancec265f1ca2e">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="270,157,407,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.warnings_spoke.WarningsSpoke" title=".. inheritance-diagram:: WarningsSpoke" alt="" coords="305,309,556,337"/>
|
||||
<area shape="rect" id="node4" title=".. inheritance-diagram:: StandaloneTUISpoke" alt="" coords="329,233,532,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.StandaloneSpoke" title="A StandaloneSpoke is a Spoke subclass that is displayed apart from any" alt="" coords="432,157,616,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="458,81,577,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance742ec8b57e" name="inheritance742ec8b57e">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.askvnc.VNCPassSpoke" title=".. inheritance-diagram:: VNCPassSpoke" alt="" coords="327,309,529,337"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 31 KiB |
@ -0,0 +1,13 @@
|
||||
<map id="inheritance55c7130382" name="inheritance55c7130382">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.user.UserSpoke" title=".. inheritance-diagram:: UserSpoke" alt="" coords="453,385,608,413"/>
|
||||
<area shape="rect" id="node4" href="pyanaconda.ui.html#pyanaconda.ui.common.FirstbootSpokeMixIn" title="This MixIn class marks Spokes as usable for Firstboot" alt="" coords="532,309,735,337"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.EditTUISpoke" title="Spoke with declarative semantics, it contains" alt="" coords="348,309,508,337"/>
|
||||
<area shape="rect" id="node6" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node11" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance9fd6cc9af9" name="inheritance9fd6cc9af9">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="270,157,407,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.progress.ProgressSpoke" title=".. inheritance-diagram:: ProgressSpoke" alt="" coords="329,309,532,337"/>
|
||||
<area shape="rect" id="node4" title=".. inheritance-diagram:: StandaloneTUISpoke" alt="" coords="329,233,532,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.StandaloneSpoke" title="A StandaloneSpoke is a Spoke subclass that is displayed apart from any" alt="" coords="432,157,616,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="458,81,577,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,9 @@
|
||||
<map id="inheritance08fe414db7" name="inheritance08fe414db7">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="290,157,450,185"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.gui.spokes.langsupport.LangsupportSpoke" title=".. inheritance-diagram:: LangsupportSpoke" alt="" coords="133,233,372,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="235,81,345,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="369,81,531,109"/>
|
||||
<area shape="rect" id="node4" href="pyanaconda.ui.gui.spokes.lib.html#pyanaconda.ui.gui.spokes.lib.lang_locale_handler.LangLocaleHandler" title="Class that could be used as a mixin for screens handling languages or" alt="" coords="5,157,265,185"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="391,5,509,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="223,5,357,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance99136694aa" name="inheritance99136694aa">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.software.SoftwareSpoke" title="Spoke used to read new value of text to represent source repo." alt="" coords="327,309,529,337"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 8.5 KiB |
@ -0,0 +1,5 @@
|
||||
<map id="inheritance4e37dafe94" name="inheritance4e37dafe94">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.advstorage.zfcp.ZFCPDialog" title="Gtk dialog which allows users to manually add zFCP devices without" alt="" coords="5,157,188,185"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="41,81,152,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="29,5,164,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,13 @@
|
||||
<map id="inheritanceb4619035ea" name="inheritanceb4619035ea">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.password.PasswordSpoke" title=".. inheritance-diagram:: PasswordSpoke" alt="" coords="423,385,638,413"/>
|
||||
<area shape="rect" id="node4" href="pyanaconda.ui.html#pyanaconda.ui.common.FirstbootSpokeMixIn" title="This MixIn class marks Spokes as usable for Firstboot" alt="" coords="532,309,735,337"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.EditTUIDialog" title="Spoke/dialog used to read new value of textual or password data" alt="" coords="348,309,508,337"/>
|
||||
<area shape="rect" id="node6" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node11" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1,9 @@
|
||||
<map id="inheritance719cbf80e2" name="inheritance719cbf80e2">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="197,157,357,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.storage.StorageSpoke" title=".. inheritance-diagram:: StorageSpoke" alt="" coords="88,233,277,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="142,81,253,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="277,81,438,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.helpers.StorageChecker" title="ui.helpers.StorageChecker" alt="" coords="5,157,173,185"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="298,5,417,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="130,5,265,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 19 KiB |
@ -0,0 +1,9 @@
|
||||
<map id="inheritancec86ce9e3e6" name="inheritancec86ce9e3e6">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.StandaloneSpoke" title=".. inheritance-diagram:: StandaloneSpoke" alt="" coords="289,157,472,185"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.gui.spokes.welcome.WelcomeLanguageSpoke" title=".. inheritance-diagram:: WelcomeLanguageSpoke" alt="" coords="126,233,390,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="239,81,349,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.StandaloneSpoke" title="A StandaloneSpoke is a Spoke subclass that is displayed apart from any" alt="" coords="374,81,558,109"/>
|
||||
<area shape="rect" id="node4" href="pyanaconda.ui.gui.spokes.lib.html#pyanaconda.ui.gui.spokes.lib.lang_locale_handler.LangLocaleHandler" title="Class that could be used as a mixin for screens handling languages or" alt="" coords="5,157,265,185"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="407,5,525,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="227,5,361,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 30 KiB |
@ -0,0 +1,13 @@
|
||||
<map id="inheritance4b26f822c5" name="inheritance4b26f822c5">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node7" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.source.SourceSpoke" title="Spoke used to customize the install source repo." alt="" coords="439,385,620,413"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.EditTUISpoke" title="Spoke with declarative semantics, it contains" alt="" coords="348,309,508,337"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.helpers.SourceSwitchHandler" title="A class that can be used as a mixin handling" alt="" coords="532,309,732,337"/>
|
||||
<area shape="rect" id="node6" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node10" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node11" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1,8 @@
|
||||
<map id="inheritance74f83ce4b5" name="inheritance74f83ce4b5">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="73,157,233,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.filter.FilterSpoke" title=".. inheritance-diagram:: FilterSpoke" alt="" coords="75,233,230,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="152,81,313,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="173,5,292,33"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,7 @@
|
||||
<map id="inheritance945d734cf8" name="inheritance945d734cf8">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.hubs.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="94,157,185,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.hubs.summary.SummaryHub" title=".. inheritance-diagram:: SummaryHub" alt="" coords="47,233,231,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="17,81,128,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.Hub" title="A Hub is an overview UI screen.  A Hub consists of one or more grids of" alt="" coords="153,81,259,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="5,5,140,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,9 @@
|
||||
<map id="inheritance28436954cd" name="inheritance28436954cd">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.NormalSpoke" title=".. inheritance-diagram:: NormalSpoke" alt="" coords="197,157,357,185"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.gui.spokes.custom.CustomPartitioningSpoke" title=".. inheritance-diagram:: CustomPartitioningSpoke" alt="" coords="55,233,310,261"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="142,81,253,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="277,81,438,109"/>
|
||||
<area shape="rect" id="node5" href="pyanaconda.ui.html#pyanaconda.ui.helpers.StorageChecker" title="ui.helpers.StorageChecker" alt="" coords="5,157,173,185"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="298,5,417,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="130,5,265,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,11 @@
|
||||
<map id="inheritance81ab1c32bf" name="inheritance81ab1c32bf">
|
||||
<area shape="rect" id="node1" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.UIScreen" title="Base class representing one TUI Screen. Shares some API with anaconda's GUI" alt="" coords="5,5,168,33"/>
|
||||
<area shape="rect" id="node7" href="pyanaconda.ui.tui.html#pyanaconda.ui.tui.tuiobject.TUIObject" title="Base class for Anaconda specific TUI screens. Implements the" alt="" coords="101,81,246,109"/>
|
||||
<area shape="rect" id="node2" href="pyanaconda.ui.tui.simpleline.html#pyanaconda.ui.tui.simpleline.base.Widget" title="simpleline.base.Widget" alt="" coords="271,81,420,109"/>
|
||||
<area shape="rect" id="node5" href="#pyanaconda.ui.tui.spokes.TUISpoke" title="Base TUI Spoke class implementing the pyanaconda.ui.common.Spoke API." alt="" coords="273,157,410,185"/>
|
||||
<area shape="rect" id="node3" href="#pyanaconda.ui.tui.spokes.askvnc.AskVNCSpoke" title=".. inheritance-diagram:: AskVNCSpoke" alt="" coords="331,309,525,337"/>
|
||||
<area shape="rect" id="node4" href="#pyanaconda.ui.tui.spokes.NormalTUISpoke" title=".. inheritance-diagram:: NormalTUISpoke" alt="" coords="339,233,517,261"/>
|
||||
<area shape="rect" id="node6" href="pyanaconda.ui.html#pyanaconda.ui.common.NormalSpoke" title="A NormalSpoke is a Spoke subclass that is displayed when the user" alt="" coords="434,157,595,185"/>
|
||||
<area shape="rect" id="node8" href="pyanaconda.ui.html#pyanaconda.ui.common.Spoke" title="A Spoke is a single configuration screen.  There are several different" alt="" coords="451,81,570,109"/>
|
||||
<area shape="rect" id="node9" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="193,5,327,33"/>
|
||||
</map>
|
After Width: | Height: | Size: 8.2 KiB |
@ -0,0 +1,5 @@
|
||||
<map id="inheritancee991b46c4f" name="inheritancee991b46c4f">
|
||||
<area shape="rect" id="node1" href="#pyanaconda.ui.gui.spokes.advstorage.fcoe.FCoEDialog" title=".. inheritance-diagram:: FCoEDialog" alt="" coords="5,157,188,185"/>
|
||||
<area shape="rect" id="node2" title="This is the base class from which all other GUI classes are derived.  It" alt="" coords="41,81,152,109"/>
|
||||
<area shape="rect" id="node3" href="pyanaconda.ui.html#pyanaconda.ui.common.UIObject" title="This is the base class from which all other UI classes are derived.  It" alt="" coords="29,5,164,33"/>
|
||||
</map>
|