# Address randomization breaks gcl's memory management scheme %undefine _hardened_build # SGC requires the frame pointer, and the sources assume C89 semantics %global __global_cflags %__global_cflags -fno-omit-frame-pointer -std=gnu89 Name: gcl Version: 2.6.12 Release: 5%{?dist} Summary: GNU Common Lisp Group: Development/Languages License: GPL+ and LGPLv2+ URL: http://www.gnu.org/software/gcl/ Source0: ftp://ftp.gnu.org/pub/gnu/%{name}/%{name}-%{version}.tar.gz Source1: gcl.el # This is some info files that are needed for the DESCRIBE function to do # something useful. These files are present in git 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.12-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.11-latex.patch # This patch was last sent upstream on 29 Dec 2008. It adapts to texinfo 5.0. Patch2: %{name}-2.6.11-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.11-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.12-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.11-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.11-getcwd.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. Patch7: %{name}-2.6.11-debuginfo.patch # This patch was last sent upstream on 13 Oct 2009. It fixes two bugs in the # reading of PLT information. Patch8: %{name}-2.6.11-plt.patch # This patch was last sent upstream on 13 Oct 2009. It fixes several malformed # function prototypes involving an ellipsis. Patch9: %{name}-2.6.11-ellipsis.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. Patch10: %{name}-2.6.11-infrastructure.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. Patch11: %{name}-2.6.11-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. Patch12: %{name}-2.6.12-unrandomize.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. Patch13: %{name}-2.6.11-asm-signal-h.patch # This patch is still experimental. Enable large file support. Patch14: %{name}-2.6.12-largefile.patch # Fix a linker problem on ARM platforms. Patch15: %{name}-2.6.11-arm.patch # Make the sincos symbol available to compiled code. Patch16: %{name}-2.6.12-sincos.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 %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 -n %{name} %setup -q -n %{name} -T -D -a 2 %patch0 %patch1 %patch2 %patch3 %patch4 -p1 %patch5 %patch6 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 %patch13 %patch14 %patch15 %patch16 # Don't insert line numbers into cmpinclude.h; the compiler gets confused sed -i 's,$(CC) -E,& -P,' makefile # Ensure the frame pointer doesn't get added back sed -i 's/"-fomit-frame-pointer"/""/' 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 # Help the debuginfo generator ln -s ../h/cmpinclude.h cmpnew/cmpinclude.h ln -s ../h/cmpinclude.h lsp/cmpinclude.h ln -s ../h/cmpinclude.h xgcl-2/cmpinclude.h # 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 2> /dev/null || : /sbin/restorecon -R %{_libdir}/maxima 2> /dev/null || : %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 readme readme.xgcl RELEASE* ChangeLog* faq doc %doc gcl*.jpg gcl.ico gcl.png %doc html/gcl-si html/gcl-tk %license COPYING* %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 %license COPYING* %{_datadir}/selinux/packages/gcl %changelog * Sat Mar 5 2016 Jerry James - 2.6.12-5 - Add -sincos patch to fix maxima build failure * Wed Feb 03 2016 Fedora Release Engineering - 2.6.12-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Thu Jul 23 2015 Jerry James - 2.6.12-3 - Fix gcl-selinux post script (bz 1246002) * Wed Jun 17 2015 Fedora Release Engineering - 2.6.12-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Tue Oct 28 2014 Jerry James - 2.6.12-1 - New upstream release - Drop upstreamed reloc patches * Fri Oct 10 2014 Jerry James - 2.6.11-3 - Add -aarch64 patch to fix build on aarch64 - Update -ppc64 patch to match upstream's version * Tue Sep 23 2014 Jerry James - 2.6.11-2 - Add -ppc64 patch to fix build on ppc64/ppc64le (bz 1145521) * Mon Sep 8 2014 Jerry James - 2.6.11-1 - New upstream release (bz 1138998) - Drop upstreamed patches - Drop -fstack-protector workaround; fixed upstream - GCL now builds on ppc64 (bz 480519) - GCL now builds on aarch64 (bz 1099534) - Fix license handling * Sat Aug 16 2014 Fedora Release Engineering - 2.6.10-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Sat Jun 07 2014 Fedora Release Engineering - 2.6.10-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Wed May 21 2014 Jaroslav Škarvada - 2.6.10-5 - Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 * Tue May 20 2014 Jerry James - 2.6.10-4 - ExcludeArch aarch64 (bz 1099534) * Mon May 19 2014 Jerry James - 2.6.10-3 - Add temporary fix for FTBFS with gmp 6 * Wed Feb 5 2014 Jerry James - 2.6.10-2 - Add -tcl8 patch to prepare for TCL 8.6 * Fri Nov 15 2013 Jerry James - 2.6.10-1 - New upstream release - Drop upstreamed patches - Help the debuginfo generator find more sources * Wed Nov 13 2013 Jerry James - 2.6.8-3 - Rebuild to fix SELinux policy breakage * Tue Oct 8 2013 Jerry James - 2.6.8-2 - Add -print-double patch from upstream to fix maxima 5.31.2 or later build. * Mon Aug 26 2013 Jerry James - 2.6.8-1 - Final 2.6.8 release - Build with -fno-omit-frame-pointer on all arches; SGC needs it - Fix bug in selinux post script - Add -tcl patch * Sat Aug 03 2013 Fedora Release Engineering - 2.6.8-0.18.20130521cvs - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Fri May 31 2013 Jerry James - 2.6.8-0.17.20130521cvs - Update to 20130521 snapshot for bug fixes - Rebase patches * Mon May 13 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