# The i386 build requires the frame pointer. %ifarch %ix86 %global __global_cflags %__global_cflags -fno-omit-frame-pointer %endif # -fstack-protector leads to segfaults because GCL uses its own conflicting # stack protection scheme. %global __global_cflags %(printf %%s '%__global_cflags' | sed -r 's/ -fstack-protector( --param=ssp-buffer-size=[[:digit:]]+)?//') # Prerelease of 2.6.8 %global alphatag 20130511cvs Name: gcl Version: 2.6.8 Release: 0.16.%{alphatag}%{?dist} Summary: GNU Common Lisp Group: Development/Languages License: GPL+ and LGPLv2+ URL: http://www.gnu.org/software/gcl/ # The source for this package was pulled from upstream's CVS repository. Use # the following commands to generate the tarball: # cvs -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/gcl export \ # -r Version_2_6_8pre -D 2013-05-12 -d gcl-2.6.8 gcl # tar cvJf gcl-2.6.8.tar.xz gcl-2.6.8 Source0: %{name}-%{version}.tar.xz Source1: gcl.el # This is some info files that are needed for the DESCRIBE function to do # something useful. These files are present in CVS HEAD (i.e., the upcoming # 2.7.0 release), but are missing in the 2.6 branch. Source2: %{name}-2.6.8-info.tar.xz # This patch was last sent upstream on 29 Dec 2008. It fixes a file descriptor # leak, as well as combining 4 system calls into only 2 on an exec(). Patch0: %{name}-2.6.8-fd-leak.patch # This patch was last sent upstream on 29 Dec 2008. It updates one source file # from LaTeX 2.09 to LaTeX 2e, thereby eliminating LaTeX warnings about running # in compatibility mode. Patch1: %{name}-2.6.8-latex.patch # This patch was last sent upstream on 29 Dec 2008. It adapts to texinfo 5.0. Patch2: %{name}-2.6.8-texinfo.patch # This patch was last sent upstream on 29 Dec 2008. It fixes a large number of # compile- and run-time problems with the Emacs interface code. Patch3: %{name}-2.6.8-elisp.patch # This patch was last sent upstream on 17 Jan 2009. It adds support for # compiling and running on an SELinux-enabled host. Patch4: %{name}-2.6.8-selinux.patch # This patch was last sent upstream on 29 Dec 2008. It uses the rename() # system call when it is available to avoid spawning a subshell and suffering a # context switch just to rename a file. Patch5: %{name}-2.6.8-rename.patch # This patch was last sent upstream on 29 Dec 2008. It eliminates a # compilation problem due to the fact that, at high optimization levels, # getcwd() is an inline function. Patch6: %{name}-2.6.8-getcwd.patch # This patch was last sent upstream on 29 Dec 2008. It updates the autoconf # and libtool files to newer versions. By itself, this patch accomplishes # little of interest. However, some of the later patches change configure.in. # Without this patch, autoconf appears to run successfully, but generates a # configure script that contains invalid shell script syntax. Patch7: %{name}-2.6.8-infrastructure.patch # This patch was last sent upstream on 29 Dec 2008. It simplifies the handling # of alloca() detection in the configure script. Patch8: %{name}-2.6.8-alloca.patch # This patch was last sent upstream on 29 Dec 2008. It rationalizes the # handling of system extensions. For example, on glibc-based systems, some # functionality is available only when _GNU_SOURCE is defined. Patch9: %{name}-2.6.8-extension.patch # This patch was last sent upstream on 29 Dec 2008. It fixes a compilation # error on newer GCC systems due to an include inside a function. This affects # the "unrandomize" sbrk() functionality, hence the name of the patch. Patch10: %{name}-2.6.8-unrandomize.patch # This is a Fedora-specific patch. Do not delete C files produced from D files # so they can be pulled into the debuginfo package. Patch11: %{name}-2.6.8-debuginfo.patch # The need for this patch was last communicated to upstream on 21 May 2009. # Without this patch, compilation fails due to conflicting type definitions # between glibc and Linux kernel headers. This patch prevents the kernel # headers from being used. Patch12: %{name}-2.6.8-asm-signal-h.patch # This patch was last sent upstream on 13 Oct 2009. It fixes two bugs in the # reading of PLT information. Patch13: %{name}-2.6.8-plt.patch # This patch was last sent upstream on 13 Oct 2009. It fixes several malformed # function prototypes involving an ellipsis. Patch14: %{name}-2.6.8-ellipsis.patch # This patch was last sent upstream on 30 Dec 2010. It fixes some malformed # man page constructions. Patch15: %{name}-2.6.8-man.patch # This patch was last sent upstream on 30 Oct 2012. It provides more # information when an unknown reloc type is encountered. Patch16: %{name}-2.6.8-reloc-type.patch # This patch is still experimental. Enable large file support. Patch17: %{name}-2.6.8-largefile.patch BuildRequires: libXaw-devel BuildRequires: readline-devel BuildRequires: binutils-devel BuildRequires: binutils-static BuildRequires: tk-devel BuildRequires: tcl-devel BuildRequires: gmp-devel BuildRequires: tex(latex) BuildRequires: tex-ec BuildRequires: texinfo BuildRequires: texinfo-tex BuildRequires: emacs BuildRequires: xemacs BuildRequires: xemacs-packages-extra BuildRequires: selinux-policy-devel Requires: gcl-selinux%{?_isa} = %{version}-%{release} Requires(post): info Requires(postun): info # GCL currently fails to build on PPC64 platforms. See bugzilla #480519. ExcludeArch: ppc64 %description GCL is a Common Lisp currently compliant with the 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. Currently uses TCL/Tk as GUI. %package emacs Group: Development/Languages Summary: Emacs mode for interacting with GCL Requires: %{name} = %{version}-%{release} Requires: emacs(bin) >= %{_emacs_version} BuildArch: noarch %description emacs Emacs mode for interacting with GCL %package emacs-el Group: Development/Languages Summary: Source for Emacs mode for interacting with GCL Requires: %{name}-emacs = %{version}-%{release} BuildArch: noarch %description emacs-el Source Elisp code for Emacs mode for interacting with GCL %package xemacs Group: Development/Languages Summary: XEmacs mode for interacting with GCL Requires: %{name} = %{version}-%{release} Requires: xemacs(bin) >= %{_xemacs_version}, xemacs-packages-extra BuildArch: noarch %description xemacs XEmacs mode for interacting with GCL %package xemacs-el Group: Development/Languages Summary: Source for XEmacs mode for interacting with GCL Requires: %{name}-xemacs = %{version}-%{release} BuildArch: noarch %description xemacs-el Source Elisp code for XEmacs mode for interacting with GCL %package selinux Group: Development/Languages Summary: SELinux policy for GCL images Requires(post): policycoreutils Requires(postun): policycoreutils %description selinux SELinux policy for GCL images. All programs that dump GCL images to be run on SELinux-enabled hosts should Require this package, and give the image the type gcl_exec_t. %prep %setup -q %setup -q -T -D -a 2 %patch0 %patch1 %patch2 %patch3 %patch4 -p1 %patch5 %patch6 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 %patch13 %patch14 %patch15 %patch16 %patch17 # Don't let the configure script add compiler flags we don't want sed -e 's/"-fomit-frame-pointer"/""/' \ %ifarch %ix86 -e 's/-O3/& -fno-omit-frame-pointer/g' \ %endif -i configure # Fix a path in the launch script sed -i -e 's|/usr/lib/tk|%{_datadir}/tk|' debian/gcl.sh # Get a version of texinfo.tex that works with the installed version of texinfo cp -p %{_datadir}/texmf/tex/texinfo/texinfo.tex info # The archive is so full of spurious executable bits that we just remove them # all here, then add back the ones that should exist find . -type f -perm /0111 | xargs chmod a-x chmod a+x add-defs add-defs1 config.guess config.sub configure install.sh chmod a+x bin/info bin/info1 gcl-tk/gcltksrv.in gcl-tk/ngcltksrv mp/gcclab chmod a+x o/egrep-def utils/replace xbin/* %build %configure --enable-readline --enable-ansi --enable-dynsysgmp --enable-xgcl \ --enable-tclconfig=%{_libdir} --enable-tkconfig=%{_libdir} # FIXME: %%{?_smp_mflags} breaks the build make # Build gcl.info, which is needed for DESCRIBE to work properly make -C info gcl.info # dwdoc needs one extra LaTeX run to resolve references cd xgcl-2 pdflatex dwdoc.tex # Build the SELinux policy cd ../selinux make -f %{_datadir}/selinux/devel/Makefile %install make install DESTDIR=$RPM_BUILD_ROOT # Get rid of the parts that we don't want rm -f $RPM_BUILD_ROOT%{_infodir}/dir rm -rf $RPM_BUILD_ROOT%{_datadir}/doc rm -rf $RPM_BUILD_ROOT%{_datadir}/emacs rm -rf $RPM_BUILD_ROOT%{_prefix}/lib/gcl-*/info # Install the man page mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 cp -pf man/man1/* $RPM_BUILD_ROOT%{_mandir}/man1 # Install the HTML documentation mkdir -p html cp -pfr info/gcl-si info/gcl-tk html # Install and compile the Emacs code mkdir -p $RPM_BUILD_ROOT%{_emacs_sitelispdir}/gcl cp -pfr elisp/* $RPM_BUILD_ROOT%{_emacs_sitelispdir}/gcl rm -f $RPM_BUILD_ROOT%{_emacs_sitelispdir}/gcl/makefile rm -f $RPM_BUILD_ROOT%{_emacs_sitelispdir}/gcl/readme mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir} sed -e "s|%LISP_DIR%|%{_emacs_sitelispdir}|" %{SOURCE1} > $RPM_BUILD_ROOT%{_emacs_sitestartdir}/gcl.el pushd $RPM_BUILD_ROOT%{_emacs_sitelispdir}/gcl %{_emacs_bytecompile} *.el popd # Install and compile the XEmacs code mkdir -p $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/gcl cp -fr elisp/* $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/gcl rm -f $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/gcl/makefile rm -f $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/gcl/readme mkdir -p $RPM_BUILD_ROOT%{_xemacs_sitestartdir} sed -e "s|%LISP_DIR%|%{_xemacs_sitelispdir}|" %{SOURCE1} > $RPM_BUILD_ROOT%{_xemacs_sitestartdir}/gcl.el pushd $RPM_BUILD_ROOT%{_xemacs_sitelispdir}/gcl %{_xemacs_bytecompile} *.el popd # Save the policy file away for later installation mkdir -p $RPM_BUILD_ROOT%{_datadir}/selinux/packages/gcl cp -p selinux/gcl.pp $RPM_BUILD_ROOT%{_datadir}/selinux/packages/gcl # The image has garbage strings containing RPM_BUILD_ROOT export QA_SKIP_BUILD_ROOT=1 %clean rm -f /tmp/gazonk_* /tmp/gcl_* %post /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir \ --entry="* gcl: (gcl). GNU Common Lisp Manual." \ 2>/dev/null || : /sbin/install-info %{_infodir}/%{name}-si.info %{_infodir}/dir \ --entry="* gcl-si: (gcl-si). GNU Common Lisp System Internals." \ 2>/dev/null || : /sbin/install-info %{_infodir}/%{name}-tk.info %{_infodir}/dir \ --entry="* gcl-tk: (gcl-tk). GNU Common Lisp Tk Manual." \ 2>/dev/null || : /sbin/fixfiles -R gcl restore || : %post selinux /usr/sbin/semodule -i %{_datadir}/selinux/packages/gcl/gcl.pp || : /sbin/restorecon -R %{_libdir}/maxima %postun if [ $1 = 0 ]; then /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || : /sbin/install-info --delete %{_infodir}/%{name}-si.info %{_infodir}/dir 2>/dev/null || : /sbin/install-info --delete %{_infodir}/%{name}-tk.info %{_infodir}/dir 2>/dev/null || : fi %postun selinux if [ $1 = 0 ]; then /usr/sbin/semodule -r gcl || : fi %files %{_bindir}/gcl %{_prefix}/lib/gcl* %{_infodir}/* %{_mandir}/man*/* %doc COPYING* readme readme.xgcl RELEASE* ChangeLog* faq doc %doc gcl*.jpg gcl.ico gcl.png %doc html/gcl-si html/gcl-tk %files emacs %doc elisp/readme %dir %{_emacs_sitelispdir}/gcl %{_emacs_sitelispdir}/gcl/*.elc %{_emacs_sitestartdir}/* %files emacs-el %{_emacs_sitelispdir}/gcl/*.el %files xemacs %doc elisp/readme %dir %{_xemacs_sitelispdir}/gcl %{_xemacs_sitelispdir}/gcl/*.elc %{_xemacs_sitestartdir}/* %files xemacs-el %{_xemacs_sitelispdir}/gcl/*.el %files selinux %doc COPYING* %{_datadir}/selinux/packages/gcl %changelog * Fri Mar 22 2013 Jerry James - 2.6.8-0.16.20130511cvs - Update to 20130511 snapshot for bug fixes - Add -largefile patch * Fri Mar 22 2013 Jerry James - 2.6.8-0.15.20130126cvs - Really fix FTBFS on i386 with -fno-omit-frame-pointer - Update the -texinfo patch for texinfo 5.x - Update texinfo.tex so we have a version that works with texinfo 5.x * Thu Feb 14 2013 Jerry James - 2.6.8-0.15.20130126cvs - Update to 20130126 snapshot to fix FTBFS - Drop upstreamed -s390-reloc patch * Wed Feb 13 2013 Fedora Release Engineering - 2.6.8-0.15.20130121cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Wed Jan 23 2013 Dan Horák - 2.6.8-0.14.20130121cvs - fix build on s390 - successful build requires kernel newer than what's in RHEL-6 * Mon Jan 21 2013 Jerry James - 2.6.8-0.13.20130121cvs - Update to 20130121 snapshot, fixes bz 838068 - Rebuild for bz 886934 - Add tex-ec BR for TeXLive 2012 - Fix texinfo sources - Workaround error from passing --parent to %%doc * Tue Oct 30 2012 Jerry James - 2.6.8-0.12.20121008cvs - Update to 20121008 snapshot - Add patch to identify unknown relocs instead of just exiting * Thu Jul 26 2012 Jerry James - 2.6.8-0.11.20120705cvs - Update to 20120705 snapshot - Change SELinux BR to match recent changes in Rawhide * Thu Jul 19 2012 Fedora Release Engineering - 2.6.8-0.11.20120323cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Wed Mar 28 2012 Jerry James - 2.6.8-0.10.20120323cvs - Update to 20120323 snapshot * Mon Jan 9 2012 Jerry James - 2.6.8-0.10.20120109cvs - Update to 20120109 snapshot * Thu Oct 20 2011 Marcela Mašláňová - 2.6.8-0.9.20110516cvs.2 - rebuild with new gmp without compat lib * Tue Oct 11 2011 Peter Schiffer - 2.6.8-0.9.20110516cvs.1 - rebuild with new gmp * Thu Jun 16 2011 Jerry James - 2.6.8-0.9.20110516cvs - Rebuild due to bz 712251 - Use explicitly versioned Requires on gcl-selinux - Drop defattr * Wed Jun 1 2011 Jerry James - 2.6.8-0.8.20110516cvs - Update to 20110516 CVS snapshot for more bug fixes - Fix SELinux policy for maxima (bz 650279) - Drop upstreamed volatile patch * Tue Feb 08 2011 Fedora Release Engineering - 2.6.8-0.8.20101115cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Thu Dec 30 2010 Jerry James - 2.6.8-0.7.20101115cvs - Update to 20101115 CVS snapshot for more bug fixes - Drop upstreamed loginname patch - Add man page patch - Add license file to -selinux package - Don't force dynamic BFD so we can use custreloc instead * Tue Mar 23 2010 Jerry James - 2.6.8-0.7.20100201cvs - Update to 20100201 CVS snapshot for multiple bug fixes including, I hope, bz 573534 - Drop upstreamed sigprocmask-linux patch - Work around binutils-devel/binutils-static brokenness in F-13+. * Mon Nov 30 2009 Jerry James - 2.6.8-0.7.20090701cvs - Fix scripts to reflect actual installation order (bz 541050) - Update PLT patch for GNU ld >= 2.19 (bz 542004) - Use (X)Emacs macros to simplify the spec file * Tue Oct 20 2009 Jerry James - 2.6.8-0.6.20090701cvs - Update SELinux policy for confined users (bz 529757) * Tue Oct 6 2009 Jerry James - 2.6.8-0.5.20090701cvs - Update SELinux files to give compiled maxima files the right context - Drop SELinux compatibility kludge for early F-11 selinux-policy packages * Tue Aug 11 2009 Jerry James - 2.6.8-0.4.20090701cvs - Update to 20090701 CVS snapshot, fixes bz 511483 - Break fix for out into a separate patch and do it right - Add -plt patch to fix reading of PLT info - Add -ellipsis patch to eliminate nondeterministic behavior - Use xz payloads instead of bz2 - Minor spec file cleanups * Fri Jul 24 2009 Fedora Release Engineering - 2.6.8-0.4.20090303cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Mon Apr 27 2009 Jerry James - 2.6.8-0.3.20090303cvs - Update to 20090303 CVS snapshot - Drop upstreamed BFD patch - Make separate -selinux subpackage * Tue Feb 24 2009 Fedora Release Engineering - 2.6.8-0.3.20080902cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild * Sat Feb 21 2009 Jerry James - 2.6.8-0.2.20080902cvs - Add -fno-strict-aliasing to fix build problems in Rawhide. - Fix the broken version number scheme I used on the last two releases. * Mon Jan 26 2009 Jerry James - 2.6.8-0.1.20080902cvs.2 - Add missing files required to build gcl.info, which is needed for the DESCRIBE function to work properly. - Specify the info entries explicitly, else a mangled version is written. * Sat Jan 17 2009 Jerry James - 2.6.8-0.1.20080902cvs.1 - ExcludeArch ppc64 for now until I can figure out why it doesn't build * Fri Jan 9 2009 Jerry James - 2.6.8-0.1.20080902cvs - Update from CVS to fix many build problems - Fix SELinux and BFD problems that blocked the build - Add patches to address various build and runtime problems - Drop old patches that are obsoleted by the update from CVS - Split out emacs and xemacs subpackages * Mon Jul 21 2008 Tom "spot" Callaway - 2.6.7-19 - fix license tag * Mon Feb 18 2008 Fedora Release Engineering - 2.6.7-18 - Autorebuild for GCC 4.3 * Mon Jan 14 2008 Gerard Milmeister - 2.6.7-17 - exclude arch x86_64 for now * Thu Jan 03 2008 Alex Lancaster - 2.6.7-16 - Rebuild for new Tcl (8.5) * Tue Aug 14 2007 Gerard Milmeister - 2.6.7-15 - Fix post-install script path on x64_64 * Wed Dec 27 2006 Gerard Milmeister - 2.6.7-14 - added req ncurses-devel * Thu Dec 21 2006 Gerard Milmeister - 2.6.7-13 - Fix for compiling with readline library * Mon Aug 28 2006 Gerard Milmeister - 2.6.7-12 - Rebuild for FE6 * Sat May 6 2006 Gerard Milmeister - 2.6.7-11 - fixed summary text (CLtL1 -> ANSI) - configure: readine -> readline * Fri Apr 14 2006 Gerard Milmeister - 2.6.7-10 - added changes to SELinux policy * Wed Mar 8 2006 Gerard Milmeister - 2.6.7-7 - Patch gcl-bash.patch for configure * Sat Feb 18 2006 Gerard Milmeister - 2.6.7-6 - Rebuild for Fedora Extras 5 * Fri Sep 9 2005 Gerard Milmeister - 2.6.7-1 - New Version 2.6.7 * Sun Apr 17 2005 Gerard Milmeister - 2.6.6-2 - Added buildreq tetex and texinfo * Wed Apr 6 2005 Gerard Milmeister - 2.6.6-1 - New Version 2.6.6 * Fri Feb 18 2005 Gerard Milmeister - 0:2.6.5-1 - First Fedora release