I suspect that fink may not be able to cope with the changes required for gcc4x's to co-exist. The plan was to pull the overlapping files out of gcc4x into a gcc4x-bin split-off (and create the overlapping files with calls to update-alternatives in PostInstScript and PreRmScript). The sticking point is that we have to be able to upgrade from the old-style two-part packages (gcc4x and gcc4x-shlibs) to the new style. The problem is what to add for the new gcc4x package which lacks overlapping files? I had hoped the following would work...
Package: gcc46 ... SplitOff: << Package: %N-shlibs ... SplitOff2: << Package: %N-bin Conflicts: gcc42 (<= 4.2.4-1002), gcc43 (<= 4.3.4-1000), gcc44 (<= 4.4.2-1000), gcc45 (<= 4.5.0-1000), gcc42-bin (>> 4.2.4-1002), gcc43-bin (>>4.3.4-1000), gcc44-bin (>> 4.4.2-1000), gcc45-bin (>> 4.5.0-1000) Replaces: gcc42 (<= 4.2.4-1002), gcc43 (<= 4.3.4-1000), gcc44 (<= 4.4.2-1000), gcc45 (<= 4.5.0-1000), gcc42-bin (>> 4.2.4-1002), gcc43-bin (>> 4 .3.4-1000), gcc44-bin (>> 4.4.2-1000), gcc45-bin (>> 4.5.0-1000) Depends: %N (= %v-%r) ... Such that if the old-style gcc45 package was installed (with overlapping files)... fink install gcc46 ..would install the new-style gcc46 (without overlapping files) along side the old-style gcc45 package. Only when gcc46-bin is installed would the old-style gcc45 package be forced to deinstall because of the overlapping files. Instead, I get an error when it seems to attempt to reinstall both gcc45 and gcc46 (which seems odd since gcc45 is already installed). I suspect that the fact that old-style gcc45 package already has its own Conflicts/Replaces on gcc46 may be to blame. Does anyone see a way around this mess of transitioning from a two-way split (with overlapping files in gcc4x) to a three-way split (with overlapping files in gcc4x-bin)? The current mockup for doing this is appended below. Jack Info2: << Package: gcc46 Version: 4.5.999 Revision: 20100423 Source: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%v/gcc-4.6-%r.tar.bz2 Source-MD5: c89ac54c22eda4be67ef8ca34ab3f74b Source2: ftp://sourceware.org/pub/java/ecj-latest.jar Source2-MD5: fd299f26c02268878b5d6c0e86f57c43 PatchFile: %n.patch PatchFile-MD5: 7c279824f0a0544259837dbae1ecf28c Distribution: 10.5, 10.6 Type: -64bit . Architecture: x86_64 NoSetCPPFLAGS: True NoSetLDFLAGS: True Depends: gmp-shlibs (>= 4.3.1-1000), libgmpxx-shlibs (>= 4.3.1-1000), libmpfr1-shlibs (>= 2.4.1-1), %N-shlibs (= %v-%r), libiconv, libgettext8-shlibs, ppl-shlibs (>= 0.10.2-1), cloog-shlibs (>= 0.15.9-1), libmpc2-shlibs (>= 0.8-1), xcode (>= 3.1.2) BuildDepends: gmp (>= 4.3.1-1000), libmpfr1 (>= 2.4.1-1), libiconv-dev, gettext-tools, libgettext8-dev, ppl (>= 0.10.2-1), cloog (>= 0.15.9-1), libmpc2 (>= 0.8-1), xcode (>= 3.1.2), fink (>= 0.27.2) ConfigureParams: << --prefix=%p/lib/gcc4.6 --mandir=%p/share/man --infodir=%p/share/info --enable-languages=c,c++,fortran,objc,obj-c++,java \ --with-gmp=%p --with-libiconv-prefix=%p --with-ppl=%p --with-cloog=%p --with-mpc=%p --with-system-zlib \ --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.6 << CompileScript: << #!/bin/bash -ev ulimit -s `ulimit -s` mv ../ecj-latest.jar ecj.jar mkdir ../darwin_objdir cd ../darwin_objdir darwinvers=`uname -r|cut -f1 -d.` ../gcc-4.6-%r/configure %c num_cpu=$(echo `sysctl -n hw.ncpu`) make -j $num_cpu ## make check requires autogen, dejagnu and expect, and should be run, in darwin_objdir, after install. ## on 32-bit processors use # make -k check ## on 64-bit processors use # make -k check RUNTESTFLAGS="--target_board=unix'{-m32,-m64}'" << InstallScript: << #!/bin/sh -ev darwinvers=`uname -r` cd ../darwin_objdir make install DESTDIR=%d mkdir -p %i/bin # Add symlinks to recreate previous naming of executables # in %p/lib/gcc4.6/bin and new -fsf-4.6 naming in %p/bin. binfiles="gcc g++ c++ cpp gcov" for binfile in $binfiles ; do ln -s %p/lib/gcc4.6/bin/$binfile-fsf-4.6 %i/lib/gcc4.6/bin/$binfile-4 ln -s %p/lib/gcc4.6/bin/$binfile-fsf-4.6 %i/bin/$binfile-fsf-4.6 done binfiles="gfortran gcj gcj-dbtool gcjh gij gjnih grmiregistry grmic jcf-dump jv-convert jv-scan" for binfile in $binfiles ; do ln -s %p/lib/gcc4.6/bin/$binfile-fsf-4.6 %i/lib/gcc4.6/bin/$binfile ln -s %p/lib/gcc4.6/bin/$binfile-fsf-4.6 %i/bin/$binfile-fsf-4.6 done # Rename manpages with -fsf-4.6 suffix. man7files="fsf-funding gfdl gpl" for man7file in $man7files ; do mv %i/share/man/man7/$man7file.7 %i/share/man/man7/$man7file-fsf-4.6.7 done # Rename info files with -fsf-4.6 suffix. infofiles="cpp cppinternals gcc gccinstall gccint gcj gfortran" for infofile in $infofiles ; do mv %i/share/info/$infofile.info %i/share/info/$infofile-fsf-4.6.info done cp %b/gcc/config/darwin-sections.def %i/lib/gcc4.6/lib/gcc/%m-apple-darwin${darwinvers}/4.6.0/plugin/include/config # remove build path from .la files perl -pi -e "s, \-L[^ ']*/%n-%v-%r/darwin_objdir/[^ ']*,,g" `find %i/lib/gcc4.6/lib -name '*.la'` << SplitOff: << Package: %N-shlibs Replaces: gcc4 (<= 20050130-4), gfortran-shlibs Provides: gfortran-shlibs Description: Shared libraries for gcc4 DocFiles: gcc/COPYING gcc/COPYING.LIB Homepage: http://gcc.gnu.org/ Files: << lib/gcc4.6/lib/libgfortran.3*.dylib lib/gcc4.6/lib/libffi.4*.dylib lib/gcc4.6/lib/libstdc++.6*.dylib lib/gcc4.6/lib/libgcc_s.1*.dylib lib/gcc4.6/lib/libgcc_ext.1*.dylib lib/gcc4.6/lib/libgcj.11*.dylib lib/gcc4.6/lib/libgcj-tools.11*.dylib lib/gcc4.6/lib/libgij.11*.dylib lib/gcc4.6/lib/libssp.0*.dylib lib/gcc4.6/lib/libobjc-gnu.2*.dylib lib/gcc4.6/lib/libgomp.1*.dylib lib/gcc4.6/lib/gcj-4.6.0-11 lib/gcc4.6/lib/i386/libgfortran.3*.dylib lib/gcc4.6/lib/i386/libffi.4*.dylib lib/gcc4.6/lib/i386/libgcj.11*.dylib lib/gcc4.6/lib/i386/libgcj-tools.11*.dylib lib/gcc4.6/lib/i386/libgij.11*.dylib lib/gcc4.6/lib/i386/libstdc++.6*.dylib lib/gcc4.6/lib/i386/libssp.0*.dylib lib/gcc4.6/lib/i386/libobjc-gnu.2*.dylib lib/gcc4.6/lib/i386/libgomp.1*.dylib lib/gcc4.6/lib/i386/gcj-4.6.0-11 << Shlibs: << %p/lib/gcc4.6/lib/libgfortran.3.dylib 4.0.0 %n (>= 4.3-20070711) %p/lib/gcc4.6/lib/libffi.4.dylib 5.0.0 %n (>= 20050130-5) %p/lib/gcc4.6/lib/libstdc++.6.dylib 7.0.0 %n (>= 4.1-1) %p/lib/gcc4.6/lib/libgcc_s.1.dylib 1.0.0 %n (>= 4.1-1) %p/lib/gcc4.6/lib/libgcj.11.dylib 12.0.0 %n (>= 4.1.999-20060915) %p/lib/gcc4.6/lib/libgcj-tools.11.dylib 12.0.0 %n (>= 4.1.999-20060915) %p/lib/gcc4.6/lib/libgij.11.dylib 12.0.0 %n (>= 4.1.999-20060915) %p/lib/gcc4.6/lib/libssp.0.dylib 1.0.0 %n (>= 4.1-1) %p/lib/gcc4.6/lib/libobjc-gnu.2.dylib 3.0.0 %n (>= 20050130-5) %p/lib/gcc4.6/lib/libgomp.1.dylib 2.0.0 %n (>= 2:4.1.99-20060513) %p/lib/gcc4.6/lib/gcj-4.6.0-11/libjvm.dylib 0.0.0 %n (>= 4.1-1) %p/lib/gcc4.6/lib/i386/libgfortran.3.dylib 4.0.0 %n (>= 4.3-20070711) 32 %p/lib/gcc4.6/lib/i386/libffi.4.dylib 5.0.0 %n (>= 20050130-5) 32 %p/lib/gcc4.6/lib/i386/libgcj.11.dylib 12.0.0 %n (>= 4.1.999-20060915) 32 %p/lib/gcc4.6/lib/i386/libgcj-tools.11.dylib 12.0.0 %n (>= 4.1.999-20060915) 32 %p/lib/gcc4.6/lib/i386/libgij.11.dylib 12.0.0 %n (>= 4.1.999-20060915) 32 %p/lib/gcc4.6/lib/i386/libstdc++.6.dylib 7.0.0 %n (>= 4.1-1) 32 %p/lib/gcc4.6/lib/i386/libssp.0.dylib 1.0.0 %n (>= 4.1-1) 32 %p/lib/gcc4.6/lib/i386/libobjc-gnu.2.dylib 3.0.0 %n (>= 20050130-5) 32 %p/lib/gcc4.6/lib/i386/libgomp.1.dylib 2.0.0 %n (>= 2:4.1.99-20060513) 32 %p/lib/gcc4.6/lib/i386/gcj-4.6.0-11/libjvm.dylib 0.0.0 %n (>= 4.1-1) 32 << << SplitOff2: << Package: %N-bin Conflicts: gcc42 (<= 4.2.4-1002), gcc43 (<= 4.3.4-1000), gcc44 (<= 4.4.2-1000), gcc45 (<= 4.5.0-1000), gcc42-bin (>> 4.2.4-1002), gcc43-bin (>> 4.3.4-1000), gcc44-bin (>> 4.4.2-1000), gcc45-bin (>> 4.5.0-1000) Replaces: gcc42 (<= 4.2.4-1002), gcc43 (<= 4.3.4-1000), gcc44 (<= 4.4.2-1000), gcc45 (<= 4.5.0-1000), gcc42-bin (>> 4.2.4-1002), gcc43-bin (>> 4.3.4-1000), gcc44-bin (>> 4.4.2-1000), gcc45-bin (>> 4.5.0-1000) Depends: %N (= %v-%r) PostInstScript: << # Add symlinks to recreate previous naming of executables priority=`echo %N | sed -e 's/[^0-9]//g'` binfiles="cpp gcc g++ c++ gcov" for binfile in $binfiles ; do update-alternatives --install %p/bin/$binfile-4 $binfile-4 %p/lib/gcc4.6/bin/$binfile-fsf-4.6 $priority done binfiles="gfortran gcj gcj-dbtool gcjh gij gjnih grmiregistry grmic jcf-dump jv-convert jv-scan" for binfile in $binfiles ; do update-alternatives --install %p/bin/$binfile $binfile %p/lib/gcc4.6/bin/$binfile-fsf-4.6 $priority done # Add symlinks for manpages under old names. man1files="cpp g++ gcc gcov" for man1file in $man1files ; do update-alternatives --install %p/share/man/man1/$man1file-4 $man1file-4 %p/share/man/man1/$man1file-fsf-4.6.1 $priority done man1files="aot-compile gappletviewer gc-analyze gcj-dbtool gcj gcjh gfortran gij gjar gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db" for man1file in $man1files ; do update-alternatives --install %p/share/man/man1/$man1file $man1file %p/share/man/man1/$man1file-fsf-4.6.1 $priority done man3files="ffi ffi_call ffi_prep_cif" for man3file in $man3files ; do update-alternatives --install %p/share/man/man3/$man3file $man3file %p/share/man/man3/$man3file-fsf-4.6.1 $priority done man7files="fsf-funding gfdl gpl" for man7file in $man7files ; do update-alternatives --install %p/share/man/man7/$man7file $man7file %p/share/man/man7/$man7file-fsf-4.6.1 $priority done # Add symlinks for info files under old names. infofiles="cpp gcc" for infofile in $infofiles ; do update-alternatives --install %p/share/info/$infofile-4 $infofile-4 %p/share/info/$infofile-fsf-4.6.1 $priority done infofiles="cppinternals gccinstall gccint gcj gfortran" for infofile in $infofiles ; do update-alternatives --install %p/share/info/$infofile $infofile %p/share/info/$infofile-fsf-4.6.1 $priority done << PreRmScript: << if [ $1 != "upgrade" ]; then # Remove symlinks from previous naming of executables binfiles="gcc-4 g++-4 c++-4 cpp-4 gcov-4 gfortran gcj gcj-dbtool gcjh gij gjnih grmiregistry grmic jcf-dump jv-convert jv-scan" for binfile in $binfiles ; do update-alternatives --remove $binfile %p/bin/$binfile done # Remove symlinks for manpages under old names. man1files="cpp-4 g++-4 gcc-4 gcov-4 aot-compile gappletviewer gc-analyze gcj-dbtool gcj gcjh gfortran gij gjar gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db" for man1file in $man1files ; do update-alternatives --remove $man1file %p/share/man/man1/$man1file done man3files="ffi ffi_call ffi_prep_cif" for man3file in $man3files ; do update-alternatives --remove $man3file %p/share/man/man3/$man3file done man7files="fsf-funding gfdl gpl" for man7file in $man7files ; do update-alternatives --remove $man7file %p/share/man/man7/$man7file done # Remove symlinks for info files under old names. infofiles="cpp-4 gcc-4 cpp-4 internals gccinstall gccint gcj gfortran" for infofile in $infofiles ; do update-alternatives --remove $infofile %p/share/info/$infofile done fi << << License: GPL Description: GNU Compiler Collection Version 4.6 InfoDocs: cpp-fsf-4.6.info cppinternals-fsf-4.6.info gcc-fsf-4.6.info gccinstall-fsf-4.6.info gccint-fsf-4.6.info gcj-fsf-4.6.info gfortran-fsf-4.6.info DescDetail: << GCC, the GNU Compiler Collection, includes front ends for C, C++, Objective-C, Objective-C++, Fortran, Java, and Ada. . C, C++, Objective C and Fortran and Java are included in this package. . The C and C++ compilers are named gcc-4 and g++-4 to avoid conflicts with gcc and g++ installed by the Apple Developer Tools << Homepage: http://gcc.gnu.org/ Maintainer: Jack Howarth <howa...@bromo.med.uc.edu> << ------------------------------------------------------------------------------ _______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel