qubes-installer-qubes-os/anaconda/Makefile.am

222 lines
8.1 KiB
Makefile
Raw Permalink Normal View History

# Makefile.am for anaconda
#
# Copyright (C) 2009 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
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# 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/>.
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = data docs dracut po pyanaconda scripts tests widgets utils
EXTRA_DIST = COPYING .coveragerc
# 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/* po/Makefile.in.in po/Rules-quot \
test-driver
CLEANFILES = *~
dist_noinst_DATA = $(PACKAGE_NAME).spec
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 = --srcfile $(srcdir)/po/anaconda.pot --push-type source --force
RC_RELEASE ?= $(shell date -u +0.1.%Y%m%d%H%M%S)
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)
@echo "Tagged as $(ARCHIVE_TAG)"
po-pull:
rpm -q zanata-python-client &>/dev/null || ( echo "need to run: dnf install zanata-python-client"; exit 1 )
( cd $(srcdir) && zanata pull $(ZANATA_PULL_ARGS) )
# Try to fetch translations, but if that fails just keep going
po-fallback:
-$(MAKE) po-pull
scratch:
$(MAKE) ARCHIVE_TAG=HEAD dist
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)" ; \
fi ; \
if [ ! -z "$(MAP)" ]; then \
opts="$${opts} -m $(MAP)" ; \
fi ; \
if [ ! -z "$(BZDEBUG)" ]; then \
opts="$${opts} -d" ; \
fi ; \
( cd $(srcdir) && scripts/makebumpver --skip-zanata $${opts} ) || exit 1 ; \
$(MAKE) -C po $(PACKAGE_NAME).pot-update
release:
$(MAKE) dist && $(MAKE) tag
rc-release: scratch-bumpver scratch
mock -r $(MOCKCHROOT) --scrub all || exit 1
mock -r $(MOCKCHROOT) --buildsrpm --spec ./$(PACKAGE_NAME).spec --sources . --resultdir $(PWD) || exit 1
mock -r $(MOCKCHROOT) --rebuild *src.rpm --resultdir $(PWD) || exit 1
bumpver: po-pull
@opts="-n $(PACKAGE_NAME) -v $(PACKAGE_VERSION) -r $(PACKAGE_RELEASE) -b $(PACKAGE_BUGREPORT)" ; \
if [ ! -z "$(IGNORE)" ]; then \
opts="$${opts} -i $(IGNORE)" ; \
fi ; \
if [ ! -z "$(MAP)" ]; then \
opts="$${opts} -m $(MAP)" ; \
fi ; \
if [ ! -z "$(BZDEBUG)" ]; then \
opts="$${opts} -d" ; \
fi ; \
if [ ! -z "$(SKIP_ACKS)" ]; then \
opts="$${opts} -s" ; \
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
# -> installs packages needed to build Anaconda
# don't try to install s390utils-devel on non-s390 arches
install-buildrequires:
srcdir="$(srcdir)" && \
: $${srcdir:=.} && \
pkglist="$$(grep ^BuildRequires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)" && \
if ! [[ $$(uname -m) =~ s390x? ]]; then \
pkglist=$$(echo "$$pkglist" | grep -v s390utils) ; \
fi ; \
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
# Filter out the %{name} entries required by -devel
install-requires:
srcdir="$(srcdir)" && \
: $${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
# image is made, but if you want to keep it around, run:
# make updates.img KEEP=y
updates:
@opts="-c" ; \
keep="$$(echo $(KEEP) | cut -c1 | tr [a-z] [A-Z])" ; \
if [ "$${keep}" = "Y" ]; then \
opts="$${opts} -k" ; \
fi ; \
( cd $(srcdir) && scripts/makeupdates $${opts} -b '$(abs_builddir)' )
# GUI TESTING
runglade:
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
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 \
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
GLADE_CATALOG_SEARCH_PATH=$(srcdir)/widgets/glade \
GLADE_MODULE_SEARCH_PATH=$(builddir)/widgets/src/.libs \
glade ${GLADE_FILE}
ci: rc-release
@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_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