kiwi-el8/Makefile
Marcus Schäfer b76429ed01
Drop use of travis-sphinx
According to the documentation of peaceiris/actions-gh-pages
the sphinx-build output can be directly consumed to publish
to github pages
2025-03-24 19:10:07 +01:00

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 \
'pip install pytest-container && pushd test/scripts && pytest -s -vv'
check: setup
# shell code checks
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