X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=package%2Fdebian%2Frules;h=648939b22fbac080e2301fac36fca05f6af20ddc;hp=494ddddfc24e66d7d7d45fc02a94181d7b67b518;hb=HEAD;hpb=91fa4688e82518794fcf0c32a36f3fcca5e4c2d5 diff --git a/package/debian/rules b/package/debian/rules old mode 100644 new mode 100755 index 494ddddf..648939b2 --- a/package/debian/rules +++ b/package/debian/rules @@ -1,24 +1,46 @@ #!/usr/bin/make -f -# MAde with the aid of dh_make, by Craig Small -# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. -# Some lines taken from debmake, by Cristoph Lameter. +# $Id: rules,v 1.53 2024/04/08 15:31:32 tom Exp $ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 +SHELL = /bin/bash +DPKG_EXPORT_BUILDFLAGS = 1 + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +include /usr/share/dpkg/buildflags.mk + +# packages +PACKAGES.indep = ncurses6-doc ncurses6-doc-html +PACKAGES.arch = ncurses6 ncursest6 + # 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_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic -MY_DIR=/usr/local/ncurses6 +MY_ABI=6 +MY_DIR=/usr +BINDIR=$(MY_DIR)/bin +LIBDIR=$(MY_DIR)/lib/$(DEB_HOST_MULTIARCH) MYDATA=/usr/local/ncurses/share/terminfo -BUILD_DIR=$(CURDIR)/debian/ncurses6 +NORMAL_DIR=$(CURDIR)/debian/ncurses$(MY_ABI) +THREAD_DIR=$(CURDIR)/debian/ncursest$(MY_ABI) -CFLAGS = $(CC_NORMAL) +CFLAGS += $(CC_NORMAL) + +ifneq ($(MY_DIR),/usr) + RPATH_ENV = RPATH_LIST=../lib:$(LIBDIR) + RPATH_OPT = --enable-rpath +else + RPATH_ENV = + RPATH_OPT = --disable-rpath --disable-rpath-hack +endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 @@ -29,94 +51,237 @@ ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif +verbose = # -v -configure: configure-stamp -configure-stamp: - dh_testdir - - RPATH_LIST=../lib:$(MY_DIR)/lib \ - CFLAGS="$(CFLAGS)" ./configure \ +configure = \ + $(RPATH_ENV) \ + CFLAGS="$(CFLAGS)" \ + CPPFLAGS="$(CPPFLAGS)" \ + LDFLAGS="$(LDFLAGS)" ../../configure $(RPATH_OPT) \ --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ --prefix=$(MY_DIR) \ - --with-default-terminfo-dir=$(MYDATA) \ - --with-terminfo-dirs=$(MYDATA):/usr/share/terminfo \ + --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ --disable-echo \ --disable-getcap \ --disable-leaks \ --disable-macros \ + --disable-overwrite \ + --disable-relink \ + --disable-root-access \ + --disable-root-environ \ --disable-termcap \ - --enable-const \ - --enable-ext-colors \ - --enable-ext-mouse \ + --enable-check-size \ --enable-hard-tabs \ - --enable-interop \ - --enable-rpath \ - --enable-sp-funcs \ + --enable-opaque-curses \ + --enable-opaque-form \ + --enable-opaque-menu \ + --enable-opaque-panel \ + --enable-pc-files \ + --enable-stdnoreturn \ --enable-warnings \ + --enable-wgetch-events \ --enable-widec \ + --enable-xmc-glitch \ + --program-suffix=$(MY_ABI) \ --verbose \ + --with-abi-version=$(MY_ABI) \ + --with-config-suffix=dev \ + --with-cxx-shared \ + --with-default-terminfo-dir=$(MYDATA) \ --with-develop \ + --with-extra-suffix=$(MY_ABI) \ --with-shared \ + --with-terminfo-dirs=$(MYDATA):/lib/terminfo:/usr/share/terminfo \ --with-termlib \ --with-ticlib \ --with-trace \ + --with-versioned-syms \ --with-xterm-kbs=DEL \ --without-ada \ --without-debug \ + --with-manpage-aliases \ + --with-manpage-symlinks \ --without-normal - touch configure-stamp +NCURSES6_DIR = $(CURDIR)/debian/ncurses6 +NCURSEST6_DIR = $(CURDIR)/debian/ncursest6 + +.PHONY: all config build install binary clean config-indep config-arch \ + build-indep build-arch install-indep install-arch binary-indep \ + binary-arch -build: build-stamp -build-stamp: configure-stamp +all: build + +config: config-indep config-arch +build: build-indep build-arch +install: install-indep install-arch +binary: binary-indep binary-arch +clean: dh_testdir + dh_testroot + dh_clean $(verbose) + rm -rf t - $(MAKE) +config-indep: $(PACKAGES.indep:%=config-%-stamp) +config-arch: $(PACKAGES.arch:%=config-%-stamp) - touch build-stamp +build-indep: $(PACKAGES.indep:%=build-%-stamp) +build-arch: $(PACKAGES.arch:%=build-%-stamp) -clean: +install-indep: $(PACKAGES.indep:%=install-%-stamp) +install-arch: $(PACKAGES.arch:%=install-%-stamp) + +# make the doc-package installable by renaming everything to avoid clashing +patch-ncurses6-stamp: + dh_testdir + sed -i.bak \ + -e 's/-config\.1$$/dev-config.1/;t' \ + -e 's/\.3ncurses$$/.3ncurses6/' \ + -e 's/\.3curses$$/.3curses6/' \ + -e 's/\.3form$$/.3form6/' \ + -e 's/\.3menu$$/.3menu6/' \ + -e 's/\.3panel$$/.3panel6/' \ + -e 's/\.\([157]\)$$/6.\1/' \ + man/man_db.renames.in + diff -u man/man_db.renames.in.bak man/man_db.renames.in || true + touch $@ + +config-ncurses6-stamp: patch-ncurses6-stamp + dh_testdir + rm -rf t/ncurses6 + mkdir -p t/ncurses6 + cd t/ncurses6; $(configure) + touch $@ + +config-ncursest6-stamp: patch-ncurses6-stamp + dh_testdir + rm -rf t/ncursest6 + mkdir -p t/ncursest6 + cd t/ncursest6; $(configure) \ + --enable-interop \ + --enable-sp-funcs \ + --program-suffix=t$(MY_ABI) \ + --with-pthread + touch $@ + +config-ncurses6-doc-stamp \ +config-ncurses6-doc-html-stamp: config-ncurses6-stamp + touch $@ + +build-ncurses6-stamp: config-ncurses6-stamp + dh_testdir + + $(MAKE) -C t/ncurses6 + + touch $@ + +build-ncursest6-stamp: config-ncursest6-stamp + dh_testdir + + $(MAKE) -C t/ncursest6 + + touch $@ + +build-ncurses6-doc-stamp \ +build-ncurses6-doc-html-stamp: build-ncurses6-stamp + touch $@ + +install-ncurses6-stamp: build-ncurses6-stamp dh_testdir dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6 - [ ! -f makefile ] || $(MAKE) distclean + $(MAKE) -C t/ncurses6 install.libs install.progs DESTDIR=$(NCURSES6_DIR) + $(MAKE) -C t/ncurses6/test ncurses LOCAL_LIBDIR=$(LIBDIR) - rm -f configure-stamp build-stamp install-stamp + mv t/ncurses6/test/ncurses $(NCURSES6_DIR)$(BINDIR)/ncurses$(MY_ABI) - dh_clean + touch $@ -install: install-stamp -install-stamp: build-stamp +install-ncursest6-stamp: build-ncursest6-stamp dh_testdir dh_testroot - dh_clean -k - dh_installdirs + dh_installdirs $(verbose) + dh_prep $(verbose) -pncursest6 + + $(MAKE) -C t/ncursest6 install.libs install.progs DESTDIR=$(NCURSEST6_DIR) + $(MAKE) -C t/ncursest6/test ncurses LOCAL_LIBDIR=$(LIBDIR) - $(MAKE) install.libs install.progs DESTDIR=$(BUILD_DIR) + mv t/ncursest6/test/ncurses $(NCURSEST6_DIR)$(BINDIR)/ncursest$(MY_ABI) - ( cd test && make ncurses LOCAL_LIBDIR=$(MY_DIR)/lib ) - mv test/ncurses $(BUILD_DIR)$(MY_DIR)/bin/ncurses6 + touch $@ + +install-ncurses6-doc-stamp: build-ncurses6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6-doc - touch install-stamp + $(MAKE) -C t/ncurses6 install.man DESTDIR=$(NCURSES6_DIR)-doc + find $(NCURSES6_DIR)-doc -name 'ncursesw6-config.*' -print -delete + + cd $(NCURSES6_DIR)-doc/usr/share/man/man1 && ln -sf tset6.1.gz reset6.1.gz + + touch $@ + +HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/doc/ncurses6-doc-html +install-ncurses6-doc-html-stamp: build-ncurses6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6-doc-html + + cd doc/html && find * -type d | sort | xargs -I{} mkdir -p -v $(HTML_DESTDIR)/{} + cd doc/html && find * -type f -name '*.html' | sort | xargs -I{} install -m 644 -p -v -T {} $(HTML_DESTDIR)/{} + find $(HTML_DESTDIR) -type d -empty -delete -print + find $(HTML_DESTDIR) -type d -empty -delete -print + + touch $@ # Build architecture-independent files here. -binary-indep: build install -# No binary-indep target. +binary-indep: install-indep +ifneq ($(PACKAGES.indep),) + rm -f $(PACKAGES.indep:%=install-%-stamp) + dh_testdir + dh_testroot + dh_lintian $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdocs $(verbose) $(PACKAGES.indep:%=-p%) + dh_installman $(verbose) $(PACKAGES.indep:%=-p%) + dh_installexamples $(verbose) $(PACKAGES.indep:%=-p%) + dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS + dh_compress $(verbose) $(PACKAGES.indep:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.indep:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.indep:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.indep:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.indep:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.indep:%=-p%) +endif # Build architecture-dependent files here. -binary-arch: build install +binary-arch: install-arch +ifneq ($(PACKAGES.arch),) + rm -f $(PACKAGES.arch:%=install-%-stamp) dh_testdir dh_testroot - dh_installchangelogs NEWS - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install install-stamp + version=`set -x; awk 'BEGIN{major=minor=0} /^NCURSES_MAJOR/{major=$$3} /^NCURSES_MINOR/{minor=$$3} END{print major "." minor}' < dist.mk`; \ + sed -i \ + -e "s, usr/lib, usr/lib/$(DEB_HOST_MULTIARCH)," \ + -e "s,6\.1,$${version}," \ + debian/*.lintian-overrides + + dh_lintian $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdocs $(verbose) $(PACKAGES.arch:%=-p%) + dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%) NEWS + dh_strip $(verbose) $(PACKAGES.arch:%=-p%) + dh_compress $(verbose) $(PACKAGES.arch:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.arch:%=-p%) + dh_makeshlibs $(verbose) $(PACKAGES.arch:%=-p%) + dh_shlibdeps $(verbose) $(PACKAGES.arch:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.arch:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.arch:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.arch:%=-p%) +endif