diff options
| author | herbelin | 2000-12-22 09:15:55 +0000 |
|---|---|---|
| committer | herbelin | 2000-12-22 09:15:55 +0000 |
| commit | 577c08bfbec0f7c4d7b459795813b6283fd3b7c6 (patch) | |
| tree | 29faf8772c14e15030bc7246448260626e140a7b /distrib/Makefile | |
| parent | c0981d2372d6a5950fc4c5b52264ff18f9a292f2 (diff) | |
Pour créer les archives distribuées
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1189 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'distrib/Makefile')
| -rw-r--r-- | distrib/Makefile | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/distrib/Makefile b/distrib/Makefile new file mode 100644 index 0000000000..786dc4c117 --- /dev/null +++ b/distrib/Makefile @@ -0,0 +1,276 @@ +# Building the different files of the coq distribution + +include config.distrib +LOCALARCH=`uname -m` +ARCH=`uname -m | sed -e 's/i.86/i386/'` +SYSTEM=`uname -s` + +ARCHBUILDROOT=$(DISTRIBDIR)/${ARCH} +RPMTOPDIR=$(DISTRIBDIR)/redhat +RPMTMPPATHDIR=$(DISTRIBDIR)/redhat/admin + +# Parce que le chemin d'installation est cablé en dur dans coqtop, on ne +# peut pas construire les rpm ailleurs que dans / et donc on doit être root +#RPMBUILDROOTOPT= +RPMBUILDROOT=$(DISTRIBDIR)/rpmbuildroot +RPMBUILDROOTOPT=--buildroot ${RPMBUILDROOT} +RAWRPM=rpm +RPMVERSION=`${RAWRPM} --version | sed -e "s/RPM version \(.\).*/\1/"` +RPM=${RAWRPM} ${RPMBUILDROOTOPT} --rcfile rpmrc + +FTPDIR=/net/pauillac/infosystems/ftp/coq/coq +WWWDIR=/net/pauillac/infosystems/www/coq + +COQPACKAGE=coq-${VERSION} +COQRPMPACKAGE=coq-${VERSION}-${RELEASENUM} + +###################### + +noarguments: + @echo Please use either + @echo "make tag to tag the current archive with the release number" + @echo "make tar-gz to build a tar.gz of sources" + @echo "make rpm to prepare a src.rpm and a rpm for the current arch" + @echo "make arch-rpm to prepare a rpm for the current arch from the src.rpm" + @echo "make arch-tar-gz to prepare a binary tar.gz for this arch" + @echo "make contrib-tag to tag the current contrib state with the release number" + @echo "make contrib-tar-gz to build a tar.gz of contrib sources" + @echo "make ftp-install to prepare the ftp repository and copy the packages done" + @echo "make tar-gz-ftp-install |add the corresponding" + @echo "make src-rpm-ftp-install |packages to the ftp" + @echo "make arch-rpm-ftp-install |repository supposed" + @echo "make arch-tar-gz-ftp-install |to be already" + @echo "make contrib-ftp-install |prepared" + +################## Main targets + +distrib: tag tar-gz +rpm: src-rpm arch-rpm + +################# +tag: + @dashedversion=V`echo ${VERSION} | sed -e 's/\./-/g'`;\ + majorversion=V`echo ${VERSION} | sed -e 's/^\([0-9]\.[0-9]\).*/\1/g'`;\ + echo -n "Tagging the archive with version number $$dashedversion... ";\ + cvs rtag -F $$dashedversion $$majorversion + +tar-gz: + @echo -n Exporting a fresh copy of the archive... + @- rm -rf ${COQPACKAGE} + @cvs export -d $(COQPACKAGE) -r $(DASHEDVERSION) $(MAJORVERSION) + @echo done + @echo -n Removing the maintenance files and doc... + @rm -rf ${COQPACKAGE}/doc + @rm -rf ${COQPACKAGE}/distrib + @rm -rf ${COQPACKAGE}/{KNOWN-BUGS,TODO,ANNONCE} + @find ${COQPACKAGE} -name ".cvsignore" -exec rm {} \; + @echo done + @echo -n Building the tar.gz source package + @tar cvf ${COQPACKAGE}.tar ${COQPACKAGE} + @gzip ${COQPACKAGE}.tar + @echo done + @echo Checking release parameters + ./check-list + @echo done + +src-rpm: ${COQRPMPACKAGE}.src.rpm +arch-rpm: ${COQRPMPACKAGE}.${ARCH}.rpm + +test: + cp ${COQPACKAGE}.tar.gz tmp.tar.gz + gunzip tmp.tar.gz + @echo Trying "make world" then "make world-opt" + - rm -rf ${COQPACKAGE} + tar xf tmp.tar + (cd ${COQPACKAGE};\ + configure -local -opt -emacs emacs;\ + make world >& log.world;\ + if [ `tail -1 log.world` = "=== Compilation in bytecode is done ===" ];\ + then echo make world succeeded;\ + else echo make world failed; exit 1;\ + fi;\ + make world-opt >& log.world-opt;\ + if [ `tail -1 log.world` = "=== Compilation in native code is done ===" ];\ + then echo make world-opt succeeded;\ + else echo make world-opt failed; exit 1;\ + fi) + rm -r ${COQPACKAGE} + @echo Trying "make world" then "make world-opt" + tar xf tmp.tar + (cd ${COQPACKAGE};\ + configure -local -opt -emacs emacs;\ + make world >& log.world;\ + if [ `tail -1 log.world` = "=== Compilation in bytecode is done ===" ];\ + then echo make world succeeded;\ + else echo make world failed; exit 1;\ + fi;\ + make world-opt >& log.world-opt;\ + if [ `tail -1 log.world` = "=== Compilation in native code is done ===" ];\ + then echo make world-opt succeeded;\ + else echo make world-opt failed; exit 1;\ + fi) + rm tmp.tar + @echo "Both orders of compilation suceeded" + +release-bin: + @echo + @echo "***************" + @echo " attention " + @echo "***************" + @echo + @echo " \"make release-bin\" suppose que vous venez de compiler" + @echo " ET D'INSTALLER Coq. Tapez <Ctrl-C> pour abandonner" + @echo " et <Return> pour continuer." + @echo + @read + tar -cvf $(COQPACKAGE)-$(SYSTEM)-$(ARCH).tar --files-from $(COQLIB)/COQFILES + gzip $(COQPACKAGE)-$(SYSTEM)-$(ARCH).tar + +arch-tar-gz-final: + (cd ${ARCHBUILDROOT}/buildroot;\ + tar -cvf ${DISTRIBDIR}/$(COQPACKAGE)-$(SYSTEM)-$(ARCH).tar *) + gzip $(COQPACKAGE)-$(SYSTEM)-$(ARCH).tar + +arch-tar-gz: ${COQPACKAGE}.tar.gz + @echo "Building $(COQPACKAGE)-$(SYSTEM)-$(ARCH).tar.gz to be installed in /usr/local/" + @echo "Warning: leading / is removed" + - mkdir -p ${ARCHBUILDROOT} + (cd ${ARCHBUILDROOT};\ + rm -rf ${COQPACKAGE} || true;\ + gunzip -c $(DISTRIBDIR)/${COQPACKAGE}.tar.gz | tar xf -;\ + cd ${COQPACKAGE};\ + ./configure -bindir /usr/local/bin -libdir /usr/local/lib/coq -mandir /usr/local/man -emacs emacs -emacslib /usr/local/lib/emacs/site-lisp -opt;\ + make world-opt world;\ + rm -rf ${ARCHBUILDROOT}/buildroot/* || true;\ + make -e COQINSTALLPREFIX=${ARCHBUILDROOT}/buildroot/ install) + $(MAKE) arch-tar-gz-final + +rpm-dirs: + - mkdir ${RPMTOPDIR} + - mkdir ${RPMTOPDIR}/BUILD + - mkdir ${RPMTOPDIR}/RPMS + - mkdir ${RPMTOPDIR}/SOURCES + - mkdir ${RPMTOPDIR}/SPECS + - mkdir ${RPMTOPDIR}/SRPMS + - mkdir ${RPMTMPPATHDIR} + - mkdir ${RPMBUILDROOT} + +rpm-config: rpm-dirs + - rm rpmrc rpmmacros + (if [ "${RPMVERSION}" = "3" ];\ + then\ + echo %_topdir ${RPMTOPDIR} > rpmmacros;\ + echo %_tmppath ${RPMTMPPATHDIR} >> rpmmacros;\ + echo %_arch ${ARCH} >> rpmmacros;\ + echo macrofiles:/usr/lib/rpm/macros:rpmmacros > rpmrc;\ + else\ + echo topdir: ${RPMTOPDIR} > rpmrc;\ + echo tmppath: ${RPMTMPPATHDIR} >> rpmrc;\ + fi) + +# Les cibles suivantes ne sont pas acceptées sur DEC (car paramétrées) + +${COQPACKAGE}.tar.gz: + ${MAKE} tar-gz + +# rpm 3.0 met dans LOCALARCH mais rpm 2.5 dans ARCH... +${COQRPMPACKAGE}.src.rpm: ${COQPACKAGE}.tar.gz + ${MAKE} rpm-config + cp -f petit-coq.gif ${RPMTOPDIR}/SOURCES + cp -f ${COQPACKAGE}.tar.gz ${RPMTOPDIR}/SOURCES + - mkdir ${RPMTOPDIR}/RPMS/${ARCH} + - ln -s ${RPMTOPDIR}/RPMS/${ARCH} ${RPMTOPDIR}/RPMS/${LOCALARCH} + ${RPM} -ba coq.spec + mv ${RPMTOPDIR}/SRPMS/${COQRPMPACKAGE}.src.rpm . + (if [ -f ${RPMTOPDIR}/RPMS/${ARCH}/${COQRPMPACKAGE}.${LOCALARCH}.rpm ];\ + then mv ${RPMTOPDIR}/RPMS/${ARCH}/${COQRPMPACKAGE}.${LOCALARCH}.rpm ${RPMT\ +OPDIR}/RPMS/${ARCH}/${COQRPMPACKAGE}.${ARCH}.rpm; + fi) + - mv ${RPMTOPDIR}/RPMS/${ARCH}/${COQRPMPACKAGE}.${ARCH}.rpm . + +# Sera déjà fait si le src.rpm vient d'être fait +${COQRPMPACKAGE}.${ARCH}.rpm: rpm-config ${COQRPMPACKAGE}.src.rpm + - mkdir ${RPMTOPDIR}/RPMS/${ARCH} + - ln -s ${RPMTOPDIR}/RPMS/${ARCH} ${RPMTOPDIR}/RPMS/${LOCALARCH} + ${RPM} --rebuild ${COQRPMPACKAGE}.src.rpm + mv ${RPMTOPDIR}/RPMS/${ARCH}/${COQRPMPACKAGE}.${ARCH}.rpm . + +########## +contrib-tag: + @dashedversion=V`echo ${VERSION} | sed -e 's/\./-/g'`;\ + echo -n "Tagging the contrib with version number $$dashedversion... ";\ + cvs rtag -F $$dashedversion contrib + @echo done + +contrib-tar-gz: + - rm -rf contrib-${VERSION} + @echo -n Exporting a fresh copy of the contribs... + @dashedversion=V`echo ${VERSION} | sed -e 's/\./-/g'`;\ + cvs export -d contrib-${VERSION} -r $$dashedversion contrib + @echo done + - rm contrib-${VERSION}.tar.gz + @echo -n Building the tar.gz contrib package + @tar cvf contrib-${VERSION}.tar contrib-${VERSION} + @gzip contrib-${VERSION}.tar + @echo done + +########## +patch: + @echo ******** ATTENTION, plante sur pc-linux, essayez pauillac ****** + cp $(FTPDIR)/V$(PREVIOUSVERSION)/coq-$(PREVIOUSVERSION).tar.gz . + rm -rf coq-$(PREVIOUSVERSION) + gunzip -c coq-$(PREVIOUSVERSION).tar.gz | tar x + rm -rf ${COQPACKAGE} + gunzip -c ${COQPACKAGE}.tar.gz | tar x + diff -rc coq-$(PREVIOUSVERSION) ${COQPACKAGE} > patch-${VERSION}-$(PREVIOUSVERSION) + gzip patch-${VERSION}-$(PREVIOUSVERSION) + +########## +clean: + - rm -rf ${COQPACKAGE} ${RPMTOPDIR} ${ARCHBUILDROOT} ${RPMBUILDROOT} + +cleanall: + - rm -rf ${COQPACKAGE}* ${RPMTOPDIR} ${ARCHBUILDROOT} ${RPMBUILDROOT} + +########## Installation in the ftp repository + +ftp-install: prep-ftp-install + cp ${COQPACKAGE}/CHANGES ${FTPDIR}/V${VERSION}/ + cp ${COQPACKAGE}/README ${FTPDIR}/V${VERSION}/ + cp ${COQPACKAGE}/README.win ${FTPDIR}/V${VERSION}/ + cp ${COQPACKAGE}.tar.gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQPACKAGE}.tar.gz + cp ${COQPACKAGE}-*.tar.gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQPACKAGE}-*.tar.gz + cp ${COQRPMPACKAGE}.*.rpm ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQRPMPACKAGE}.*.rpm + +# prep-ftp-install: $(FTPDIR)/V${VERSION} +prep-ftp-install: + - mkdir $(FTPDIR)/V${VERSION} + - chmod g+w ${FTPDIR}/V${VERSION} + (cd $(FTPDIR); rm -f current;ln -sf V${VERSION} current) + +tar-gz-ftp-install: prep-ftp-install + cp ${COQPACKAGE}.tar.gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQPACKAGE}.tar.gz + +src-rpm-ftp-install: prep-ftp-install + cp ${COQRPMPACKAGE}.src.rpm ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQRPMPACKAGE}.src.rpm + +arch-rpm-ftp-install: prep-ftp-install + cp ${COQRPMPACKAGE}.${ARCH}.rpm ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQRPMPACKAGE}.${ARCH}.rpm + +arch-tar-gz-ftp-install: prep-ftp-install + cp ${COQPACKAGE}-$(SYSTEM)-$(ARCH).tar.gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/${COQPACKAGE}-$(SYSTEM)-$(ARCH).tar.gz + +contrib-ftp-install: prep-ftp-install + cp contrib-${VERSION}.tar.gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/contrib-${VERSION}.tar.gz + +patch-ftp-install: prep-ftp-install + cp patch-${VERSION}-$(PREVIOUSVERSION).gz ${FTPDIR}/V${VERSION}/ + chmod g+w ${FTPDIR}/V${VERSION}/patch-${VERSION}-$(PREVIOUSVERSION).gz |
