# RPM spec file for GCL %define gmp_version 4.1.3 %define gmp_zip bz2 %define emacsdir %{_datadir}/emacs/site-lisp Name: gcl Version: 2.6.2 Release: 3 License: LGPL + GPL-ed extras URL: http://www.gnu.org/software/gcl Source0: ftp://ftp.gnu.org/gnu/gcl/%{name}-%{version}.tar.gz Source1: ftp://ftp.gnu.org/gnu/gcl/%{name}-%{version}.tar.gz.sig Source2: ftp://ftp.sunet.se/pub/gnu/gmp/gmp-%{gmp_version}.tar.%{gmp_zip} Source3: ftp://ftp.sunet.se/pub/gnu/gmp/gmp-%{gmp_version}.tar.%{gmp_zip}.asc Patch1: %{name}-%{version}-man.patch Patch2: %{name}-%{version}-dotimes.patch BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildPrereq: file grep BuildPrereq: texinfo tetex te_latex BuildPrereq: gmp-devel >= %{gmp_version} Requires: gmp >= %{gmp_version} Group: Development/Languages/Lisp Group(de): Entwicklung/Sprachen/Lisp Summary: GNU Common LISP Summary(de): GNU Common LISP %description GCL is a Common Lisp compliant with the CLtL1 or ANSI standard. Lisp compilation produces native code through the intermediary of the system's C compiler, from which GCL derives efficient performance and facile portability. GCL currently uses TCL/Tk as GUI. %description -l de GCL ist eine Implementation von Common Lisp gemäß dem CLtL1- oder ANSI-Standard. Lisp-Kompilation erzeugt nativen Kode vermittels des C-Kompilators der Plattform. Daher stammt GCLs Effizienz und Portabilität. GCL verwendet gegenwärtig Tcl/Tk als grafische Benutzeroberfläche. %prep # Verify source signature if [ -x %{_bindir}/gpg ] && [ -r $HOME/.gnupg/pubring.gpg ]; then %{_bindir}/gpg --verify --batch --no-secmem-warning %{SOURCE1} %{_bindir}/gpg --verify --batch --no-secmem-warning %{SOURCE3} %{SOURCE2} fi %setup -q -T -b0 -a2 # Update GMP mv gmp3 gmp3.orig mv gmp-[4-9]*/ gmp3 ( cd gmp3 patch -p1 -b -z.orig <../gmp.patch ) || exit $? # Further patches %patch1 -p0 -b .orig %patch2 -p0 -b .orig # Fix permissions find -type f -perm +111 | xargs -r file | \ egrep -vi '[^[:alpha:]](script|executable)' | cut -d: -f1 | \ xargs -r chmod -x %build # Special "configure" options: # --enable-maxpage=XXX # will compile in a page table of size XXX (eg '--enable-maxpage=64*1024' # would give 64K pages allowing 256 MB if pages are 4K each) # --enable-holepage=XXX # will compile in a XXX-sized hole between the heap and relocatable # memory area (eg '--enable-holepage=64*1024' would give 64K pages # allowing 256 MB if pages are 4K each) # --enable-vssize=XXX # will compile in a value stack of size XXX # --enable-bdssize=XXX # will compile in a binding stack of size XXX # --enable-ihssize=XXX # will compile in a invocation history stack of size XXX # --enable-frssize=XXX # will compile in a frame stack of size XXX # --enable-machine=XXX # will force the use of one of the definitions in h/XXX.defs # --enable-notify=no # will disable the automatic notification of gcl maintainers of # successful builds/problems # --enable-tkconfig=XXX # will force the use of a TK_CONFIG_PREFIX=XXX as place # to look for tkConfig.sh and tclConfig.sh # --enable-tclconfig=XXX # will force the use of a TCL_CONFIG_PREFIX=XXX as place to look for # tclConfig.sh and tclConfig.sh # --enable-infodir=XXX # will force the use of a INFO_DIR=XXX as place to look for info # --enable-emacsdir=XXX # will manually specify the location for elisp files # --enable-common-binary=yes # forces use of lowest common denominator instruction sets (default is # =yes) # --enable-japi=yes # will compile in support for the JAPI graphical interface if present on # your system # --enable-xdr=yes # will compile in support for XDR # --enable-dlopen # uses dlopen for loading objects, which can then not be retained in # saved images # --enable-statsysbfd # uses a static sytem bfd library for loading and relocationing object # files # --enable-dynsysbfd # uses a dynamic shared sytem bfd library for loading and relocationing # object files # --enable-locbfd # uses a static bfd library built from this source tree for loading and # relocationing object files # --enable-custreloc # uses custom gcl code if available for loading and relocationing object # files # --enable-debug # builds gcl with -g in CFLAGS to enable running under gdb # --enable-gprof # builds gcl with -pg in CFLAGS to enable profiling with gprof # --enable-static # will link your GCL against static as opposed to shared system libraries # --enable-pic # builds gcl with -fPIC in CFLAGS # --enable-oldgmp # will link against gmp2 instead of gmp3 # --enable-dynsysgmp # will link against the system libgmp3 overriding certain functions with # patched versions from the local source # --with-x # use the X Window System # --enable-readline # enables command line completion via the readline library # --enable-ansi # builds a large gcl aiming for ansi compliance, --disable-ansi builds # the smaller traditional CLtL1 image CFLAGS="${CFLAGS-$RPM_OPT_FLAGS}" \ ./configure \ --prefix=%{_prefix} \ --exec-prefix=%{_exec_prefix} \ --bindir=%{_bindir} \ --libdir=%{_libdir} \ --datadir=%{_datadir} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --enable-infodir=%{_infodir} \ --enable-emacsdir=%{emacsdir} \ --enable-readline \ --enable-ansi \ --enable-common-binary=no \ --enable-statsysbfd=no \ --enable-dynsysbfd \ --enable-dynsysgmp \ --enable-notify=no \ # end of the above command line make ( PATH=$PWD/xbin:$PATH cd ansi-tests make test ) || exit $? %install rm -rf %{buildroot} pkgdoc make DESTDIR=%{buildroot} install %{__mkdir_p} %{buildroot}%{_mandir}/man1 %{__install} -c -m 644 man/man1/*.1 %{buildroot}%{_mandir}/man1 # Prepare documentation mkdir pkgdoc cp -pR ansi-tests pkgdoc/ (cd pkgdoc/ansi-tests && make clean) test -f ansi-tests/test.out && cp -p ansi-tests/test.out pkgdoc/ansi-tests/ # Move installed documentation mkdir pkgdoc/dvi pkgdoc/html mv %{buildroot}%{_infodir}/../doc/*/ pkgdoc/html/ mv %{buildroot}%{_infodir}/../doc/* pkgdoc/dvi/ rmdir %{buildroot}%{_infodir}/../doc # Save *.texi sources to support reformatting mkdir pkgdoc/texi cp -p info/*.texi pkgdoc/texi/ %clean rm -rf %{buildroot} pkgdoc %files %defattr(-,root,root) %{_bindir}/* %{_libdir}/* %{emacsdir}/* %doc %{_infodir}/*.info* %doc %{_mandir}/man1/*.1* %doc pkgdoc/* %doc COPYING* RELEASE-%{version}* readme %post if test -x /sbin/install-info; then /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gcl-si.info /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gcl-tk.info fi %preun if [ $1 = 0 ]; then if test -x /sbin/install-info; then /sbin/install-info --info-dir=%{_infodir} --remove %{_infodir}/gcl-tk.info /sbin/install-info --info-dir=%{_infodir} --remove %{_infodir}/gcl-si.info fi fi %changelog * Wed Jul 07 2004 Christian Cornelssen - Initial specfile for gcl-2.6.2 - Add more recent gmp version, subject to gmp.patch - Add official dotimes patch - Fix file permissions - Fix and install manpage - Use --enable-dynsys... for dynamic linking (don't want to recompile) - Move documentation to standard location - Add texi sources to documentation to support reformatting - Add testsuite to documentation