From b0d2348b036d4032f2272e6ac3493cda41f04f3c Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Sat, 8 Feb 2003 13:45:12 +0000 Subject: [PATCH] Completely work off our GCC packaging. This especially now uses the (now finally working) DESTDIR support in GCC and cleans up the parameter determinations. As a side-effect the packaging shrunk by about 1KB, too. --- gcc/gcc.spec | 148 +++++++++++++++++++++++---------------------------- 1 file changed, 66 insertions(+), 82 deletions(-) diff --git a/gcc/gcc.spec b/gcc/gcc.spec index eadf98d0d3..408b5b48a2 100644 --- a/gcc/gcc.spec +++ b/gcc/gcc.spec @@ -23,11 +23,6 @@ ## SUCH DAMAGE. ## -# package versions -%define V_major 3.2.2 -%define V_short 3.2.2 -%define V_long 3.2.2 - # package information Name: gcc Summary: GNU Compiler Collection @@ -37,8 +32,8 @@ Packager: The OpenPKG Project Distribution: OpenPKG [CORE] Group: Language License: GPL -Version: %{V_short} -Release: 20030205 +Version: 3.2.2 +Release: 20030208 # package options %option with_cxx yes @@ -47,7 +42,7 @@ Release: 20030205 %option with_threads yes # list of sources -Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_long}/gcc-%{V_long}.tar.bz2 +Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/gcc-%{version}.tar.bz2 Patch0: gcc.patch # build information @@ -67,20 +62,44 @@ AutoReqProv: no highly portable ISO C and ISO C++ compiler. %prep - %setup -q -n gcc-%{V_long} + %setup -q -n gcc-%{version} %patch -p0 %{l_shtool} subst -v -s \ -e "s;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g" \ gcc/configure %build - # configure the package + # create build sub-directory mkdir obj cd obj - options="" + + # determine ld(1) and as(1) usage + l_with_gnu_ld_as="" +%if "%{with_binutils}" == "yes" + l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-ld --with-ld=%{l_prefix}/bin/ld" + l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-as --with-as=%{l_prefix}/bin/as" +%else case "%{l_target}" in - *-linux* | *-freebsd* ) options="--with-gnu-as --with-gnu-ld" ;; + *-linux* | *-freebsd* ) + l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-as --with-gnu-ld" + ;; esac +%endif + + # determine threads usage +%if "%{with_threads}" == "yes" + l_enable_threads="posix" +%else + l_enable_threads="single" +%endif + + # determine language usage + l_enable_languages="c" +%if "%{with_cxx}" == "yes" + l_enable_languages="${l_enable_languages},c++" +%endif + + # configure the package CC="%{l_cc}" \ CFLAGS="%{l_cflags}" \ ../configure \ @@ -89,93 +108,56 @@ AutoReqProv: no --includedir=%{l_prefix}/include/gcc \ --with-gxx-include-dir=%{l_prefix}/include/g++ \ --with-local-prefix=%{l_prefix}/lib/gcc-lib \ -%if "%{with_cxx}" == "yes" - --enable-languages="c,c++" \ -%else - --enable-languages="c" \ -%endif -%if "%{with_threads}" == "yes" - --enable-threads=posix \ -%else - --enable-threads=single \ -%endif + --enable-languages="${l_enable_languages}" \ + --enable-threads="${l_enable_threads}" \ --disable-maintainer-mode \ --disable-shared \ --disable-nls \ -%if "%{with_binutils}" == "yes" - --with-gnu-ld --with-ld=%{l_prefix}/bin/ld \ - --with-gnu-as --with-as=%{l_prefix}/bin/as \ -%endif - $options + ${l_with_gnu_ld_as} - # build the package + # determine build parameters %if "%{with_optimize}" == "yes" l_boot_cflags="-O2" l_cflags="-O" l_libcflags="-g -O2" l_libcxxflags="-g -O2 -fno-implicit-templates" - case "%{l_target}" in - *-osf* ) l_boot_cflags="-O" ;; - esac %else l_boot_cflags="-O0" l_cflags="" l_libcflags="-g -O0" l_libcxxflags="-g -O0" %endif + + # build the package %{l_make} %{l_mflags} \ MAKE="%{l_make} %{l_mflags}" \ - BOOT_CFLAGS="$l_boot_cflags" \ - CFLAGS="$l_cflags" \ - LIBCFLAGS="$l_libcflags" \ - LIBCXXFLAGS="$l_libcxxflags" \ + BOOT_CFLAGS="${l_boot_cflags}" \ + CFLAGS="${l_cflags}" \ + LIBCFLAGS="${l_libcflags}" \ + LIBCXXFLAGS="${l_libcxxflags}" \ bootstrap-lean %install rm -rf $RPM_BUILD_ROOT - triple=`./config.guess` - triple=`./config.sub $triple | sed -e 's;-unknown-;--;'` - cd obj - # redirect to temporary build root - %{l_shtool} subst -v -s \ - -e "s;^\\(prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \ - -e "s;^\\(exec_prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \ - -e "s;^\\(gcc_gxx_include_dir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++;" \ - -e "s;^\\(gxx_include_dir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++;" \ - -e "s;^\\(glibcppinstalldir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++;" \ - -e "s;^\\(local_prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib;" \ - -e "s;^\\(includedir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/gcc;" \ - `find . -name Makefile -type f -print` - - # make sure the install procedure doesn't compile anything - # (or else we would have wrong paths hard-coded in the programs) - %{l_shtool} subst -v -s \ - -e 's;^install-cpp:.*;install-cpp:;' \ - -e 's;^install-common:.*;install-common: installdirs lang.install-common;' \ - -e 's;^install-driver:.*;install-driver:;' \ - -e 's;^install-libgcc:.*;install-libgcc: installdirs;' \ - -e 's;^install-build:.*;install-build:;' \ - -e 's;^install-collect2:.*;install-collect2: installdirs;' \ - -e 's;^install-assert-h:.*;install-assert-h: installdirs;' \ - -e 's;^install: stmp-dirs ./libgcc.a;install: stmp-dirs;' \ - -e 's;^\(install-.*:.*\) all *\(.*\)$;\1\2;' \ - gcc/Makefile gcc/libgcc.mk gcc/*/Makefile - - # make sure the Makefiles are not re-generated - for file in `find . -name config.status -print`; do - ( echo "#!/bin/sh" - echo ":" - ) >$file - done - - # run the standard installation procedure - %{l_make} %{l_mflags} install - - # strip the installation - mv $RPM_BUILD_ROOT%{l_prefix}/$triple/include/* \ - $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib/$triple/%{V_major}/include/ >/dev/null 2>&1 || true - rm -rf $RPM_BUILD_ROOT%{l_prefix}/$triple + # fetch GNU platform triple + triple=`./config.guess` + triple=`./config.sub ${triple}` + + # perform the standard installation procedure + ( cd obj + %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT ) + + # cleanup installation tree + mv $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.a \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib/${triple}/%{version}/ + mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib/${triple}/%{version}/include/ \ + >/dev/null 2>&1 || true + + # strip installation tree + rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple} + rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc >/dev/null 2>&1 || true %if "%{with_cxx}" == "yes" @@ -184,11 +166,13 @@ AutoReqProv: no %endif strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true for prog in cc1 cc1plus collect2 cpp; do - strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib/$triple/%{V_major}/$prog >/dev/null 2>&1 || true + strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc-lib/${triple}/%{version}/${prog} \ + >/dev/null 2>&1 || true done - # make additional links - ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc $RPM_BUILD_ROOT%{l_prefix}/bin/cc + # bump up installation tree + ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \ + $RPM_BUILD_ROOT%{l_prefix}/bin/cc ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \ $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1 %if "%{with_cxx}" == "yes" @@ -196,8 +180,8 @@ AutoReqProv: no $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1 %endif - # create file list - %{l_rpmtool} files -v -o$RPM_BUILD_DIR/gcc-%{V_long}/files -r$RPM_BUILD_ROOT %{l_files_std} + # determine installation file list + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} %files -f files