#!/usr/bin/make -f # debian/rules file for the Debian GNU/Linux r-base package # Copyright 1997-2003 by Douglas Bates # and Dirk Eddelbuettel # $Id: rules,v 1.53 2003/08/09 20:46:37 bates 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 arch := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ## set this to 1 if you want the skip the pdf creation and tests #skipparts = 1 # 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 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 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 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 upstreamdevel: links ftp://ftp.stat.math.ethz.ch/Software/R #links http://cran.us.r-project.org/src/base build: build-arch build-indep build-arch: configure make-arch-stamp build-arch-stamp build-arch-stamp: @echo "*** build-arch ***" touch build-arch-stamp build-indep: configure make-indep-stamp build-indep-stamp build-indep-stamp: @echo "*** build-indep ***" touch build-indep-stamp configure: configure-stamp configure-stamp: @echo "*** configure ***" dh_testdir PERL=/usr/bin/perl \ R_UNZIPCMD=/usr/bin/miniunzip \ R_ZIPCMD=/usr/bin/minizip \ CC=${compiler} \ CXX=${cxxcompiler} \ ${fortrancompiler} \ CPPFLAGS= \ LDFLAGS= \ FLIBS= \ ./configure --prefix=/usr \ --with-tcltk \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ $(atlas) $(lapack) \ $(gnomeconfig) \ --enable-R-profiling \ --enable-R-shlib \ --with-recommended-packages \ --build $(arch) # --with-tcl-config=/usr/lib/tcl8.3/tclConfig.sh # --with-tk-config=/usr/lib/tk8.3/tkConfig.sh 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 make CFLAGS="$(compilerflags)" \ CXXFLAGS="$(compilerflags)" \ FFLAGS="$(compilerflags)" \ CC=${compiler} \ CXX=${cxxcompiler} \ ${fortrancompiler} \ stamp-recommended # currently needed for binary package with docs [FIXME: how?] make docs # 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) \ ) # FIXME make html # currently needed for binary package [FIXME: into r-doc-help] make help touch make-arch-stamp make-indep: configure make-indep-stamp make-indep-stamp: @echo "*** make-indep ***" # FIXME would be nice here: make docs # make help # currently needed for binary package [FIXME: into r-doc-info] make info make pdf touch make-indep-stamp make: configure make-arch-stamp make-indep-stamp make-stamp make-stamp: # Already made in general 'make': make html touch make-stamp check: configure 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 # Now for a set of fixes / corrections for the Debian installation # set R_HOME_DIR env.var. in R shell script sed -e '/^R_HOME_DIR=.*/s::R_HOME_DIR=/usr/lib/R:' \ < bin/R > $(debtmp)/usr/bin/R sed -e '/^R_HOME_DIR=.*/s::R_HOME_DIR=/usr/lib/R:' \ < bin/R > $(debtmp)/usr/lib/R/bin/R # set browser to mozilla as mozilla-1.0.0 works with help.start() sed -e '/^R_BROWSER=.*/s::R_BROWSER=$${R_BROWSER-/usr/bin/mozilla}:' \ < etc/Renviron > $(debtmp)/usr/lib/R/etc/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 # move all the rest into r-base-core dh_movefiles -p$(corepackage) # for the standalone library package, move the two libs # as 'make install' ignore these, we have to do it by hand dh_installdirs -p$(nmathpackage) usr/include usr/lib 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 (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 . ) # 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. 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 install-arch check @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) #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-arch binary-indep .PHONY: build clean binary-indep binary-arch binary install install-arch install-indep