diff options
Diffstat (limited to '')
-rwxr-xr-x | debian/rules | 452 |
1 files changed, 452 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..71b414f --- /dev/null +++ b/debian/rules @@ -0,0 +1,452 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +#export DH_VERBOSE=1 + +unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES + +# architecture dependent variables +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +DPKG_VARS := $(shell dpkg-architecture) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_ARCH_OS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_OS) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +VERSION := 4.2 +#PKGVERSION := $(shell dpkg-parsechangelog \ +# | sed -n '/Version:/s/\(.* \)\(.*\)-2\(.*\)/\2\3/p') +#PKGVERSION := 3.0 +#dpkg_ctrl_args := -v$(PKGVERSION) -VBinary-Version=$(PKGVERSION) + +with_gfdl = yes + +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + CC = $(DEB_HOST_GNU_TYPE)-gcc +else + CC = gcc +endif + +ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + STRIP = : +else + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + STRIP = $(DEB_HOST_GNU_TYPE)-strip + else + STRIP = strip + endif +endif + + +dpkg_buildflags = DEB_BUILD_MAINT_OPTIONS="hardening=+all" DEB_CFLAGS_MAINT_APPEND="-Wall" dpkg-buildflags +CFLAGS := $(shell $(dpkg_buildflags) --get CFLAGS) +CPPFLAGS := $(shell $(dpkg_buildflags) --get CPPFLAGS) +LDFLAGS := $(shell $(dpkg_buildflags) --get LDFLAGS) + +SHELL = /bin/bash +YACC = bison -y + +IX = install -o 0 -g 0 +ID = install -o 0 -g 0 -m 644 + +# built with installed libreadline? +with_installed_rl = no + +debflags = + +p = bash +p_stat = bash-static +p_bins = bash-builtins +p_doc = bash-doc + +d = debian/$(p) +d_stat = debian/$(p_stat) +d_bins = debian/$(p_bins) +d_doc = debian/$(p_doc) + +termcap_lib := $(if $(wildcard /usr/lib/libtinfo.so /usr/lib/$(DEB_HOST_MULTIARCH)/libtinfo.so), \ + -ltinfo, \ + -lncurses) + +conf_args = \ + --enable-largefile \ + --prefix=/usr \ + --infodir=/usr/share/info \ + --mandir=/usr/share/man \ + --without-bash-malloc +ifeq ($(with_installed_rl),yes) + conf_args += --with-installed-readline +endif +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + conf_args += --build $(DEB_HOST_GNU_TYPE) +else + conf_args += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +endif + +static_conf_args := $(conf_args) \ + --enable-static-link \ + +#build: bash-build static-build check +build: before-build bash-build static-build check +build-arch: build +build-indep: build + +before-build: + dh_testdir +# dh_update_autotools_config + dh_autotools-dev_updateconfig + mkdir -p stamps + : # see #327477, needed to have HAVE_DEV_STDIN defined + (test -d /dev/fd && test -r /dev/stdin < /dev/null) \ + || (test -d /proc/self/fd && test -r /dev/stdin < /dev/null) +ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd)) + $(CC) $(CFLAGS) $(LDFLAGS) $(CPPFLAGS) -o clear_console \ + debian/clear_console.c $(termcap_lib) +endif + +# --------------------------------------------------------------------------- +# build standard bash + +bash-build: + $(MAKE) -f debian/rules do-build-bash \ + bash_src=. \ + build=bash \ + configure_args="$(conf_args)" +bash-configure: + $(MAKE) -f debian/rules do-configure-bash \ + bash_src=. \ + build=bash \ + configure_args="$(conf_args)" + +# --------------------------------------------------------------------------- +# build static bash + +static-build: + $(MAKE) -f debian/rules do-build-static \ + bash_src=. \ + build=static \ + configure_args="$(static_conf_args)" +static-configure: + $(MAKE) -f debian/rules do-configure-static \ + bash_src=. \ + build=static \ + configure_args="$(static_conf_args)" + +# --------------------------------------------------------------------------- + +bash-doc-build: stamps/stamp-build-bash-doc +stamps/stamp-build-bash-doc: + rm -f bash/doc/bashref.info + $(MAKE) -C build-bash/doc info html MAN2HTML=/usr/bin/man2html + $(MAKE) -C build-bash/doc bash.pdf bashref.pdf + touch stamps/stamp-build-bash-doc + +# --------------------------------------------------------------------------- + +check: stamps/stamp-check +stamps/stamp-check: bash-build + @echo BEGIN test +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) + -sh debian/locale-gen + LOCPATH=$(CURDIR)/locales \ + time $(MAKE) -C build-bash test 2>&1 | tee build-bash/test-protocol + endif +else + @echo Suppress 'make' test, because this is cross build +endif + @echo END test + touch stamps/stamp-check + +# --------------------------------------------------------------------------- + +clean: + dh_testdir + dh_testroot + rm -rf stamps build-* + rm -f debian/README.Debian + rm -rf locales + rm -f clear_console + dh_autotools-dev_restoreconfig + dh_clean + +# --------------------------------------------------------------------------- + + +install: bash-install + +bash-install: bash-build stamps/stamp-install-bash +stamps/stamp-install-bash: before-build stamps/stamp-build-bash + dh_testdir + dh_testroot + dh_prep -p$(p) -p$(p_doc) -p$(p_bins) + dh_installdirs -p$(p) \ + bin \ + etc/skel \ + usr/share/doc/$(p) + dh_installdirs -p$(p_doc) \ + usr/share/doc/$(p) + dh_installdirs -p$(p_bins) \ + usr/share/doc/$(p)/examples/loadables + +ifeq ($(with_gfdl),yes) +# XXXXX +# cp -p build-bash/doc/*.info bash/doc/ +endif + + : # install it + $(MAKE) -C build-bash install \ + YACC="$(YACC)" \ + DESTDIR=$(CURDIR)/$(d) + mv $(d)/usr/bin/bash $(d)/bin/. + chmod 755 $(d)/usr/bin/bashbug + $(ID) debian/bashbug.1 $(d)/usr/share/man/man1/ +ifneq ($(with_gfdl),yes) + mkdir -p $(d)/usr/share/man/man1 + cp -p bash/doc/bash.1 $(d)/usr/share/man/man1/bash.1 +endif + rm -f $(d)/usr/share/doc/bash/*.html + rm -f $(d)/usr/share/info/*.info + rm -f $(d)/usr/share/info/dir* + + : # extra links + ln -sf bash $(d)/bin/rbash + + : # skeleton files + $(ID) debian/etc.bash.bashrc $(d)/etc/bash.bashrc + $(ID) debian/skel.bashrc $(d)/etc/skel/.bashrc + $(ID) debian/skel.profile $(d)/etc/skel/.profile + $(ID) debian/skel.bash_logout $(d)/etc/skel/.bash_logout + + : # clean_console +ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd)) + $(IX) clear_console $(d)/usr/bin/ + $(ID) debian/clear_console.1 $(d)/usr/share/man/man1/ +endif + + : # /etc/shells integration + $(ID) -D debian/shells.d/bash $(d)/usr/share/debianutils/shells.d/bash + + : # files for the bash-doc package + + dh_installexamples -p$(p_doc) examples/* + rm -rf $(d_doc)/usr/share/doc/$(p)/examples/loadables + mkdir -p $(d_doc)/usr/share/doc/$(p_doc) + ln -sf ../$(p)/examples $(d_doc)/usr/share/doc/$(p_doc)/examples + + rm -rf $(d_doc)/usr/share/doc/$(p)/examples/obashdb + cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 755 \ + misc/aliasconv.*sh misc/cshtobash + + cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \ + scripts/shprompt + + : # files for the bash-builtins package + mv $(d)/usr/include $(d_bins)/usr/. + mv $(d)/usr/lib $(d_bins)/usr/. + $(ID) examples/loadables/{README,*.c} \ + $(d_bins)/usr/share/doc/$(p)/examples/loadables + $(ID) build-bash/examples/loadables/Makefile \ + $(d_bins)/usr/share/doc/$(p)/examples/loadables + ln -sf bash $(d_bins)/usr/share/doc/$(p_bins) + + sed -i \ + -e 's@-ffile-prefix-map=[^ ]*[ ]*@@g' \ + -e 's@-fdebug-prefix-map=[^ ]*[ ]*@@g' \ + -e 's@^BUILD_DIR =.*@BUILD_DIR = /path/to/build-dir@' \ + $(d)/usr/bin/bashbug \ + $(d_bins)/usr/lib/bash/Makefile.inc \ + $(d_bins)/usr/share/doc/$(p)/examples/loadables/Makefile + +# cat debian/README stamps/stamp-patch > debian/README.Debian + cat debian/README > debian/README.Debian + + touch stamps/stamp-install-bash + +binary-doc: bash-install bash-doc-build + dh_testdir + dh_testroot + mkdir -p $(d_doc)/usr/share/doc/$(p) +ifeq ($(with_gfdl),yes) + dh_installdocs -p$(p_doc) + cp -p build-bash/doc/bashref.{html,pdf} $(d_doc)/usr/share/doc/$(p)/. + mkdir -p $(d_doc)/usr/share/info + cp -p build-bash/doc/bash.info $(d_doc)/usr/share/info/. + dh_link -p$(p_doc) \ + /usr/share/doc/$(p)/bashref.html /usr/share/doc/$(p_doc)/bashref.html \ + /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf +else + dh_installdocs -p$(p_doc) -X.doc-base + rm -f $(d_doc)/usr/share/doc-base/bashref +endif + rm -f $(d_doc)/usr/share/info/dir* + cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \ + $(d_doc)/usr/share/doc/$(p)/ + dh_link -p$(p_doc) \ + /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \ + /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf + dh_installchangelogs -p$(p_doc) CWRU/changelog + dh_compress -p$(p_doc) -Xexamples -X.pdf + dh_fixperms -p$(p_doc) + dh_installdeb -p$(p_doc) + dh_gencontrol -p$(p_doc) + dh_md5sums -p$(p_doc) + dh_builddeb -p$(p_doc) + +binary-bash: bash-install + dh_testdir + dh_testroot + dh_installchangelogs -p$(p) + dh_installdocs -p$(p) \ + CHANGES NEWS COMPAT doc/INTRO POSIX \ + debian/{README.Debian,README.abs-guide,README.commands} \ + debian/inputrc.arrows + install -D -m 644 debian/bash.overrides \ + debian/bash/usr/share/lintian/overrides/bash + install -D -m 644 debian/bash-builtins.overrides \ + debian/bash-builtins/usr/share/lintian/overrides/bash-builtins + dh_installman -p$(p) doc/rbash.1 debian/bash-builtins.7 + dh_installmenu -p$(p) + dh_strip -p$(p) + dh_compress -p$(p) + dh_fixperms -p$(p) + dh_shlibdeps -p$(p) -- -dPre-Depends $(d)/bin/bash + dh_installdeb -p$(p) + dh_gencontrol -p$(p) + dh_md5sums -p$(p) + dh_builddeb -p$(p) + +# Even though it contains only headers and example files, +# bash-builtins is NOT arch-independent because the config.h* files +# differ on different archs. +binary-builtins: bash-install + dh_testdir + dh_testroot + dh_strip -p$(p_bins) + dh_compress -p$(p_bins) -Xexamples + dh_fixperms -p$(p_bins) + dh_installdeb -p$(p_bins) + dh_gencontrol -p$(p_bins) + dh_md5sums -p$(p_bins) + dh_builddeb -p$(p_bins) + +binary-static: static-build + dh_testdir + dh_testroot + dh_prep -p$(p_stat) + dh_installdirs -p$(p_stat) \ + bin \ + usr/share/man/man1 + cp -p build-static/bash $(d_stat)/bin/bash-static + cp -p doc/bash.1 $(d_stat)/usr/share/man/man1/bash-static.1 + $(ID) -D debian/shells.d/bash-static $(d_stat)/usr/share/debianutils/shells.d/bash-static + dh_installdocs -p$(p_stat) + dh_installchangelogs -p$(p_stat) + install -D -m 644 debian/bash-static.overrides \ + debian/bash-static/usr/share/lintian/overrides/bash-static + dh_strip -p$(p_stat) + dh_compress -p$(p_stat) + dh_fixperms -p$(p_stat) + dh_installdeb -p$(p_stat) + dh_gencontrol -p$(p_stat) -- \ + '-Vglibc:Source=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W libc-bin)' + dh_md5sums -p$(p_stat) + dh_builddeb -p$(p_stat) + +binary-indep: binary-doc +binary-arch: binary-bash binary-builtins binary-static +binary: binary-indep binary-arch + +# --------------------------------------------------------------------------- +# common rules for all bash build variations + +do-build-$(build): stamps/stamp-build-$(build) +stamps/stamp-build-$(build): stamps/stamp-configure-$(build) + dh_testdir +ifneq (,$(profiled_build)) + $(MAKE) -C build-$(build) \ + CFLAGS='$(CFLAGS) -fprofile-generate' \ + YACC="$(YACC)" \ + TERMCAP_LIB="$(termcap_lib)" \ + deb_builddir=build-$(build)/ \ + $(debflags) + -sh debian/locale-gen + cp debian/run-my-gprof bash/tests/ + LOCPATH=$(CURDIR)/locales \ + time $(MAKE) -C build-$(build) TESTSCRIPT=run-my-gprof test 2>&1 \ + | tee build-bash/profile-protocol + $(MAKE) -C build-$(build) clean + rm -f build-$(build)/lib/malloc/malloc*.gc?? + $(MAKE) -C build-$(build) \ + CFLAGS='$(CFLAGS) -fprofile-use' \ + YACC="$(YACC)" \ + TERMCAP_LIB="$(termcap_lib)" \ + deb_builddir=build-$(build)/ \ + $(debflags) +else + $(MAKE) -C build-$(build) \ + YACC="$(YACC)" \ + TERMCAP_LIB="$(termcap_lib)" \ + deb_builddir=build-$(build)/ \ + $(debflags) +endif +ifeq ($(with_gfdl),yes) + $(MAKE) -C build-$(build)/doc \ + bash.info +endif + touch stamps/stamp-build-$(build) + +do-configure-$(build): stamps/stamp-configure-$(build) +stamps/stamp-configure-$(build): + dh_testdir + rm -rf build-$(build) + mkdir build-$(build) + cd build-$(build) && \ + CC="$(CC)" \ + CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \ + YACC="$(YACC)" \ + ../$(bash_src)/configure $(configure_args) + if ! grep -q '#define HAVE_DEV_STDIN 1' build-$(build)/config.h; then \ + echo "HAVE_DEV_STDIN not defined, abortig build"; \ + exit 1; \ + fi + touch stamps/stamp-configure-$(build) + +update-patches: + export QUILT_PATCHES=$(patchdir); \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab"; \ + while quilt push; do quilt refresh; done + +#unpack-$(bash_src): stamps/stamp-unpack-$(bash_src) +#stamps/stamp-unpack-$(bash_src): +# mkdir -p stamps +# rm -rf bash-$(VERSION) $(bash_src) +# rm -f stamps/stamp-patch-$(bash_src){,-*} +# tar xf bash-$(VERSION)*.tar.xz +# mv bash-$(VERSION) $(bash_src) +# rm -f bash/y.tab.? +# cp -p /usr/share/misc/config.* $(bash_src)/. +# cp -p /usr/share/misc/config.* $(bash_src)/support/. +# touch stamps/stamp-unpack-$(bash_src) + +remove-non-dfsg-files: + rm -f doc/article.* + rm -f doc/FAQ + rm -f doc/aosa-bash*.pdf + rm -f doc/rose94.* + +.NOTPARALLEL: build +.PHONY: unpack binary binary-arch binary-indep clean \ + build bash-build static-build \ + check \ + bash-configure static-configure \ + binary-doc binary-bash binary-builtins binary-static \ + install bash-install + +# Local Variables: +# mode: makefile +# end: |