# Clean - The Clean language compiler # Review-request: RHBZ 834069 filed on Wed Jun 20 2012 # Status: APPROVED by Paul Wouters on Thu Jun 28 2012 # Sponsor: Paul Wouters as of Fri Jul 06 2012 # Known warnings/errors of RPMLINT: # Name-repeated-in-summary: This is because the name of the language is the same as that of the compiler # Executable-stack: the Clean runtime system is built to use this, so this cannot be changed without major overhauling of the Clean compiler itself # Empty files (_startup.dcl, _startupTrace.dcl, _startupProfile.dcl, _system.dcl, _library.dcl): these must be available while running the compiler # ifarch-applied-patch: because the archives for 32-bit and 64-bit differ in more then the bootstrapped files, this has to be done (some files have the same name, but have different contents) # Only-non-binary-in-usr-lib: because the additional packages do not get compiled on build-time, but we do want all Clean libs centralized # No-documentation: the complete language and the modules in this spec file are all documented in the documentation in clean-doc Name: clean Version: 2.4 Release: 9%{?dist} Group: Development/Tools Summary: The Clean language compiler License: LGPLv2+ or BSD URL: http://wiki.clean.cs.ru.nl/ # The sources of the (bootstrapped) compiler, as provided by upstream Source0: http://clean.cs.ru.nl/download/Clean24/linux/%{name}%{version}_boot.tar.gz Source1: http://clean.cs.ru.nl/download/Clean24/linux/%{name}%{version}_64_boot.tar.gz # This has been sent upstream 20-06-2012 Source2: %{name}.htoclean.1 # Has been sent upstream 28-06-2012 Patch0: %{name}.makefiles.patch # Have been sent upstream 28-06-2012 Patch1: %{name}.32bit.patch Patch2: %{name}.64bit.patch # Has been sent upstream 20-06-2012 Patch3: %{name}.clmman.patch # Have been sent upstream 28-06-2012 Patch4: %{name}.rmtmp.patch Patch5: %{name}.localint.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Because the Clean compiler is only available on x86 and x86_64, we notify such ExclusiveArch: i386 i486 i586 i686 x86 x86_64 BuildRequires: dos2unix #Requires: # This has been disabled because the Clean compiler always strips the binaries, so the debug package is empty %define debug_package %{nil} # Sub-packages for optional modules %package generics Summary: The Generics modules of Clean Requires: %{name} Group: Development/Libraries %package mersennetwister Summary: An MersenneTwister implementation for Clean Requires: %{name} Group: Development/Libraries %package network Summary: An TCP/IP implementation for Clean Requires: %{name} Group: Development/Libraries %package doc Summary: Documentation for the Clean compiler Requires: %{name} Group: Documentation %description The Clean language compiler. Released by the MBSD of the Radboud University Nijmegen. %description generics The Generics modules %description mersennetwister An Clean implementation of the Mersenne Twister algorithm %description network TCP/IP support for Clean %description doc Documentation for the Clean compiler and libraries # The real building starts here %prep cp -p %SOURCE2 . %ifarch i386 i486 i586 i686 x86 %setup -T -b 0 -q -n %{name} %patch0 %patch1 %else %setup -T -b 1 -q -n %{name} %patch0 %patch2 %endif %patch3 %patch4 %patch5 %build cd %{_builddir}/%{buildsubdir}/src make %{?_smp_mflags} CFLAGS="%{optflags} -s " CC=gcc cd %{_builddir}/%{buildsubdir} make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS -s " CC=gcc # Build the needed intermediate files in advance (|| : because this will fail, since _Array by itself is not a complete program, and has no Start =) cd %{_builddir}/%{buildsubdir}/lib/Generics %{_builddir}/%{buildsubdir}/bin/clm _Array || : # Patch clm to use the includes from _libdir directory %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/bin/clm CLEANLIB %{_libexecdir}/%{name} %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/bin/clm CLEANPATH "" %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/bin/clm CLEANILIB %{_libdir}/%{name} %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/bin/clm PATHLISTRT "%{_libdir}/%{name}" # Enable patches to use local intermediate files (not advised to do this during bootstrapping) %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/bin/clm LOCALINT Y %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/lib/exe/cocl LOCALINT Y %{_builddir}/%{buildsubdir}/bin/patch_bin %{_builddir}/%{buildsubdir}/lib/exe/cg LOCALINT Y # Fix line ending in doc/CleanLangRep/CleanRep.2.2.css dos2unix %{_builddir}/%{buildsubdir}/doc/CleanLangRep/CleanRep.2.2.css %install # Create base directory structure mkdir -p %{buildroot}%{_bindir}/ mkdir -p %{buildroot}%{_libexecdir}/%{name}/ mkdir -p %{buildroot}%{_libdir}/%{name}/ mkdir -p %{buildroot}%{_mandir}/man1/ # Copy bin cp -p %{_builddir}/%{buildsubdir}/bin/clm %{buildroot}%{_bindir}/ cp -p %{_builddir}/%{buildsubdir}/bin/htoclean %{buildroot}%{_bindir}/ # Copy libexec folder # exe (cg, cocl and linker) cp -p %{_builddir}/%{buildsubdir}/lib/exe/* %{buildroot}%{_libexecdir}/%{name}/ # Copy lib folder # StdLib mkdir -p %{buildroot}%{_libdir}/%{name}/StdLib/ cp -p %{_builddir}/%{buildsubdir}/lib/StdLib/*.icl %{buildroot}%{_libdir}/%{name}/StdLib/ cp -p %{_builddir}/%{buildsubdir}/lib/StdLib/*.dcl %{buildroot}%{_libdir}/%{name}/StdLib/ # StdEnv mkdir -p %{buildroot}%{_libdir}/%{name}/StdEnv/ mkdir -p %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/*.icl %{buildroot}%{_libdir}/%{name}/StdEnv/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/*.dcl %{buildroot}%{_libdir}/%{name}/StdEnv/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_startup.o %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_startupProfile.o %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_startupTrace.o %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_system.* %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_SystemEnumStrict.* %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ cp -p %{_builddir}/%{buildsubdir}/StdEnv/Clean\ System\ Files/_SystemStrictLists.* %{buildroot}%{_libdir}/%{name}/StdEnv/Clean\ System\ Files/ # ArgEnv mkdir -p %{buildroot}%{_libdir}/%{name}/ArgEnv/ cp -p %{_builddir}/%{buildsubdir}/lib/ArgEnv/*.icl %{buildroot}%{_libdir}/%{name}/ArgEnv/ cp -p %{_builddir}/%{buildsubdir}/lib/ArgEnv/*.dcl %{buildroot}%{_libdir}/%{name}/ArgEnv/ cp -pr %{_builddir}/%{buildsubdir}/lib/ArgEnv/Clean\ System\ Files %{buildroot}%{_libdir}/%{name}/ArgEnv/ # Generics mkdir -p %{buildroot}%{_libdir}/%{name}/Generics mkdir -p %{buildroot}%{_libdir}/%{name}/Generics/Clean\ System\ Files cp -p %{_builddir}/%{buildsubdir}/lib/Generics/*.icl %{buildroot}%{_libdir}/%{name}/Generics/ cp -p %{_builddir}/%{buildsubdir}/lib/Generics/*.dcl %{buildroot}%{_libdir}/%{name}/Generics/ cp -p %{_builddir}/%{buildsubdir}/lib/Generics/Clean\ System\ Files/_Array.o %{buildroot}%{_libdir}/%{name}/Generics/Clean\ System\ Files/ # MersenneTwister mkdir -p %{buildroot}%{_libdir}/%{name}/MersenneTwister cp -p %{_builddir}/%{buildsubdir}/lib/MersenneTwister/*.icl %{buildroot}%{_libdir}/%{name}/MersenneTwister/ cp -p %{_builddir}/%{buildsubdir}/lib/MersenneTwister/*.dcl %{buildroot}%{_libdir}/%{name}/MersenneTwister/ # TCPIP mkdir -p %{buildroot}%{_libdir}/%{name}/TCPIP cp -p %{_builddir}/%{buildsubdir}/lib/TCPIP/*.icl %{buildroot}%{_libdir}/%{name}/TCPIP/ cp -p %{_builddir}/%{buildsubdir}/lib/TCPIP/*.dcl %{buildroot}%{_libdir}/%{name}/TCPIP/ cp -pr %{_builddir}/%{buildsubdir}/lib/TCPIP/Clean\ System\ Files %{buildroot}%{_libdir}/%{name}/TCPIP/ # Copy man files cp -p %{_builddir}/%{buildsubdir}/man/man1/clm.1 %{buildroot}%{_mandir}/man1/ cp -p %{_builddir}/%{name}.htoclean.1 %{buildroot}%{_mandir}/man1/htoclean.1 # Set the permissions correct, as the clean compiler doesnt chmod 755 %{buildroot}%{_bindir}/clm chmod 755 %{buildroot}%{_bindir}/htoclean chmod 755 %{buildroot}%{_libexecdir}/%{name}/linker chmod 755 %{buildroot}%{_libexecdir}/%{name}/cg chmod 755 %{buildroot}%{_libexecdir}/%{name}/cocl # Remove unneeded files rm %{_builddir}/%{buildsubdir}/doc/Examples/make.bat rm %{buildroot}%{_libdir}/%{name}/Generics/gentest.icl %files %{_bindir}/clm %{_bindir}/htoclean %dir %{_libdir}/%{name} %{_libdir}/%{name}/ArgEnv %{_libdir}/%{name}/StdEnv %{_libdir}/%{name}/StdLib %{_libexecdir}/%{name} %{_mandir}/man1/clm.1.gz %{_mandir}/man1/htoclean.1.gz %doc CleanLicenseConditions.txt %files generics %{_libdir}/%{name}/Generics %files mersennetwister %{_libdir}/%{name}/MersenneTwister %files network %{_libdir}/%{name}/TCPIP %files doc %doc doc/* %changelog * Fri Jul 06 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-9 - Fixed description-line-too-long for clean-mersennetwister - Replaced RPM_OPT_FLAGS with optflags, to use just one set of macro types (RHBZ 834069, comment 18) - Moved documentation to seperate -doc package - Added Group-tags to main and sub packages * Fri Jul 06 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-8 - Changed the Requires: of the subpackages to name macro - Updated the changelog to the more readable format with version number on the same line as date and author - Fixed some typing and other mistakes in the changelog - Modified clm to embed PATHLISTRT, from which all sub-dirs will be imported by default - Removed Dynamics because this is not yet supported on Linux - Removed gentest.icl from Generics because this was only a testing program, not part of the library itself - Modified cp to retain timestamps * Fri Jun 29 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-7 - Modified clm so I only have to package minimal abc and o files (only the _startup files and some _System) - Added the optional modules in subpackages - Moved cocl, cg and linker to libexec/clean - Renamed the libdir/Clean to libdir/clean * Fri Jun 29 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-6 - Fixed an error in compiling Clean files * Fri Jun 29 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-5 - Fixed a regression with 32bit patch - CFLAGS fixed (RHBZ 834069, comment 11) * Fri Jun 29 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-4 - Stripped bin/clm (RHBZ 834069, comment 8) - Removed doc/Examples/make.bat (RHBZ 834069, comment 8) * Thu Jun 28 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-3 - Fixed a few things according to review comments (RHBZ 834069, comment 6) - Case of name changed to all lower * Wed Jun 27 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-2 - Fixed building according to review comments (RHBZ 834069, comment 4) * Wed Jun 20 2012 Patrick Uiterwijk <puiterwijk@gmail.com> - 2.4-1 - First packaging effort