#!/usr/bin/make -f # -*- makefile -*- export DH_VERBOSE=1 export DEBIAN_DISABLE_RUBYGEMS_INTEGRATION = 1 # This has to be exported to make some magic below work. export DH_OPTIONS TESTOPTS += -v export TESTOPTS DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) include /usr/share/dpkg/pkg-info.mk export RUBY_VERSION := $(patsubst ruby%,%,$(DEB_SOURCE)) export RUBY_API_VERSION := $(RUBY_VERSION).0 configure_options += --prefix=/usr configure_options += --enable-multiarch configure_options += --target=$(DEB_HOST_MULTIARCH) configure_options += --program-suffix=$(RUBY_VERSION) configure_options += --with-soname=ruby-$(RUBY_VERSION) configure_options += --enable-shared configure_options += --disable-rpath configure_options += --with-sitedir='/usr/local/lib/site_ruby' configure_options += --with-sitearchdir="/usr/local/lib/$(DEB_HOST_MULTIARCH)/site_ruby" configure_options += --runstatedir=/var/run configure_options += --localstatedir=/var configure_options += --sysconfdir=/etc # These are embedded in rbconfig.rb and should be triplet-prefixed for # cross compilation. configure_options += AS=$(DEB_HOST_GNU_TYPE)-as configure_options += CC=$(DEB_HOST_GNU_TYPE)-gcc configure_options += CXX=$(DEB_HOST_GNU_TYPE)-g++ configure_options += LD=$(DEB_HOST_GNU_TYPE)-ld ifneq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) # Cross-building. This is the same logic that debhelper's # lib/Debian/Debhelper/Buildsystem/autoconf.pm uses. # note that you also need --with-baseruby, so use the "cross" build-profile. configure_options += --build=$(DEB_BUILD_GNU_TYPE) configure_options += --host=$(DEB_HOST_GNU_TYPE) endif ifneq ($(filter cross,$(DEB_BUILD_PROFILES)),) configure_options += --with-baseruby=/usr/bin/ruby endif # the following are ignored by ./configure, but used by some extconf.rb scripts configure_options += --enable-ipv6 configure_options += --with-dbm-type=gdbm_compat # do not compress debug sections for arch-dep Ruby packages with dh_compat 12 configure_options += --with-compress-debug-sections=no # hardening and other standard Debian build flags export DEB_BUILD_MAINT_OPTIONS = hardening=+bindnow configure_options += $(shell dpkg-buildflags --export=configure) # See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93808 ifneq (,$(filter $(DEB_HOST_ARCH),sh3 sh4)) export DEB_CFLAGS_MAINT_APPEND += -fno-crossjumping endif # Always build with /bin/bash, to get consistent rbconfig.rb (which embeds SHELL). export SHELL := /bin/bash # Some tests rely on $HOME export HOME := $(shell mktemp -d) export LANG := C.UTF-8 %: dh $@ override_dh_auto_configure: cp /usr/share/misc/config.guess tool cp /usr/share/misc/config.sub tool ifeq (riscv64,$(DEB_HOST_ARCH)) LIBS="-latomic" ./configure $(configure_options) else ./configure $(configure_options) endif override_dh_auto_clean: $(MAKE) clean || true $(MAKE) distclean-ext || true rm -f tool/config.guess tool/config.sub $(RM) test/excludes/$(DEB_HOST_ARCH) $(RM) -r .ext $(RM) -r doc/capi $(RM) .installed.list GNUmakefile Makefile builtin_binary.inc \ config.status enc.mk uncommon.mk verconf.h override_dh_auto_build-arch: dh_auto_build -- main V=1 # see full list in common.mk (search for /^check:/) TEST_TARGETS := test test-tool test-all # missing test-spec excludes = excludes += --excludes-dir=debian/tests/excludes/any/ excludes += --excludes-dir=debian/tests/excludes/$(DEB_HOST_ARCH)/ ifneq (,$(DEBIAN_RUBY_EXTRA_TEST_EXCLUDES)) excludes += --excludes-dir=debian/tests/excludes/$(DEBIAN_RUBY_EXTRA_TEST_EXCLUDES)/ endif override_dh_auto_test-arch: ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) $(MAKE) $(TEST_TARGETS) V=1 RUBY_TESTOPTS=-v TESTS="$(excludes)" OPENSSL_CONF=$(CURDIR)/debian/openssl.cnf endif override_dh_auto_install-arch: $(MAKE) install-nodoc V=1 DESTDIR=$(CURDIR)/debian/tmp # handle embedded copy of jquery $(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/js/jquery.js dh_link -plibruby$(RUBY_VERSION) /usr/share/javascript/jquery/jquery.min.js /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/js/jquery.js # handle embedded copy of Lato (font) $(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Regular.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf $(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Italic.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf $(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Light.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf $(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-LightItalic.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf # remove embedded SSL certificates (replaced using ca-certificates via rubygems-integration) $(RM) -r $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rubygems/ssl_certs/* $(RM) -r $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/bundler/ssl_certs/* # ship rubygems system install directory mkdir -p $(CURDIR)/debian/tmp/var/lib/gems/$(RUBY_API_VERSION) # fix pkg-config # FIXME there is probably less brutal way of doing this sed -i -e 's/^DLDFLAGS=.*/DLDFLAGS=/' \ $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/ruby-$(RUBY_VERSION).pc # sanity check debian/sanity_check override_dh_auto_build-indep: $(MAKE) docs V=1 override_dh_auto_install-indep: $(MAKE) install-doc V=1 DESTDIR=$(CURDIR)/debian/ruby$(RUBY_VERSION)-doc find $(CURDIR)/debian/ruby$(RUBY_VERSION)-doc -name created.rid -delete override_dh_install-arch: # install SystemTap tapfile mkdir -p $(CURDIR)/debian/tmp/usr/share/systemtap/tapset sed 's|@LIBRARY_PATH@|/usr/lib/$(DEB_HOST_MULTIARCH)/libruby-$(RUBY_VERSION).so|g' $(CURDIR)/debian/libruby.stp > $(CURDIR)/debian/tmp/usr/share/systemtap/tapset/libruby$(RUBY_VERSION)-$(DEB_HOST_MULTIARCH).stp dh_install override_dh_gencontrol: ./debian/genprovides $(CURDIR)/debian/libruby2.7/usr/lib/ruby/gems/2.7.0/specifications/default/ \ >> debian/libruby2.7.substvars dh_gencontrol