#!/usr/bin/make -f # export DH_VERBOSE=1 include /usr/share/dpkg/pkg-info.mk include /usr/share/dpkg/architecture.mk # workaround for virtual memory exhaustion, see #883986 ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel powerpcspe)) export DEB_CXXFLAGS_MAINT_APPEND = -g1 endif TEST_DISABLE_MISC = issue1165\\|issue1215\\|throwntogethertest_issue1089\\|openscad-cameyeortho_camera-tests\\|openscad-cameyeortho-viewall_camera-tests TEST_DISABLE_EXPERIMENTAL = astdumptest_allexpressions\\|echotest_function-literal-compare\\|echotest_function-literal-tests\\|echotest_allexpressions\\|lazyunion-.* # Disable know failing tests on big-endian # (https://github.com/3MFConsortium/lib3mf/issues/160) ifeq ($(DEB_TARGET_ARCH_ENDIAN), big) TEST_DISABLE_BIGENDIAN = \\|3mfpngtest_cube10\\|3mfexport_3mf-export\\|cgalbinstlcgalpngtest_bad-stl-pcbvicebar\\|cgalbinstlcgalpngtest_bad-stl-tardis\\|cgalbinstlcgalpngtest_issue1225\\|cgalbinstlcgalpngtest_fn_bug else TEST_DISABLE_BIGENDIAN = endif export DEB_BUILD_MAINT_OPTIONS = hardening=+all # Prevent pkgstripfiles/optipng from modifying expected PNGs in # openscad-testing-data when built on Ubuntu by recompressing them. export NO_PNG_PKG_MANGLE := 1 export QT_SELECT = qt5 # Limit parallel builds. The compilation can take a lot of memory (on the order # of 2GB per process), try to avoid running out of memory or taking down the # system in swap-o-death. MAX_PARALLEL := $(shell perl -ne '$$p = int($$1/(3*1024**2)) if m/MemTotal:\s+(\d+)\s+kB/; END { if (defined($$p)) { $$p = 1 if $$p < 1; print "--max-parallel=$$p"} }' /proc/meminfo ) %: dh $@ --buildsystem=qmake override_dh_auto_configure: dh_auto_configure -- \ VERSION=$$(echo "$(DEB_VERSION_UPSTREAM)" | sed -e 's/-.*//' -e 's/~/-/') \ CONFIG-=debug CONFIG+=qopenglwidget override_dh_auto_build: dh_auto_build $(MAX_PARALLEL) # not run in dh_auto_configure stage, as it requires the openscad binary to be already built dh_auto_configure -Dtests --buildsystem=cmake dh_auto_build -Dtests --buildsystem=cmake # fix absolute paths in ctest scripts (relative paths will work during # the build time tests, and are catered for by the openscad-testrun # script). # # note that often, a `../openscad` reference remains. this is left in # place, as not all tools involved honor $PATH (eg. because they do an # explicit `os.path.exists` on their openscad binary). cd obj-* && perl -i.bak -npe 'use Cwd; my $$here = getcwd(); s/\Q$$here\E/./g' *.cmake perl -i.bak -npe 'use Cwd; my $$here = getcwd(); s/\Q$$here\/tests\E/./g' obj-*/*.cmake override_dh_auto_test: # Workaround to have the test suite usable out-of-tree, until a fix can # be introduced upstream that makes ctest also work with out-of-tree # building. ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) cd obj-* && ln -s ../tests/* -t. || echo "Some files are expected to already be present." endif # OPENSCADPATH has to be set because the default library dir is # determined based on the openscad binary's path (will be ok after # installation). # # clearing DISPLAY is not strictly necessary here as this is already # done by the build environment (at least by gbp buildpackage), but it # makes it clear that the intent is to always render the build-time # tests in software. # # as for the tests excluded with --exclude-regex, see README.testsuite. DISPLAY= OPENSCADPATH=/usr/share/openscad/libraries dh_auto_test -Dtests --buildsystem=cmake -- ARGS+="--exclude-regex $(TEST_DISABLE_MISC)\\|$(TEST_DISABLE_EXPERIMENTAL)$(TEST_DISABLE_BIGENDIAN)" || ( echo '---- content of ' obj-*/Testing/Temporary/*_report.html ' ----'; cat obj-*/Testing/Temporary/*_report.html; echo; echo '---- end content ----'; exit 1) override_dh_auto_install: # fix absolute paths in generated scad files. this step logically # belongs to the similar lines in the dh_auto_build override, but can # first be done here because for the build time tests, the original # paths are still required. find testdata -name \*.scad -exec perl -i -pe 'use Cwd; my $$here = getcwd(); s[\Q$$here\E/tests/../testdata][/usr/share/openscad/testdata]g' {} + dh_auto_install --destdir=debian/openscad install -d debian/openscad/usr/share/doc/openscad mv debian/openscad/usr/share/openscad/color-schemes/readme.txt \ debian/openscad/usr/share/doc/openscad/readme_color-schemes.txt # don't ship mcad, neither the empty directory (when this is built from # a normal git source checkout) nor the full library (when this is # built from a git checkout with submodules or from a tarball). mcad # gets its own package. rm -rf debian/openscad/usr/share/openscad/libraries # remove fonts rm -rf debian/openscad/usr/share/openscad/fonts # Remove this, which is available in debian/copyright instead. rm -f debian/openscad/usr/share/openscad/examples/COPYING-CC0.txt override_dh_install: dh_install -X.uuid \ -Xtestdata/python \ -Xtestdata/ttf/liberation-2.00.1/LICENSE \ -Xtestdata/ttf/liberation-2.00.1/AUTHORS \ -Xtestdata/ttf/liberation-2.00.1/ChangeLog \ -Xtestdata/ttf/liberation-2.00.1/README \ -Xtestdata/ttf/liberation-2.00.1/TODO \ -Xtestdata/ttf/marvosym-3.10/FILE_ID.DIZ \ -Xtestdata/ttf/marvosym-3.10/liesmich.txt \ -Xtestdata/ttf/marvosym-3.10/readme.txt \ -Xtestdata/ttf/amiri-0.106/OFL-FAQ.txt \ -Xtestdata/ttf/amiri-0.106/OFL.txt \ -Xtestdata/ttf/amiri-0.106/README.txt # Rename a couple random readme's installed by upstream. The if [ ] # check is needed so binary-arch doesn't try to rename files in # -indep-only packages. if [ -e debian/openscad-testing-data/usr/share/openscad/testdata/manual/issue214/README.md ] ; then \ install -d debian/openscad-testing-data/usr/share/doc/openscad-testing-data ; \ mv debian/openscad-testing-data/usr/share/openscad/testdata/manual/issue214/README.md \ debian/openscad-testing-data/usr/share/doc/openscad-testing-data/README_issue214.md ; \ mv debian/openscad-testing-data/usr/share/openscad/testdata/modulecache-tests/README.txt \ debian/openscad-testing-data/usr/share/doc/openscad-testing-data/README_modulecache-tests.txt ; \ fi # Fix missing exec bit for script that goes into /usr/libexec/... if [ -e debian/openscad-testing/usr/libexec/openscad/testprograms/export_import_pngtest.py ] ; then \ chmod +x debian/openscad-testing/usr/libexec/openscad/testprograms/export_import_pngtest.py ; \ chmod +x debian/openscad-testing/usr/libexec/openscad/testprograms/export_pngtest.py ; \ fi override_dh_shlibdeps: dh_shlibdeps # Openscad is not compatible with GLES, bug 982358. sed -i 's/ | libqt5gui5-gles (>= [.0-9]*)//' debian/openscad.substvars override_dh_strip: dh_strip override_dh_auto_clean: dh_auto_clean dh_auto_clean -Dtests --buildsystem=cmake