diff -urN sorcery.ori/var/lib/sorcery/modules/build_api/api2 sorcery/var/lib/sorcery/modules/build_api/api2 --- sorcery.ori/var/lib/sorcery/modules/build_api/api2 2005-02-12 04:20:52.000000000 +0000 +++ sorcery/var/lib/sorcery/modules/build_api/api2 2005-02-16 15:08:04.186415616 +0000 @@ -97,8 +97,8 @@ echo "Compile log for $SPELL $VERSION Built on `date -u`" > $C_LOG echo "Using gcc version: `gcc -dumpversion`" >> $C_LOG - [ -d "$SOURCE_DIRECTORY" ] && - cd $SOURCE_DIRECTORY + [ -d "${SOURCE_DIRECTORY}" ] && + cd "${SOURCE_DIRECTORY}" invoke_build_dir invoke_gcc2 @@ -109,11 +109,39 @@ message "$SPELL $VERSION" persistent_load && - if [ -x $SCRIPT_DIRECTORY/BUILD ]; then - . $SCRIPT_DIRECTORY/BUILD + if [ "${BI_ARCH}" = "yes" -a "${BI_ARCH_SPELL}" = "yes" ]; then + message "bi-arch compilation activated: ./configure & make" && + ( + export HOST="${SUBHOST}" && + export CFLAGS="${SUBCFLAGS}" && + export CXXFLAGS="${SUBCXXFLAGS}" && + export LDFLAGS="${SUBLDFLAGS}" && + export LIB="${SUBLIB}" && + + NEWDIR="${SOURCE_DIRECTORY}-${HOST}" && + + mk_source_dir "${NEWDIR}" && + (cd "${SOURCE_DIRECTORY}" && tar cfl - .) \ + | ( cd "${NEWDIR}" && tar xfp -) && + export SOURCE_DIRECTORY="${NEWDIR}" && + + cd "${SOURCE_DIRECTORY}" && + if [ -x "${SCRIPT_DIRECTORY}/BUILD" ]; then + . "${SCRIPT_DIRECTORY}/BUILD" + else + default_build + fi + + ) + fi && + + export LIB="${LIB}" && + if [ -x "${SCRIPT_DIRECTORY}/BUILD" ]; then + . "${SCRIPT_DIRECTORY}/BUILD" else default_build fi && + persistent_save if [ "$?" != 0 ]; then @@ -154,11 +182,33 @@ invoke_installwatch persistent_load && - if [ -x $SCRIPT_DIRECTORY/INSTALL ]; then - . $SCRIPT_DIRECTORY/INSTALL + if [ "${BI_ARCH}" = "yes" -a "${BI_ARCH_SPELL}" = "yes" ]; then + message "bi-arch compilation activated: make install" && + ( + export HOST="${SUBHOST}" && + export CFLAGS="${SUBCFLAGS}" && + export CXXFLAGS="${SUBCXXFLAGS}" && + export LDFLAGS="${SUBLDFLAGS}" && + export LIB="${SUBLIB}" && + export SOURCE_DIRECTORY="${SOURCE_DIRECTORY}-${HOST}" && + + cd "${SOURCE_DIRECTORY}" && + if [ -x "${SCRIPT_DIRECTORY}/INSTALL" ]; then + . "${SCRIPT_DIRECTORY}/INSTALL" + else + default_install + fi + + ) + fi && + + export LIB="${LIB}" && + if [ -x "${SCRIPT_DIRECTORY}/INSTALL" ]; then + . "${SCRIPT_DIRECTORY}/INSTALL" else default_install fi && + persistent_save && install_xinetd && install_initd @@ -238,13 +288,14 @@ #If these switches are used, they stop distcc and ccache from working # We could write wrappers for all of the possible binaries [[ $CROSS_INSTALL == on ]] && OPTS="$OPTS --host=${HOST} --build=${BUILD}" - - ./configure --prefix=${INSTALL_ROOT}/usr \ - --sysconfdir=${INSTALL_ROOT}/etc \ - --localstatedir=${INSTALL_ROOT}/var \ - --mandir=${INSTALL_ROOT}/usr/share/man \ - --infodir=${INSTALL_ROOT}/usr/share/info \ - $OPTS && + + ./configure --prefix="${INSTALL_ROOT}/usr" \ + --sysconfdir="${INSTALL_ROOT}/etc" \ + --libdir="${INSTALL_ROOT}/usr/${LIB}" \ + --localstatedir="${INSTALL_ROOT}/var" \ + --mandir="${INSTALL_ROOT}/usr/share/man" \ + --infodir="${INSTALL_ROOT}/usr/share/info" \ + $OPTS && make } diff -urN sorcery.ori/var/lib/sorcery/modules/build_api/common sorcery/var/lib/sorcery/modules/build_api/common --- sorcery.ori/var/lib/sorcery/modules/build_api/common 2004-11-13 21:06:14.000000000 +0000 +++ sorcery/var/lib/sorcery/modules/build_api/common 2005-02-16 15:08:04.187415464 +0000 @@ -221,7 +221,10 @@ report_install - rm_source_dir + if [ "${BI_ARCH}" = "yes" -a "${BI_ARCH_SPELL}" = "yes" ]; then + rm_source_dir "${SOURCE_DIRECTORY}-${SUBHOST}" + fi + rm_source_dir "${SOURCE_DIRECTORY}" rm -f $IW_LOG $TMP_LOG $CASTING $C_LOG } @@ -252,6 +255,12 @@ INSTALLWATCHFILE="" rm -f $IW_LOG $TMP_LOG $CASTING $C_LOG - [[ $CLEAN_SOURCE == on ]] && rm_source_dir + if [ "${CLEAN_SOURCE}" = "on" ]; then + if [ "${BI_ARCH}" = "yes" -a "${BI_ARCH_SPELL}" = "yes" ]; then + rm_source_dir "${SOURCE_DIRECTORY}-${SUBHOST}" + fi + rm_source_dir "${SOURCE_DIRECTORY}" + fi + CAST_EXIT_STATUS=1 } diff -urN sorcery.ori/var/lib/sorcery/modules/libsorcery sorcery/var/lib/sorcery/modules/libsorcery --- sorcery.ori/var/lib/sorcery/modules/libsorcery 2005-02-16 15:07:07.937966000 +0000 +++ sorcery/var/lib/sorcery/modules/libsorcery 2005-02-16 15:07:42.704681336 +0000 @@ -193,6 +193,12 @@ OLD_LIBS=$SOURCE_DIRECTORY/old.libraries mkdir -p $OLD_LIBS + # create another directory on bi-arch + if [ "${BI_ARCH}" = "yes" ]; then + OLD_SUBLIBS="${SOURCE_DIRECTORY}/old.libraries.${SUBLIB}" && + mkdir -p "${OLD_SUBLIBS}" + fi + SAVED=$OLD_LIBS/$SPELL.saved.libraries lock_file $SAVED rm -rf $SAVED @@ -200,36 +206,39 @@ OLD_VERSION=`installed_version $SPELL` OLD_LOG=$INSTALL_LOGS/$SPELL-$OLD_VERSION - grep "^/lib/\|^/usr/lib" $OLD_LOG | + grep "^/${LIB}/\|^/usr/${LIB}/" $OLD_LOG | while read LINE; do if [ -f $LINE ] && file -bL $LINE | grep -q "shared object" then - if [ -h $LINE ]; then - DEST=$( basename $( ls -la "$LINE" | - cut -d '>' -f2 | - cut -c 2- - ) - ) - ln -sf $DEST $OLD_LIBS/`basename $LINE` - else - cp $LINE $OLD_LIBS - fi - echo $OLD_LIBS/`basename $LINE` >> $SAVED + cp -a "${LINE}" "${OLD_LIBS}" + echo "${LINE} -> ${OLD_LIBS}" >> $SAVED fi + done + # save other libraries on bi-arch + if [ "${BI_ARCH}" = "yes" ]; then + grep "^/${SUBLIB}/\|^/usr/${SUBLIB}/" $OLD_LOG | + while read LINE; do + if [ -f $LINE ] && + file -bL $LINE | + grep -q "shared object" + then + cp -a "${LINE}" "${OLD_SUBLIBS}" + echo "${LINE} -> ${OLD_SUBLIBS}" >> $SAVED + fi done + fi - ldconfig $OLD_LIBS - unlock_file $SAVED - - if [ -z "$LD_LIBRARY_PATH" ] - then export LD_LIBRARY_PATH="$OLD_LIBS" - else export LD_LIBRARY_PATH="$OLD_LIBS:$LD_LIBRARY_PATH" + if [ "${BI_ARCH}" = "yes" ]; then + ldconfig "${OLD_LIBS}" "${OLD_SUBLIBS}" + else + ldconfig "${OLD_LIBS}" fi + unlock_file $SAVED # get the named of the dynamic loader with a well know dynamic binary : /bin/sh # on most platform it is : /lib/ld-linux.so.2, but it can be @@ -542,7 +551,15 @@ ## combreloc ## #--------------------------------------------------------------------- -function optimize() { +function optimize_arch() { + + if [ $# -ne 1 ]; then + echo "usage: optimize_arch ARCHITECTURE"; + exit 1; + fi + + local ARCHITECTURE="$1"; + debug "libsorcery" "In optimize(), ARCHITECTURE='${ARCHITECTURE}'" debug "libsorcery" "TARGET='${TARGET}'" debug "libsorcery" "OPTIMIZATIONS='${OPTIMIZATIONS}'" @@ -612,6 +629,36 @@ } +function optimize() +{ + optimize_arch "${ARCHITECTURE}" + + if [ "${BI_ARCH}" = "yes" ]; then +# check that extra variables are defined + if [ -z "${LIB}" ]; then + echo "warning: LIB is undefined for ${ARCHITECTURE}" + fi + if [ -z "${SUBARCH}" ]; then + echo "warning: SUBARCH is undefined for ${ARCHITECTURE}" + fi + if [ -z "${SUBLIB}" ]; then + echo "warning: SUBLIB is undefined for ${ARCHITECTURE}" + fi + optimize_arch "${SUBARCH}" + + export SUBCFLAGS="${CFLAGS}" + export SUBCXXFLAGS="${CXXFLAGS}" + export SUBLDFLAGS="${LDFLAGS}" + export SUBHOST="${HOST}" + + optimize_arch "${ARCHITECTURE}" + fi + +# if LIB is undefined, it defaults to /lib. This is the normal case on +# non bi-arch machines. + LIB="${LIB:-lib}" +} + #--------------------------------------------------------------------- ## @Stdout install queue diff -urN sorcery.ori/var/lib/sorcery/modules/libtrack sorcery/var/lib/sorcery/modules/libtrack --- sorcery.ori/var/lib/sorcery/modules/libtrack 2005-02-12 04:20:56.000000000 +0000 +++ sorcery/var/lib/sorcery/modules/libtrack 2005-02-16 15:08:09.442616552 +0000 @@ -51,7 +51,7 @@ if [ -e /usr/lib/installwatch.so ]; then export INSTALLWATCHFILE=$IW_LOG - export LD_PRELOAD=/usr/lib/installwatch.so + export LD_PRELOAD=installwatch.so fi } diff -urN sorcery.ori/var/lib/sorcery/modules/url_handlers/url_cvs sorcery/var/lib/sorcery/modules/url_handlers/url_cvs --- sorcery.ori/var/lib/sorcery/modules/url_handlers/url_cvs 2004-11-13 21:06:18.000000000 +0000 +++ sorcery/var/lib/sorcery/modules/url_handlers/url_cvs 2005-02-16 15:08:09.442616552 +0000 @@ -122,6 +122,8 @@ sed "s/\.tgz$//" | sed "s/\.tar\.bz2$//"` + if [ -z "${S_FILE}" ]; then S_FILE="${CVS_MODULE}"; fi + if [ -f $SOURCE_CACHE/$S_FILE.tar.bz2 ]; then message "${MESSAGE_COLOR}Previous source found. Extracting package $S_FILE.tar.bz2...${DEFAULT_COLOR}" tar --bzip2 -xf $SOURCE_CACHE/$S_FILE.tar.bz2