Sophie

Sophie

distrib > Fedora > 16 > x86_64 > media > updates-src > by-pkgid > 4abac31ab1d2797007726ab2366763ce > files > 8

clean-2.4-9.fc16.src.rpm

# 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