kiwi-el8/Makefile
Marcus Schäfer afebd3897e Fix/workaround invalid xsd pattern translation
The data structures are auto generated by the generateDS
tool which works nicely except for the arch-name xsd pattern
used in the RelaxNG schema. For some reason the used regular
expression is translated by generateDS into a python
expression not matching the original expression from the
schema. The result is an invalid python warning message after
the schema has successfully validated the arch string.
The problem has been reported to the generateDS developer.

As long as their is no fix available in generateDS the
following workaround in kiwi applies: The original xs:token
pattern validation will be disabled on the generateDS
level and applies only to the schema. This Fixes #347
2017-06-01 11:37:35 +02:00

157 lines
5.0 KiB
Makefile

buildroot = /
python_version = 3
LC = LC_MESSAGES
version := $(shell \
python3 -c 'from kiwi.version import __version__; print(__version__)'\
)
.PHONY: test
test:
tox -e 3.4
flake:
tox -e check
.PHONY: tools
tools:
# apart from all python source we need to compile the
# C tools. see setup.py for details when this target is
# called
${MAKE} -C tools all
install:
# apart from all python source we also need to install
# the C tools, the manual pages and the completion
# see setup.py for details when this target is called
${MAKE} -C tools buildroot=${buildroot} install
# manual pages
install -d -m 755 ${buildroot}usr/share/man/man2
for man in doc/build/man/*.2; do \
test -e $$man && gzip -f $$man || true ;\
done
for man in doc/build/man/*.2.gz; do \
install -m 644 $$man ${buildroot}usr/share/man/man2 ;\
done
# completion
install -d -m 755 ${buildroot}etc/bash_completion.d
helper/completion_generator \
> ${buildroot}etc/bash_completion.d/kiwi-ng-${python_version}.sh
# license
install -d -m 755 ${buildroot}/usr/share/doc/packages/python-kiwi
install -m 644 LICENSE \
${buildroot}/usr/share/doc/packages/python-kiwi/LICENSE
install -m 644 README.rst \
${buildroot}/usr/share/doc/packages/python-kiwi/README
tox:
tox
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
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
po:
./.locale
for i in `ls -1 kiwi/boot/locale`; do \
if [ -d ./kiwi/boot/locale/$$i ];then \
if [ ! "$$i" = "kiwi-help" ] && [ ! "$$i" = "kiwi-template" ];then \
(cd ./kiwi/boot/locale/$$i/${LC} && msgfmt -o kiwi.mo kiwi.po);\
fi \
fi \
done
for boot_arch in kiwi/boot/arch/*; do \
if [ ! -L $$boot_arch ];then \
for boot_image in $$boot_arch/*/*/root; do \
mkdir -p $$boot_image/usr/share/locale ;\
cp -a kiwi/boot/locale/* $$boot_image/usr/share/locale/ ;\
rm -rf $$boot_image/usr/share/locale/kiwi-template ;\
rm -rf $$boot_image/usr/share/locale/*/LC_MESSAGES/kiwi.po ;\
done \
fi \
done
po_status:
./.fuzzy
valid:
for i in `find test kiwi -name *.xml`; 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
sdist_prepare:
# build the architecture specific boot image structure
tar --dereference -czf boot_arch.tgz kiwi/boot/arch && \
mv kiwi/boot/arch boot_arch && mkdir kiwi/boot/arch
build: clean po tox sdist_prepare
# create setup.py variant for rpm build.
# delete module versions from setup.py for building an rpm
# the dependencies to the python module rpm packages is
# managed in the spec file
sed -ie "s@>=[0-9.]*'@'@g" setup.py
# build the sdist source tarball
python3 setup.py sdist
# cleanup sdist_prepare actions
rm -f boot_arch.tgz && \
rmdir kiwi/boot/arch && mv boot_arch kiwi/boot/arch
# restore original setup.py backed up from sed
mv setup.pye setup.py
# provide rpm source tarball
mv dist/kiwi-${version}.tar.gz dist/python-kiwi.tar.gz
# provide rpm changelog from git changelog
git log | helper/changelog_generator |\
helper/changelog_descending > 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
# provide rpm rpmlintrc
cp package/python-kiwi-rpmlintrc dist
# provide rpm boot packages source
# metadata for the buildservice when kiwi is used in the
# buildservice this data is needed
helper/kiwi-boot-packages > dist/python-kiwi-boot-packages
pypi: clean po tox sdist_prepare
python3 setup.py sdist upload
rm -f boot_arch.tgz && \
rmdir kiwi/boot/arch && mv boot_arch kiwi/boot/arch
clean: clean_git_attributes
rm -rf dist
rm -rf build
${MAKE} -C tools clean