#!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This has to be exported to make some magic below work. export DH_OPTIONS # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_MULTIARCH ?= $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH) QT_PLUGIN_DIR = usr/lib/$(DEB_BUILD_MULTIARCH)/qt4/plugins DEB_TEST_TARGET ?= Experimental QGIS_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p') ifeq (,$(DISTRIBUTION)) DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p") endif ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"wheezy jessie precise saucy trusty utopic sid-oracle")) DISTRIBUTION := sid endif DEB_BUILD_NAME ?= $(DISTRIBUTION)-$(DEB_BUILD_ARCH) ifeq (,$(DISPLAY)) TESTMAKE=xvfb-run -a -n 1 -s "-screen 0 1280x1024x24 -dpi 96" $(MAKE) else TESTMAKE=$(MAKE) endif QGIS_MAJOR=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_MAJOR "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_MINOR=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_MINOR "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_PATCH=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_PATCH "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_ABI=$(QGIS_MAJOR).$(QGIS_MINOR).$(QGIS_PATCH) GRASS_ABI=$(subst .,,$(shell pkg-config --modversion grass|sed -e "s/\.//g" -e "s/RC/-/")) GRASS=grass$(subst .,,$(shell pkg-config --modversion grass|cut -d. -f1,2)) CMAKE_OPTS := \ -DBUILDNAME=$(DEB_BUILD_NAME) \ -DCMAKE_VERBOSE_MAKEFILE=1 \ -DCMAKE_INSTALL_PREFIX=/usr \ -DGRASS_PREFIX=/usr/lib/grass64 \ -DBINDINGS_GLOBAL_INSTALL=TRUE \ -DPEDANTIC=TRUE \ -DWITH_QSPATIALITE=TRUE \ -DWITH_SERVER=TRUE \ -DWITH_SERVER_PLUGINS=TRUE \ -DSERVER_SKIP_ECW=TRUE \ -DQGIS_CGIBIN_SUBDIR=/usr/lib/cgi-bin \ -DWITH_APIDOC=TRUE \ -DWITH_CUSTOM_WIDGETS=TRUE \ -DWITH_GLOBE=TRUE \ -DWITH_INTERNAL_HTTPLIB2=FALSE \ -DWITH_INTERNAL_JINJA2=FALSE \ -DWITH_INTERNAL_MARKUPSAFE=FALSE \ -DWITH_INTERNAL_PYGMENTS=FALSE \ -DWITH_INTERNAL_DATEUTIL=FALSE \ -DWITH_INTERNAL_PYTZ=FALSE \ -DWITH_INTERNAL_SIX=FALSE ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif ifneq (,$(findstring $(DISTRIBUTION),"wheezy jessie sid precise saucy")) CMAKE_OPTS += -DWITH_PYSPATIALITE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"sid sid-oracle")) CMAKE_OPTS += -DPOSTGRES_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpq.so endif ifneq (,$(findstring $(DISTRIBUTION),"jessie saucy trusty utopic sid sid-oracle")) CMAKE_OPTS += -DPYTHON_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpython2.7.so endif ifneq (,$(findstring -oracle,$(DISTRIBUTION))) CMAKE_OPTS += -DWITH_ORACLE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"sid")) CMAKE_OPTS += -DSPATIALINDEX_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libspatialindex.so endif ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CMAKE_OPTS += -DCMAKE_BUILD_TYPE=Debug endif ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) CMAKE_OPTS += -DENABLE_TESTS=FALSE else CMAKE_OPTS += -DENABLE_TESTS=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"wheezy jessie saucy trusty sid sid-oracle")) CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS) LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 CXXFLAGS += -O0 else CFLAGS += -O2 CXXFLAGS += -O2 endif ifneq (,$(findstring profile,$(DEB_BUILD_OPTIONS))) CFLAGS += -pg CXXFLAGS += -pg LDFLAGS += -pg endif define gentemplate $(2): $(1) sed -r \ -e 's/^#(.* |)$(DISTRIBUTION)( .*|)#//' \ -e '/^#($|[^!])/d' \ -e "s/\{DEB_BUILD_GNU_TYPE\}/$(DEB_BUILD_GNU_TYPE)/g" \ -e "s#\{QT_PLUGIN_DIR\}#$(QT_PLUGIN_DIR)#g" \ -e "s/\{QGIS_ABI\}/$(QGIS_ABI)/g" \ -e "s/\{GRASS\}/$(GRASS)/g" \ -e "s/\{GRASS_ABI\}/$(GRASS_ABI)/g" $$^ >$$@ templates:: $(2) templateclean:: rm -f $(2) endef $(foreach t,$(wildcard debian/*.in),$(eval $(call gentemplate,$(t),$(basename $(t))))) $(foreach t,$(wildcard debian/*{QGIS_ABI}*),$(eval $(call gentemplate,$(t),$(subst {QGIS_ABI},$(QGIS_ABI),$(t))))) cleantemplates: $(MAKE) -f debian/rules templateclean $(MAKE) -f debian/rules debian/control debian/compat binary build clean install: dh $@ --with python2 --parallel --builddirectory=debian/build override_dh_clean: cleantemplates dh_clean # automatically generated files -$(RM) $(CURDIR)/src/core/qgscontexthelp_texts.cpp -$(RM) $(CURDIR)/src/core/qgsexpression_texts.cpp -$(RM) -r $(CURDIR)/debian/build/ override_dh_auto_configure: templates dh_auto_configure -- $(CMAKE_OPTS) ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) override_dh_auto_test: # Code to run the package test suite - and ignore the outcome for now mkdir -p debian/tmp/locale/ localedef -f UTF-8 -i en_US ./debian/tmp/locale/en_US.UTF-8/ -LOCPATH=$(CURDIR)/debian/tmp/locale/ \ LC_ALL=en_US.UTF-8 \ LD_LIBRARY_PATH=$(CURDIR)/debian/build/output/lib:$(LD_LIBRARY_PATH) \ PATH=/usr/sbin:$(PATH) \ $(TESTMAKE) -C debian/build $(DEB_TEST_TARGET) else override_dh_auto_test: @echo Skipping tests. endif override_dh_auto_install: dh_auto_install # Install menu pixmap install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/pixmaps install -o root -g root -m 644 $(CURDIR)/images/icons/qgis_icon.svg $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.svg install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.png install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-mime-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis-mime.png install -o root -g root -m 644 $(CURDIR)/debian/qgis-icon.xpm $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.xpm # Install application icon for size in 8x8 16x16 22x22 24x24 32x32 36x36 42x42 48x48 64x64 72x72 80x80 96x96 128x128 192x192 256x256 512x512; do \ install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/icons/hicolor/$${size}/apps ; \ install -o root -g root -m 644 $(CURDIR)/debian/qgis-icon$${size}.png $(CURDIR)/debian/tmp/usr/share/icons/hicolor/$${size}/apps/qgis.png ; \ done install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/icons/scalable/apps install -o root -g root -m 644 $(CURDIR)/images/icons/qgis_icon.svg $(CURDIR)/debian/tmp/usr/share/icons/scalable/apps/qgis.svg # Install desktop files install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/applications install -o root -g root -m 644 $(CURDIR)/debian/qgis.desktop $(CURDIR)/debian/tmp/usr/share/applications install -o root -g root -m 644 $(CURDIR)/debian/qbrowser.desktop $(CURDIR)/debian/tmp/usr/share/applications # Mime info install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/mime/packages install -o root -g root -m 644 $(CURDIR)/debian/qgis.xml $(CURDIR)/debian/tmp/usr/share/mime/packages install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/mimelnk/application install -o root -g root -m 644 $(CURDIR)/debian/mime/application/* $(CURDIR)/debian/tmp/usr/share/mimelnk/application # qgis binaries install -o root -g root -m 755 -d $(CURDIR)/debian/qgis/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis $(CURDIR)/debian/qgis/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qbrowser $(CURDIR)/debian/qgis/usr/bin $(RM) $(CURDIR)/debian/tmp/usr/bin/qgis $(RM) $(CURDIR)/debian/tmp/usr/bin/qbrowser # qgis binary wrappers install -o root -g root -m 755 -d $(CURDIR)/debian/qgis-plugin-grass/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis-plugin-grass/usr/bin/qgis install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis-plugin-grass/usr/bin/qbrowser override_dh_install: # Don't ship srs.db, automatically updated in postinst with crssync mv $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs.db $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs-template.db perl -i -pe 's=#!/usr/bin/env python=#!/usr/bin/python2.7=;' $$(find debian/tmp -name "*.py") # remove unwanted files $(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/api/installdox $(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/api/html/jquery.js # Don't include a copy of the world.tif also included in osgearth-data $(RM) $(CURDIR)/debian/tmp/usr/share/qgis/globe/world.tif # remove extra license files -find $(CURDIR)/debian/tmp/usr/share/qgis/resources/cpt-city-qgis-min/ -name COPYING.xml -delete $(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/LICENSE $(RM) $(CURDIR)/debian/tmp/usr/share/qgis/python/plugins/db_manager/LICENSE # Man pages are installed by dh_installman $(RM) $(CURDIR)/debian/tmp/usr/man/man1/qgis.1 $(RM) $(CURDIR)/debian/tmp/usr/man/man1/qbrowser.1 dh_install --autodest --list-missing override_dh_installchangelogs: dh_installchangelogs ChangeLog override_dh_installman: dh_installman -pqgis qgis.1 qbrowser.1 override_dh_installmime: dh_installmime -pqgis override_dh_python2: dh_python2 --no-guessing-versions dh_sip -ppython-qgis override_dh_compress: dh_compress --exclude=pdf override_dh_makeshlibs: dh_makeshlibs -Xqgis-plugin-grass -Xlibqgis-customwidgets$(QGIS_ABI) -- -c0 -v$(QGIS_VERSION) override_dh_shlibdeps: dh_shlibdeps -l/usr/lib/$(GRASS)/lib