Generation of release installer for arm-linux Generated on gcc123.bak.milne.osuosl.org 'uname -a' output: Linux gcc123.bak.milne.osuosl.org 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux 2020-06-04 Cross configuration detected Generating binutils cross-install for arm-linux Ending generation binutils cross-install for arm-linux, res=0 Successfully generated files: -rw-r--r-- 1 muller muller 79063040 Jun 4 07:19 ./fpc-3.2.0-arm-linux.cross.x86_64-linux.tar Generated with locally modificated files: Locally modified files: M install/makepack M install/install.sh Index: install/makepack =================================================================== --- install/makepack (revision 1513) +++ install/makepack (working copy) @@ -4,8 +4,10 @@ # Copyright 1996-2004 Michael Van Canneyt and Peter Vreman # -set -e +# set -e +# disabled as it suppresses the error explanations + # Set this to "yes" if you want to force making the documentation. # if it is not equal to yes, the documentation is assumed present in a file doc-pdf.tar.gz MAKEDOCS=no @@ -64,10 +66,11 @@ if [ "`which gtar`" != "" ]; then TAR=`which gtar` fi - ;; + ;; *openbsd*) MAKE=gmake EXTRAOPT+=" -Fl/usr/local/lib" ;; + esac if [ $# -ne 0 ]; then @@ -82,9 +85,17 @@ TARGETOS=$SOURCEOS fi +case "$TARGETOS" in + linux) + if [ "$TARGETCPU" == "i386" ] ; then + EXTRAOPT+=" -Fl/lib32 -Fl/usr/lib32" + fi + ;; +esac # Set this to "no" if you want don't want to check for libgdb.a # Retrieve GDBMI_DEFAULT_OS_LIST from Makefile.fpc GDBMI_DEFAULT_OS_LIST=`grep '^GDBMI_DEFAULT_OS_LIST *=' Makefile.fpc | sed 's+[^=]*= *\(.*\)+\1+'` +eval LIMIT83fs="`sed -n "s:LIMIT83fs *= *::p" Makefile `" # Use of GDBMI for text mode IDE, starting with version 3.1.1 if [ "X${VERSION#3.0.}" == "X${VERSION}" ] ; then @@ -115,6 +126,12 @@ FULLTARGET=$TARGETCPU-$TARGETOS FULLSOURCE=$SOURCECPU-$SOURCEOS +if [ "${LIMIT83fs/$TARGETOS/}" != "${LIMIT83fs}" ] ; then + FULLTARGET=$TARGETOS + SHORTNAME=1 +else + SHORTNAME=0 +fi echo "FPC Source: $FULLSOURCE" echo "FPC Target: $FULLTARGET" @@ -122,20 +139,14 @@ # Cross building # - add prefix # - no IDE -if [ "$FULLTARGET" != "$FULLSOURCE" ]; then +if [[ ("$FULLTARGET" != "$FULLSOURCE") && ( -z "$BUILDFULLNATIVE" ) ]]; then CROSS="cross" CROSSPREFIX=$FULLTARGET- - IDE= + CROSSSUFFIX=$FULLSOURCE else CROSS= CROSSPREFIX= - # Starting with version 3.1.1, the IDE is not a separate part anymore, but part of utils - if [ "X${VERSION#3.0.}" != "X${VERSION}" ] ; then - # Version 3.0.x, add the IDE as separate part - export IDE=ide - else - export IDE= - fi + CROSSSUFFIX=$FULLTARGET fi @@ -202,11 +213,17 @@ fi # check existence of binutils if cross packing -if [ ! "$CROSS" = "" ]; then - if [ ! -f binutils-${CROSSPREFIX}$FULLSOURCE.tar.gz ]; then - echo "No cross binutils available: binutils-${CROSSPREFIX}$FULLSOURCE.tar.gz missing." +# jvm uses java, and android needs a separate ndk installation +# and i8086 does not use GNU binutils, but internal assmelber and linker +if [[ ( -n "$CROSS" ) && ( "$TARGETCPU" != "jvm" ) && ( "$TARGETCPU" != "i8086" ) && ( "$TARGETOS" != "android" ) ]]; then + if [ -f binutils-${CROSSPREFIX}${FULLSOURCE}.tar.gz ]; then + ADD_CROSS_BINUTILS=1 + else + echo "No cross binutils available: binutils-${CROSSPREFIX}${FULLSOURCE}.tar.gz missing." exit 1 fi +else + ADD_CROSS_BINUTILS=0 fi if [ -n "${FPCCPUOPT:-}" ] ; then @@ -216,12 +233,14 @@ fi # Build everything using the makefiles -echo "Starting ${MAKE} distclean CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS FPC=$FPC" -${MAKE} distclean CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS FPC=$FPC -echo "Starting ${MAKE} ${CROSS}zipinstall CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS OPT="${EXTRAOPT}" FPC_VERSION=$VERSION FPC=$FPC $MAKE_EXTRA" -${MAKE} ${CROSS}zipinstall CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS OPT="${EXTRAOPT}" FPC_VERSION=$VERSION FPC=$FPC $MAKE_EXTRA +zipinstall_log=`pwd`/${CROSS}zipinstall-$TARGETCPU-$TARGETOS.log + +echo "Starting ${MAKE} distclean CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS" +${MAKE} distclean CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS +echo "Starting ${MAKE} ${CROSS}zipinstall CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS OPT=\"${EXTRAOPT}\" FPC_VERSION=$VERSION $MAKE_EXTRA > $zipinstall_log 2>&1" +${MAKE} ${CROSS}zipinstall CPU_TARGET=$TARGETCPU OS_TARGET=$TARGETOS CROSSOPT="${EXTRAOPT}" FPC_VERSION=$VERSION $MAKE_EXTRA > $zipinstall_log 2>&1 if [ $? != 0 ]; then - echo "Failed to make distribution archive." + echo "Failed to generate distribution archive, log file is $zipinstall_log" exit 1 fi @@ -238,13 +257,30 @@ chmod 644 readme.txt # binary.*.tar -BINARYTAR=${CROSSPREFIX}binary.$FULLSOURCE.tar +if [ -n "${CROSSSUFFIX}" ] ; then + BINARYTAR=${CROSSPREFIX}binary.${CROSSSUFFIX}.tar +else + BINARYTAR=${CROSSPREFIX}binary.tar +fi echo "Creating $BINARYTAR" -BINPACKAGES="base $IDE units utils" +BINPACKAGES="${FULLTARGET}-base units-*.${FULLTARGET}" +if [ -z "${CROSS}" ]; then + BINPACKAGES+=" utils-*.${FULLTARGET}" +fi + BINFILES= for p in $BINPACKAGES; do - BINFILES="$BINFILES ${CROSSPREFIX}$p*.$FULLSOURCE.tar.gz" + list=`ls -1 $p*.tar.gz 2> /dev/null` + if [ -n "$list" ] ; then + BINFILES="$BINFILES $p*.tar.gz" + fi done +echo "BINFILES=\"$BINFILES\"" +if [ -z "$BINFILES" ] ; then + echo "Failed to find any package $BINPACKAGES" + exit 1 +fi +echo "${TAR} cf $BINARYTAR $BINFILES" ${TAR} cf $BINARYTAR $BINFILES if [ $? != 0 ]; then echo "Failed to create $BINARYTAR" @@ -259,11 +295,19 @@ else # cross packing # add cross binutils - RELFILES="$RELFILES binutils-${CROSSPREFIX}$FULLSOURCE.tar.gz" + if [ $ADD_CROSS_BINUTILS -eq 1 ] ; then + RELFILES="$RELFILES binutils-${CROSSPREFIX}$FULLSOURCE.tar.gz" + fi fi # Files to be added to the .tar -DIRNAME=${CROSSPREFIX}fpc-$FULLVERSION.$FULLSOURCE +if [ "$FULLTARGET" == "$FULLSOURCE" ] ; then + DIRNAME=fpc-${FULLVERSION}-${FULLTARGET} +elif [ "$BUILDFULLNATIVE" == "1" ] ; then + DIRNAME=fpc-${FULLVERSION}-${FULLTARGET}.built-on-${FULLSOURCE} +else + DIRNAME=fpc-${FULLVERSION}-${FULLTARGET}.cross.${FULLSOURCE} +fi TARNAME=${DIRNAME}.tar echo "Creating $TARNAME" # Erase directory if it exists