Pip as root has issues installing modules already present on the system. Thus let's perform actions that are not required to run as root to be done by the standard user.
169 lines
5.7 KiB
Makefile
169 lines
5.7 KiB
Makefile
buildroot = /
|
|
docdir = /usr/share/doc/packages
|
|
python_version = 3
|
|
python_lookup_name = python$(python_version)
|
|
python = $(shell which $(python_lookup_name))
|
|
sc_disable = SC1091,SC1090,SC2001,SC2174,SC1117,SC2048,SC2004
|
|
|
|
LC = LC_MESSAGES
|
|
|
|
version := $(shell \
|
|
$(python) -c \
|
|
'from kiwi.version import __version__; print(__version__)'\
|
|
)
|
|
|
|
install_dracut:
|
|
for dracut in dracut/modules.d/*; do \
|
|
${MAKE} -C $$dracut install ;\
|
|
done
|
|
|
|
install_package_docs:
|
|
install -d -m 755 ${buildroot}${docdir}/python-kiwi
|
|
install -m 644 LICENSE \
|
|
${buildroot}${docdir}/python-kiwi/LICENSE
|
|
install -m 644 README.rst \
|
|
${buildroot}${docdir}/python-kiwi/README
|
|
|
|
install:
|
|
# apart from python sources there are also
|
|
# the manual pages and the completion
|
|
# Note: These information will be missing when installed from pip
|
|
# manual pages
|
|
install -d -m 755 ${buildroot}usr/share/man/man8
|
|
for man in doc/build/man/*.8; do \
|
|
install -m 644 $$man ${buildroot}usr/share/man/man8 ;\
|
|
done
|
|
# completion
|
|
install -d -m 755 ${buildroot}usr/share/bash-completion/completions
|
|
$(python) helper/completion_generator.py \
|
|
> ${buildroot}usr/share/bash-completion/completions/kiwi-ng
|
|
# kiwi default configuration
|
|
install -d -m 755 ${buildroot}etc
|
|
install -m 644 kiwi.yml ${buildroot}etc/kiwi.yml
|
|
# kiwi old XSL stylesheets for upgrade
|
|
install -d -m 755 ${buildroot}usr/share/kiwi
|
|
cp -a helper/xsl_to_v74 ${buildroot}usr/share/kiwi/
|
|
|
|
kiwi/schema/kiwi.rng: kiwi/schema/kiwi.rnc
|
|
# whenever the schema is changed this target will convert
|
|
# the short form of the RelaxNG schema to the format used
|
|
# in code and auto generates the python data structures
|
|
@type -p trang &>/dev/null || \
|
|
(echo "ERROR: trang not found in path: $(PATH)"; exit 1)
|
|
trang -I rnc -O rng kiwi/schema/kiwi.rnc kiwi/schema/kiwi.rng
|
|
# XML parser code is auto generated from schema using generateDS
|
|
# http://pythonhosted.org/generateDS
|
|
# ---
|
|
# a) modify arch-name xsd:token pattern to be generic because
|
|
# generateDS translates the regular expression into another
|
|
# expression which is different and wrong compared to the
|
|
# expression in the schema
|
|
cat kiwi/schema/kiwi.rnc | sed -e \
|
|
s'@arch-name = xsd:token.*@arch-name = xsd:token {pattern = ".*"}@' >\
|
|
kiwi/schema/kiwi_modified_for_generateDS.rnc
|
|
# convert schema rnc format into xsd format and call generateDS
|
|
trang -I rnc -O xsd kiwi/schema/kiwi_modified_for_generateDS.rnc \
|
|
kiwi/schema/kiwi_for_generateDS.xsd
|
|
generateDS.py -f --external-encoding='utf-8' --no-dates --no-warnings \
|
|
-o kiwi/xml_parse.py kiwi/schema/kiwi_for_generateDS.xsd
|
|
rm kiwi/schema/kiwi_for_generateDS.xsd
|
|
rm kiwi/schema/kiwi_modified_for_generateDS.rnc
|
|
|
|
obs_test_status:
|
|
./.obs_test_status
|
|
|
|
valid:
|
|
for i in `find build-tests test kiwi -name *.xml -o -name *.kiwi`; do \
|
|
if [ ! -L $$i ];then \
|
|
xsltproc -o $$i.converted kiwi/xsl/master.xsl $$i && \
|
|
mv $$i.converted $$i ;\
|
|
fi \
|
|
done
|
|
|
|
git_attributes:
|
|
# the following is required to update the $Format:%H$ git attribute
|
|
# for details on when this target is called see setup.py
|
|
git archive HEAD kiwi/version.py | tar -x
|
|
|
|
clean_git_attributes:
|
|
# cleanup version.py to origin state
|
|
# for details on when this target is called see setup.py
|
|
git checkout kiwi/version.py
|
|
|
|
setup:
|
|
poetry install --all-extras
|
|
|
|
docs: setup
|
|
poetry run make -C doc man html
|
|
|
|
docs_suse: setup
|
|
poetry run make -C doc xml
|
|
rm -rf doc/build/restxml
|
|
mv doc/build/xml doc/build/restxml
|
|
poetry run pip install \
|
|
git+https://github.com/openSUSE/rstxml2docbook.git@feature/kiwi
|
|
poetry run bash -c 'pushd doc && rstxml2docbook \
|
|
-v --no-split -o build/xml/book.xml build/restxml/index.xml'
|
|
bash -c 'mkdir -p doc/build/images/src/png && \
|
|
cp -a doc/source/.images/* doc/build/images/src/png'
|
|
cp doc/DC-kiwi doc/build/
|
|
bash -c 'pushd doc/build && daps -d DC-kiwi html'
|
|
|
|
test_scripts: setup
|
|
poetry run bash -c 'pushd test/scripts && sudo pytest -s -vv'
|
|
|
|
check: setup
|
|
# shell code checks
|
|
find build-tests -name config.sh | xargs shellcheck
|
|
bash -c 'shellcheck -e ${sc_disable} dracut/modules.d/*/*.sh -s bash'
|
|
bash -c 'shellcheck -e ${sc_disable} kiwi/config/functions.sh -s bash'
|
|
bash -c 'shellcheck build-tests.sh'
|
|
# python flake tests
|
|
poetry run flake8 --statistics -j auto --count kiwi
|
|
poetry run flake8 --statistics -j auto --count test/unit
|
|
poetry run flake8 --statistics -j auto --count test/scripts
|
|
|
|
test: setup
|
|
# python static code checks
|
|
poetry run mypy kiwi
|
|
# unit tests
|
|
poetry run bash -c 'pushd test/unit && pytest -n 5 \
|
|
--doctest-modules --no-cov-on-fail --cov=kiwi \
|
|
--cov-report=term-missing --cov-fail-under=100 \
|
|
--cov-config .coveragerc'
|
|
|
|
build: clean check test
|
|
# build the sdist source tarball
|
|
poetry build --format=sdist
|
|
# provide rpm source tarball
|
|
mv dist/kiwi-${version}.tar.gz dist/python-kiwi.tar.gz
|
|
# update rpm changelog using reference file
|
|
helper/update_changelog.py --since package/python-kiwi.changes --fix > \
|
|
dist/python-kiwi.changes
|
|
helper/update_changelog.py --file package/python-kiwi.changes >> \
|
|
dist/python-kiwi.changes
|
|
# update package version in spec file
|
|
cat package/python-kiwi-spec-template | sed -e s'@%%VERSION@${version}@' \
|
|
> dist/python-kiwi.spec
|
|
# update package version in PKGBUILD file
|
|
md5sums=$$(md5sum dist/python-kiwi.tar.gz | cut -d" " -f1); \
|
|
cat package/python-kiwi-pkgbuild-template | sed \
|
|
-e s'@%%VERSION@${version}@' \
|
|
-e s"@%%MD5SUM@$${md5sums}@" > dist/PKGBUILD
|
|
# provide rpm rpmlintrc
|
|
cp package/python-kiwi-rpmlintrc dist
|
|
# provide patches
|
|
cp package/*.patch dist
|
|
|
|
prepare_for_pypi: clean setup
|
|
# documentation render and tests
|
|
poetry run make -C doc man
|
|
# sdist tarball, the actual publishing happens via the
|
|
# ci-publish-to-pypi.yml github action
|
|
poetry build --format=sdist
|
|
|
|
clean: clean_git_attributes
|
|
rm -rf dist
|
|
rm -rf doc/build
|
|
rm -rf doc/dist
|