]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - src-release.sh
Adjust gdb_continue_to_end for Windows
[thirdparty/binutils-gdb.git] / src-release.sh
index dad16492bac46899bcc061e67121a4ff62475656..169135856a250fb7f98d42f9b9a154e3d37cf909 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
-#   Copyright (C) 1990-2014 Free Software Foundation
+#   Copyright (C) 1990-2020 Free Software Foundation
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,11 +24,13 @@ set -e
 
 BZIPPROG=bzip2
 GZIPPROG=gzip
+LZIPPROG=lzip
 XZPROG=xz
-MD5PROG=md5sum
+SHA256PROG=sha256sum
 MAKE=make
 CC=gcc
 CXX=g++
+release_date=
 
 # Default to avoid splitting info files by setting the threshold high.
 MAKEINFOFLAGS=--split-size=5000000
@@ -36,16 +38,15 @@ MAKEINFOFLAGS=--split-size=5000000
 #
 # Support for building net releases
 
-# Files in devo used in any net release.
-DEVO_SUPPORT="README Makefile.in configure configure.ac \
-       config.guess config.sub config move-if-change \
-       COPYING COPYING.LIB install-sh config-ml.in symlink-tree \
-       mkinstalldirs ltmain.sh missing ylwrap \
-       libtool.m4 ltsugar.m4 ltversion.m4 ltoptions.m4 \
-       Makefile.def Makefile.tpl src-release config.rpath \
-       ChangeLog MAINTAINERS README-maintainer-mode \
-       lt~obsolete.m4 ltgcc.m4 depcomp mkdep compile \
-       COPYING3 COPYING3.LIB"
+# Files in root used in any net release.
+DEVO_SUPPORT="ar-lib ChangeLog compile config config-ml.in config.guess \
+       config.rpath config.sub configure configure.ac COPYING COPYING.LIB \
+       COPYING3 COPYING3.LIB depcomp install-sh libtool.m4 ltgcc.m4 \
+       ltmain.sh ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4 \
+       MAINTAINERS Makefile.def Makefile.in Makefile.tpl missing mkdep \
+       mkinstalldirs move-if-change README README-maintainer-mode \
+       SECURITY.txt src-release.sh symlink-tree test-driver ylwrap \
+        multilib.am"
 
 # Files in devo/etc used in any net release.
 ETC_SUPPORT="Makefile.in configure configure.in standards.texi \
@@ -60,10 +61,14 @@ getver()
        bfd/configure --version | sed -n -e '1s,.* ,,p'
     elif test -f $tool/common/create-version.sh; then
        $tool/common/create-version.sh $tool 'dummy-host' 'dummy-target' VER.tmp
-       cat VER.tmp | grep 'version\[\]' | sed 's/.*"\([^"]*\)".*/\1/' | sed 's/-cvs$//'
+       cat VER.tmp | grep 'version\[\]' | sed 's/.*"\([^"]*\)".*/\1/' | sed 's/-git$//'
+        rm -f VER.tmp
+    elif test $tool = "gdb"; then
+       ./gdbsupport/create-version.sh $tool 'dummy-host' 'dummy-target' VER.tmp
+       cat VER.tmp | grep 'version\[\]' | sed 's/.*"\([^"]*\)".*/\1/' | sed 's/-git$//'
         rm -f VER.tmp
     elif test -f $tool/version.in; then
-       head -1 $tool/version.in
+       head -1 $tool/version.in
     else
        echo VERSION
     fi
@@ -76,14 +81,28 @@ do_proto_toplev()
     ver=$2
     tool=$3
     support_files=$4
+
+    echo "==> Cleaning sources."
+    find \( -name "*.orig" -o  -name "*.rej" -o -name "*~" -o -name ".#*" -o -name "*~$bkpat" \) -exec rm {} \;
+    
     echo "==> Making $package-$ver/"
     # Take out texinfo from a few places.
     sed -e '/^all\.normal: /s/\all-texinfo //' \
        -e '/^  install-texinfo /d' \
        <Makefile.in >tmp
     mv -f tmp Makefile.in
-    #
-    ./configure --target=i386-pc-linux-gnu
+    # configure.  --enable-gold is needed to ensure .c/.h from .y are
+    # built in the gold dir.  The disables speed the build a little.
+    enables=
+    disables=
+    for dir in binutils gas gdb gold gprof gprofng libsframe ld libctf libdecnumber readline sim; do
+       case " $tool $support_files " in
+           *" $dir "*) enables="$enables --enable-$dir" ;;
+           *) disables="$disables --disable-$dir" ;;
+       esac
+    done
+    echo "==> configure --target=i386-pc-linux-gnu $disables $enables"
+    ./configure --target=i386-pc-linux-gnu $disables $enables
     $MAKE configure-host configure-target \
        ALL_GCC="" ALL_GCC_C="" ALL_GCC_CXX="" \
        CC_FOR_TARGET="$CC" CXX_FOR_TARGET="$CXX"
@@ -109,57 +128,55 @@ do_proto_toplev()
            fi
        else
            if (echo x$d | grep / >/dev/null); then
-             mkdir -p proto-toplev/`dirname $d`
-             x=`dirname $d`
-             ln -s ../`echo $x/ | sed -e 's,[^/]*/,../,g'`$d proto-toplev/$d
+               mkdir -p proto-toplev/`dirname $d`
+               x=`dirname $d`
+               ln -s ../`echo $x/ | sed -e 's,[^/]*/,../,g'`$d proto-toplev/$d
            else
-             ln -s ../$d proto-toplev/$d
+               ln -s ../$d proto-toplev/$d
            fi
-         fi
-       done
-       (cd etc; $MAKE MAKEINFOFLAGS="$MAKEINFOFLAGS" info)
-       $MAKE distclean
-       mkdir proto-toplev/etc
-       (cd proto-toplev/etc;
-           for i in $ETC_SUPPORT; do
-               ln -s ../../etc/$i .
-               done)
-       #
-       # Take out texinfo from configurable dirs
-       rm proto-toplev/configure.ac
-       sed -e '/^host_tools=/s/texinfo //' \
-           <configure.ac >proto-toplev/configure.ac
-       #
-       mkdir proto-toplev/texinfo
-       ln -s ../../texinfo/texinfo.tex proto-toplev/texinfo/
-       if test -r texinfo/util/tex3patch ; then
-           mkdir proto-toplev/texinfo/util && \
-               ln -s ../../../texinfo/util/tex3patch proto-toplev/texinfo/util
-       else
-           true
        fi
-       chmod -R og=u . || chmod og=u `find . -print`
-       #
-       # Create .gmo files from .po files.
-       for f in `find . -name '*.po' -type f -print`; do
-           msgfmt -o `echo $f | sed -e 's/\.po$/.gmo/'` $f
-       done
-       #
-       rm -f $package-$ver
-       ln -s proto-toplev $package-$ver
+    done
+    (cd etc; $MAKE MAKEINFOFLAGS="$MAKEINFOFLAGS" info)
+    $MAKE distclean
+    mkdir proto-toplev/etc
+    (cd proto-toplev/etc;
+       for i in $ETC_SUPPORT; do
+           ln -s ../../etc/$i .
+       done)
+    #
+    # Take out texinfo from configurable dirs
+    rm proto-toplev/configure.ac
+    sed -e '/^host_tools=/s/texinfo //' \
+       <configure.ac >proto-toplev/configure.ac
+    #
+    mkdir proto-toplev/texinfo
+    ln -s ../../texinfo/texinfo.tex proto-toplev/texinfo/
+    if test -r texinfo/util/tex3patch ; then
+       mkdir proto-toplev/texinfo/util && \
+           ln -s ../../../texinfo/util/tex3patch proto-toplev/texinfo/util
+    fi
+    chmod -R og=u . || chmod og=u `find . -print`
+    #
+    # Create .gmo files from .po files.
+    for f in `find . -name '*.po' -type f -print`; do
+       msgfmt -o `echo $f | sed -e 's/\.po$/.gmo/'` $f
+    done
+    #
+    rm -f $package-$ver
+    ln -s proto-toplev $package-$ver
 }
 
 CVS_NAMES='-name CVS -o -name .cvsignore'
 
-# Add an md5sum to the built tarball
-do_md5sum()
+# Add a sha256sum to the built tarball
+do_sha256sum()
 {
-    echo "==> Adding md5 checksum to top-level directory"
+    echo "==> Adding sha256 checksum to top-level directory"
     (cd proto-toplev && find * -follow \( $CVS_NAMES \) -prune \
        -o -type f -print \
-       | xargs $MD5PROG > ../md5.new)
-    rm -f proto-toplev/md5.sum
-    mv md5.new proto-toplev/md5.sum
+       | xargs $SHA256PROG > ../sha256.new)
+    rm -f proto-toplev/sha256.sum
+    mv sha256.new proto-toplev/sha256.sum
 }
 
 # Build the release tarball
@@ -169,9 +186,17 @@ do_tar()
     ver=$2
     echo "==> Making $package-$ver.tar"
     rm -f $package-$ver.tar
-    find $package-$ver -follow \( $CVS_NAMES \) -prune \
-       -o -type f -print \
-       | tar cTfh - $package-$ver.tar
+    if test x$release_date == "x" ; then
+       find $package-$ver -follow \( $CVS_NAMES \) -prune -o -type f -print \
+          | tar cTfh - $package-$ver.tar
+    else
+       # Attempt to create a consistent, reproducible tarball using the
+       # specified date.
+       find $package-$ver -follow \( $CVS_NAMES \) -prune -o -type f -print \
+           | LC_ALL=C sort \
+           | tar cTfh - $package-$ver.tar \
+                 --mtime=$release_date --group=0 --owner=0
+    fi
 }
 
 # Compress the output with bzip2
@@ -194,6 +219,16 @@ do_gz()
     $GZIPPROG -k -v -9 $package-$ver.tar
 }
 
+# Compress the output with lzip
+do_lz()
+{
+    package=$1
+    ver=$2
+    echo "==> Lzipping $package-$ver.tar.lz"
+    rm -f $package-$ver.tar.lz
+    $LZIPPROG -k -v -9 $package-$ver.tar
+}
+
 # Compress the output with xz
 do_xz()
 {
@@ -216,6 +251,8 @@ do_compress()
                do_bz2 $package $ver;;
            gz)
                do_gz $package $ver;;
+           lz)
+               do_lz $package $ver;;
            xz)
                do_xz $package $ver;;
            *)
@@ -244,9 +281,10 @@ tar_compress()
     tool=$2
     support_files=$3
     compressors=$4
-    ver=$(getver $tool)
+    verdir=${5:-$tool}
+    ver=$(getver $verdir)
     do_proto_toplev $package $ver $tool "$support_files"
-    do_md5sum
+    do_sha256sum
     do_tar $package $ver
     do_compress $package $ver "$compressors"
 }
@@ -260,14 +298,14 @@ gdb_tar_compress()
     compressors=$4
     ver=$(getver $tool)
     do_proto_toplev $package $ver $tool "$support_files"
-    do_md5sum
+    do_sha256sum
     do_djunpack $package $ver
     do_tar $package $ver
     do_compress $package $ver "$compressors"
 }
 
 # The FSF "binutils" release includes gprof and ld.
-BINUTILS_SUPPORT_DIRS="bfd gas include libiberty opcodes ld elfcpp gold gprof intl setup.com makefile.vms cpu"
+BINUTILS_SUPPORT_DIRS="libsframe bfd gas include libiberty libctf opcodes ld elfcpp gold gprof gprofng setup.com makefile.vms cpu zlib"
 binutils_release()
 {
     compressors=$1
@@ -276,7 +314,7 @@ binutils_release()
     tar_compress $package $tool "$BINUTILS_SUPPORT_DIRS" "$compressors"
 }
 
-GAS_SUPPORT_DIRS="bfd include libiberty opcodes intl setup.com makefile.vms"
+GAS_SUPPORT_DIRS="bfd include libiberty opcodes setup.com makefile.vms zlib"
 gas_release()
 {
     compressors=$1
@@ -285,7 +323,7 @@ gas_release()
     tar_compress $package $tool "$GAS_SUPPORT_DIRS" "$compressors"
 }
 
-GDB_SUPPORT_DIRS="bfd include libiberty opcodes readline sim intl libdecnumber cpu"
+GDB_SUPPORT_DIRS="libsframe bfd include libiberty libctf opcodes readline sim libdecnumber cpu zlib contrib gnulib gdbsupport gdbserver libbacktrace"
 gdb_release()
 {
     compressors=$1
@@ -295,13 +333,13 @@ gdb_release()
 }
 
 # Corresponding to the CVS "sim" module.
-SIM_SUPPORT_DIRS="bfd opcodes libiberty include intl gdb/version.in makefile.vms"
+SIM_SUPPORT_DIRS="libsframe bfd opcodes libiberty libctf/swap.h include gdb/version.in gdb/common/create-version.sh makefile.vms zlib gnulib"
 sim_release()
 {
     compressors=$1
     package=sim
     tool=sim
-    tar_compress $package $tool "$SIM_SUPPORT_DIRS" "$compressors"
+    tar_compress $package $tool "$SIM_SUPPORT_DIRS" "$compressors" gdb
 }
 
 usage()
@@ -310,7 +348,9 @@ usage()
     echo "options:"
     echo "  -b: Compress with bzip2"
     echo "  -g: Compress with gzip"
+    echo "  -l: Compress with lzip"
     echo "  -x: Compress with xz"
+    echo "  -r <date>: Create a reproducible tarball using <date> as the mtime"
     exit 1
 }
 
@@ -334,12 +374,16 @@ build_release()
 
 compressors=""
 
-while getopts ":gbx" opt; do
+while getopts ":bglr:x" opt; do
     case $opt in
        b)
            compressors="$compressors bz2";;
        g)
            compressors="$compressors gz";;
+       l)
+           compressors="$compressors lz";;
+       r)
+           release_date=$OPTARG;;
        x)
            compressors="$compressors xz";;
        \?)