#!/usr/bin/make -f # debian/rules file for the Debian GNU/Linux r-base package # Copyright 1997-2004 by Douglas Bates # and Dirk Eddelbuettel # $Id: rules,v 1.56.2.1 2004/07/11 21:50:56 hornik Exp $ corepackage = r-base-core latexpackage = r-base-latex pdfpackage = r-doc-pdf htmlpackage = r-doc-html gnomepackage = r-gnome nmathpackage = r-mathlib infopackage = r-doc-info recdpackage = r-recommended # for the standalone library, no sonames are assigned in the upstream Makefiles somaj = 1 somin = 0 sorel = 0 libver = $(somaj).$(somin).$(sorel) debbase := $(CURDIR)/debian debtmp := $(debbase)/tmp debdoc := $(debbase)/$(corepackage)/usr/share/doc/$(corepackage) debmat := $(debbase)/$(nmathpackage) debetc := $(debbase)/$(corepackage)/usr/lib/R/etc debinf := $(debbase)/$(infopackage) arch := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) # set this to 1 (default) if you want the Gnome GUI package gnome = 1 ifeq ($(gnome),0) gnomeconfig = --without-gnome else gnomeconfig = --with-gnome endif #export DH_VERBOSE = 1 export DH_COMPAT = 3 # edd 15 Aug 2001 default to blas, atlas can override it #atlas = --with-blas=blas # dmb 04 Apr 2003 better to use no specify blas # atlas = --with-blas # edd 28 Apr 2003 try configuring with atlas # atlas = --with-blas=atlas # edd 16 Oct 2003 back to older default #atlas = --with-blas=blas # edd 26 Feb 2004 point to refblas3 atlas = --with-blas=-lblas-3 # edd 08 Mar 2003 use the new lapack feature # edd 27 Apr 2003 Set this to =no as we currently see numerical errors #lapack = --with-lapack=no # edd 26 Feb 2004 point to lapack3 lapack = --with-lapack=-llapack-3 # edd 02 Sep 2001 default to g77 but let m68k use f2c # edd 06 Mar 2003 enforce 3.2 versions explicitly # so that on testing we will pick them over 2.95 # edd 07 Jun 2003 let's fall back to the default compilers fortrancompiler = F77=g77 compiler = gcc cxxcompiler = g++ compilerflags = -O2 # edd 04 Sep 2001 default compiler flags, lowered for m68k compilerflags = -O2 # m68k barks when using g77, and when gcc use -O2 # edd 26 Nov 2002 switched back to g77 # edd 02 Jun 2003 switched back # cts 04 Jun 2003 use -O1 on m68k ifeq ($(arch),m68k-linux) fortrancompiler = F2C=f2c compilerflags = -O1 endif # edd 14 Nov 2003 turn blas off on arm ifeq ($(arch),arm-linux) atlas = --without-blas endif ## edd 09 Nov 2001 ia64 needs gcc-3.0, hppa gets it by default #ifeq ($(arch),ia64-linux) #fortrancompiler = F77=g77-3.0 #compiler = gcc-3.0 #cxxcompiler = g++-3.0 #compilerflags = -O2 #endif ## lamont@debian.org 06 Dec 2001 hppa needs -ffunction-sections ifeq ($(arch),hppa-linux) compilerflags = -O2 -ffunction-sections endif ## edd 20 Jun 2002 no optimisation or debugging on baby systems ## edd 02 Jun 2003 use this on arm only ##ifneq "$(findstring $(arch), m68k-linux arm-linux)" "" ifneq "$(findstring $(arch), arm-linux)" "" compilerflags = -O0 -g0 endif get-orig-source: upstream upstream: #links http://cran.us.r-project.org/src/base links http://cran.r-project.org/src/base/?M=D upstreamdevel: links ftp://ftp.stat.math.ethz.ch/Software/R #links http://cran.us.r-project.org/src/base #rsync -vaC rsync.r-project.org::r-devel . ## edd 24 Oct 2003 build is invoked by the buildd, so we would prefer to ## not imply build-indep; unfortunately R does not build ## properly without it, so we have to stick with it ## edd 15 Jan 2004 trying again on build only build: build-arch build-indep ## the main hook is to then have binary depend on both ## binary-arch and binary-indep, and those on their builds build: build-arch build-arch: make-arch build-indep: make-indep configure: configure-stamp configure-stamp: @echo "*** configure ***" # we have to disable use of the expanded R_LD_LIBRARY_PATH as it # conflicts with Debian's Atlas-can-replace-Blas scheme # so set R_LD_LIBRARY_PATH to the minimal value R_HOME/bin # and discard what configure finds for it on this machine perl -p -i -e 's|:\@R_LD_LIBRARY_PATH\@||' src/scripts/R.sh.in dh_testdir R_PAPERSIZE=letter \ R_BROWSER=sensible-browser \ PAGER=/usr/bin/pager \ PERL=/usr/bin/perl \ R_UNZIPCMD=/usr/bin/miniunzip \ R_ZIPCMD=/usr/bin/minizip \ R_PRINTCMD=/usr/bin/lpr \ CC=${compiler} \ CXX=${cxxcompiler} \ ${fortrancompiler} \ CPPFLAGS= \ LDFLAGS= \ FLIBS= \ ./configure --prefix=/usr \ --with-bzlib \ --with-jpeg \ --with-pcre \ --with-png \ --with-readline \ --with-tcltk \ --with-zlib \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ $(atlas) \ $(lapack) \ $(gnomeconfig) \ --enable-R-profiling \ --enable-R-shlib \ --without-recommended-packages \ --build $(arch) touch configure-stamp make-arch: configure make-arch-stamp make-arch-stamp: @echo "*** make-arch ***" $(MAKE) CFLAGS="$(compilerflags)" \ CXXFLAGS="$(compilerflags)" \ FFLAGS="$(compilerflags)" \ CC=${compiler} \ CXX=${cxxcompiler} \ ${fortrancompiler} \ R # the top-level 'make stamp-recommended' target implies 'make docs' # which (for the buildds) implies a lot of time wasted generating # output we already take from the initial i386 build # $(MAKE) CFLAGS="$(compilerflags)" \ # CXXFLAGS="$(compilerflags)" \ # FFLAGS="$(compilerflags)" \ # CC=${compiler} \ # CXX=${cxxcompiler} \ # ${fortrancompiler} \ # stamp-recommended # make standalone math lib (cd src/nmath/standalone; \ $(MAKE) CFLAGS="$(compilerflags) -D_REENTRANT" \ CXXFLAGS="$(compilerflags) -D_REENTRANT"\ FFLAGS="$(compilerflags) -D_REENTRANT" \ CC=${compiler} \ CXX=${cxxcompiler} \ ${fortrancompiler} \ libRmath_la_LDFLAGS=-Wl,-soname,libRmath.so.$(somaj) \ ) # edd 25 Jan 2004 make install needs html docs # edd 03 Feb 2004 new test, try without #make docs # edd 15 Jan 2004 make install needs html docs # edd 25 Jan 2004 not needed as we have 'make docs' ## make html $(MAKE) docs R_CMD_BUILD_HELP_OPTS="--txt --example" touch make-arch-stamp make-indep: configure make-indep-stamp make-indep-stamp: @echo "*** make-indep ***" ## edd 12 Jan 2004 uncommenting 'make docs' to split binary all/any ## now that recommended packages aren't made ## edd 25 Jan 2004 make docs and make html are made in make-arch ## edd 05 Feb 2004 finally, this works in pre-1.9.0 with Kurt's ## R_CMD_BUILD_HELP_OPTS $(MAKE) docs $(MAKE) html $(MAKE) help $(MAKE) info $(MAKE) pdf touch make-indep-stamp make: make-stamp make-stamp: make-arch make-indep check: make-arch check-stamp check-stamp: @echo "*** check ***" #ifneq ($(arch),arm-linux) # -make check #endif touch check-stamp clean: @echo "*** clean ***" dh_testdir dh_testroot rm -f configure-stamp \ build-stamp build-indep-stamp build-arch-stamp \ make-stamp make-arch-stamp make-indep-stamp \ install-indep-stamp install-arch-stamp \ check-stamp -$(MAKE) distclean -rm -f `find . -name "*~"` -rm -rf debian/tmp debian/files* core debian/substvars -rm -f doc/html/function.html doc/html/packages.html -rm -f modules/*.so # left over in CVS from r-base --> r-base-core transition (cd debian; rm -vf r-base.dirs r-base.files r-base.lintian \ r-base.menu r-base.postinst) dh_clean install: install-arch install-indep install-arch: make-arch check install-arch-stamp install-arch-stamp: @echo "*** install-arch ***" dh_testdir dh_testroot dh_clean -a -k dh_installdirs -A $(MAKE) prefix=$(debtmp)/usr \ mandir=$(debtmp)/usr/share/man install # link $R_HOME/bin/R to real one, and set R_HOME_DIR env.var. (cd $(debtmp)/usr/lib/R/bin/; \ ln -svf ../../../bin/R R; \ cd ../../../bin; \ perl -p -i -e \ 's|^R_HOME_DIR=.*|R_HOME_DIR=/usr/lib/R|' R) # set browser to mozilla as mozilla-1.0.0 works with help.start() # (we're now using /usr/bin/sensible-browser, see above) # (cd $(debtmp)/usr/lib/R/etc; \ # perl -p -i -e \ # "s|R_BROWSER-'.*'|R_BROWSER-'/usr/bin/mozilla'|" \ # Renviron) # fix permissions (Lintian) chmod a+x $(debtmp)/usr/lib/R/share/sh/echo.sh \ $(debtmp)/usr/lib/R/share/sh/help-links.sh \ $(debtmp)/usr/lib/R/share/sh/help-print.sh # remove unneeded license files, but link them back rm -v $(debtmp)/usr/lib/R/COPYING \ $(debtmp)/usr/lib/R/COPYING.LIB (cd $(debtmp)/usr/lib/R/; \ ln -s ../../share/common-licenses/GPL COPYING; \ ln -s ../../share/common-licenses/LGPL COPYING.LIB) # edd 15 Jul 2002 reduce compile load on small machines ifneq "$(findstring $(arch), m68k-linux arm-linux)" "" perl -p -i -e 's/-g -O2/-g0 -O0/g' $(debtmp)/usr/lib/R/etc/Makeconf endif # edd 10 Jan 2003 fix Perl interpreter path (cd $(debtmp)/usr/lib/R/bin; \ for file in Rdconv Rdindex Rprof Sd2Rd build check; do \ perl -p -i -e "s|/usr/local/bin/perl|/usr/bin/perl|" \ $${file}; \ done) # that being done, now install in different sub-packages # move the GNOME version to the r-gnome package ifneq ($(gnome),0) dh_movefiles -p$(gnomepackage) usr/lib/R/modules/R_gnome.so endif # move files for r-recommended # doing this before html/latex moves ensure they keep their tex/latex # dh_movefiles -p$(recdpackage) # move the html manual files in r-doc-html.files into r-doc-html # these get built in make-arch too ... dh_movefiles -p$(htmlpackage) # move files for r-base-html dh_movefiles -pr-base-html # move files for r-base-latex dh_movefiles -pr-base-latex make prefix=$(debtmp)/usr install-pdf # the indep package r-doc-info is made now make prefix=$(debtmp)/usr \ infodir=$(debtmp)/usr/share/info install-info # move the pdf manual files listed in r-doc-pdf.files into r-doc-pdf dh_movefiles -p$(pdfpackage) # move the html manual files in r-doc-html.files into r-doc-html dh_movefiles -p$(htmlpackage) touch install-indep-stamp # move files for r-doc-info dh_movefiles -p$(infopackage) # deal with stupid automake / install-info issue (cf #235713) rm -vf $(debinf)/usr/share/info/dir \ $(debinf)/usr/share/info/dir.old # move all the rest into r-base-core dh_movefiles -p$(corepackage) # for the standalone library package, move the two libs # as 'make install' ignores these, we have to do it by hand dh_installdirs -p$(nmathpackage) usr/include usr/lib \ usr/share/lintian/overrides install -m 0644 src/nmath/standalone/libRmath.a \ $(debmat)/usr/lib install -m 0644 src/nmath/standalone/libRmath.so \ $(debmat)/usr/lib/libRmath.so.$(libver) (cd $(debmat)/usr/lib; \ ln -s libRmath.so.$(libver) libRmath.so.$(somaj); \ ln -s libRmath.so.$(somaj) libRmath.so) # and create a link for Rmath.h (cd $(debmat)/usr/include; \ ln -s ../lib/R/include/Rmath.h .) # now deal with $R_HOME/etc <--> /etc/R # edd 03 Apr 2003 patch Renviron for new R_LIBS standard # edd 24 Apr 2004 patch Renviron for R_PAPERSIZE (bug #245525) # edd 16 Jun 2004 nope, doesn't work (cd $(debetc); \ cat $(debbase)/Renviron-R_LIBS.patch | patch --verbose; \ mv Makeconf Renviron ../../../../etc/R/; \ ln -s /etc/R/Makeconf .; \ ln -s /etc/R/Renviron . ) ## cat $(debbase)/Renviron-R_PAPERSIZE.patch | patch --verbose; touch install-arch-stamp #install-indep: make-arch make-indep install-arch install-indep-stamp install-indep: make-indep install-indep-stamp install-indep-stamp: @echo "*** install-indep ***" dh_testdir dh_testroot dh_clean -a -k dh_installdirs -A # make prefix=$(debtmp)/usr install-pdf # # # the indep package r-doc-info is made now # make prefix=$(debtmp)/usr \ # infodir=$(debtmp)/usr/share/info install-info # # # move the pdf manual files listed in r-doc-pdf.files into r-doc-pdf # dh_movefiles -p$(pdfpackage) # # move the html manual files in r-doc-html.files into r-doc-html # dh_movefiles -p$(htmlpackage) # touch install-indep-stamp # # move files for r-doc-info # dh_movefiles -p$(infopackage) # but clean up dir and old.dir rm -vf $(debbase)/$(infopackage)/usr/share/info/dir \ $(debbase)/$(infopackage)/usr/share/info/dir.old # Build architecture-independent files here. # edd 5 Feb 2004 binary-indep: build-indep install-indep binary-indep: build-indep install-indep @echo "*** binary-indep ***" dh_testdir -i dh_testroot -i dh_link -i #dh_installdebconf -i dh_installdocs -i #dh_installexamples -i #dh_installmenu -i #dh_installemacsen -i #dh_installpam -i #dh_installmime -i #dh_installinit -i #dh_installcron -i #dh_installmanpages -i #dh_installinfo -i #dh_undocumented -i dh_installchangelogs -i # install lintian "silencer" install -p -m 0644 debian/$(latexpackage).lintian \ $(debbase)/$(latexpackage)/usr/share/lintian/overrides/$(latexpackage) dh_compress -i dh_fixperms -i #dh_suidregister -i dh_installdeb -i #dh_perl -i dh_gencontrol -i dh_md5sums -i dh_builddeb -i # Build architecture-dependent files here. binary-arch: build-arch check install-arch @echo "*** binary-arch ***" dh_testdir -a dh_testroot -a #dh_installdebconf -a dh_link -a dh_installdocs -p$(corepackage) AUTHORS BUGS NEWS ONEWS README \ RESOURCES THANKS Y2K \ debian/README.Atlas \ debian/README.mathlib dh_installexamples -a dh_installexamples -p$(corepackage) src/nmath/standalone/test.c dh_installmenu -a #dh_installemacsen -a #dh_installpam -a #dh_installmime -a #dh_installinit -a #dh_installcron -a #dh_installmanpages -a -N$(gnomepackage) -p$(corepackage) getline.3 #dh_installman -p$(corepackage) doc/R.1 ## dh_installinfo -a -n doc/manual/R-*.info* ## edd 04 Apr 2004 manual is dangling unless r-doc-pdf is installed ... ##(cd $(debdoc)/doc && ln -s ../../../../lib/R/doc/html .) ##(cd $(debdoc)/doc && ln -s ../../../../lib/R/doc/manual .) # ... so install doc as a link, as we already did with library (cd $(debdoc) && ln -s ../../../lib/R/doc .) (cd $(debdoc) && ln -s ../../../lib/R/library .) # install lintian "silencer" install -p -m 0644 debian/$(corepackage).lintian \ $(debbase)/$(corepackage)/usr/share/lintian/overrides/$(corepackage) # install -p -m 0644 debian/$(recdpackage).lintian \ # $(debbase)/$(recdpackage)/usr/share/lintian/overrides/$(recdpackage) install -p -m 0644 debian/$(nmathpackage).lintian \ $(debbase)/$(nmathpackage)/usr/share/lintian/overrides/$(nmathpackage) #dh_undocumented -a dh_installchangelogs -a -k NEWS dh_strip -a dh_compress -a dh_fixperms -a #dh_suidregister -a dh_makeshlibs -a dh_installdeb -a dh_perl -a dh_shlibdeps -a # @echo "*** Pruning shlibdeps result from double atlas entry ***" # cat debian/r-base-core.substvars # perl -p -i -e 's/atlas2-base, //' debian/r-base-core.substvars # cat debian/r-base-core.substvars # @echo "*** Pruning atlas from r-recommended shlibdeps ***" # cat debian/r-recommended.substvars # perl -p -i -e 's/atlas2-base, //' debian/r-recommended.substvars # cat debian/r-recommended.substvars # echo "*** Done ***" dh_gencontrol -a dh_md5sums -a -X'usr/bin/R' -XLibIndex -Xindex.txt \ -Xfunction.html -Xpackages.html dh_builddeb -a #binary: binary-indep binary-arch install-arch install-indep binary: make-stamp check binary-arch binary-indep .PHONY: build clean binary-indep binary-arch binary install install-arch install-indep