diff options
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 450 |
1 files changed, 450 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..860e557 --- /dev/null +++ b/debian/rules @@ -0,0 +1,450 @@ +#! /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))) + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + STRIP = $(DEB_HOST_GNU_TYPE)-strip + else + STRIP = strip + endif +endif + + +dpkg_buildflags = 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 = \ + --with-curses \ + --enable-largefile \ + --prefix=/usr \ + --infodir=/usr/share/info \ + --mandir=/usr/share/man +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 \ + --without-bash-malloc \ + +#build: bash-build static-build preinst-build check +build: before-build bash-build static-build preinst-build check +build-arch: build +build-indep: build + +before-build: + 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 + $(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/bash.preinst debian/*.o + rm -f debian/README.Debian + rm -rf locales + rm -f clear_console + rm -rf .pc + dh_clean + +preinst-build: debian/bash.preinst + +PREINST_OBJECTS = debian/bash.preinst.o debian/bash.preinst-lib.o + +$(PREINST_OBJECTS): %.o: %.c debian/bash.preinst.h + $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) $< + +debian/bash.preinst: $(PREINST_OBJECTS) + $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(PREINST_OBJECTS) + $(STRIP) -R .comment -R .note debian/bash.preinst + +# --------------------------------------------------------------------------- + + +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_clean -k -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 \ + usr/include/bash/{builtins,lib/{glob,tilde}} + +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 + + : # files for the bash-doc package + + dh_installexamples -p$(p_doc) examples/* + mv $(d_doc)/usr/share/doc/$(p_doc)/examples \ + $(d_doc)/usr/share/doc/$(p)/examples + rm -rf $(d_doc)/usr/share/doc/$(p)/examples/loadables + 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 + $(ID) include/*.h *.h $(d_bins)/usr/include/bash/ + $(ID) build-bash/*.h $(d_bins)/usr/include/bash/ + rm -f $(d_bins)/usr/include/bash/y.tab.h + $(ID) builtins/*.h $(d_bins)/usr/include/bash/builtins/ + $(ID) lib/glob/*.h $(d_bins)/usr/include/bash/lib/glob/ + $(ID) lib/tilde/*.h $(d_bins)/usr/include/bash/lib/tilde/ + $(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) + +# 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 debian/bash.preinst + 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 + 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 debian/bash.preinst + 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_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_clean -k -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 + 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) + 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 preinst-build \ + check \ + bash-configure static-configure \ + binary-doc binary-bash binary-builtins binary-static \ + install bash-install + +# Local Variables: +# mode: makefile +# end: |