diff options
author | Pedram Ashofteh Ardakani <pedramardakani@pm.me> | 2022-04-18 00:16:26 +0430 |
---|---|---|
committer | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2022-04-20 10:21:07 +0200 |
commit | 597d1df2aa8131ef39fb32ba339798209e4ba313 (patch) | |
tree | 59232af2f568c7a86b1abcadc76efa04d02106bb | |
parent | 7726397841af9d676b5115992bf4fc34ff8a0c81 (diff) |
Updated Git, Coreutils and Emacs, new script to prepare tarballs
Until now, one had to follow the instructions from [1] to prepare a
standard software tarball before merging with the low-level
tarballs-software repository [2]. The script only worked for '.tar.gz'
suffix and was only available as a comment on Savannah (in [1]).
With this commit, the script has been imported into Maneage as
'reproduce/software/shell/tarball-prepare.sh' to simplify future software
updates. It work with all supported '.tar.*' suffixes (of the upstream
tarball repository) and will convert the tarballs to Maneage's standard
format. Also, this script has a minimal argument parser and can skip the
tarballs that are already unpacked, allowing faster tests.
This script was used to update the versions of:
Coreutiles 9.0 --> 9.1
Git 2.34 --> 2.36
Emacs 27.2 --> 28.1
The main motive behind this update was Git which announced a vulnerability
issue [3] and suggested an update to the latest version as soon as
possible. More detail is described in this github blog [4], but in summary,
it was a security issue on multi-user systems that has been found and fixed
by Git developers. Since Maneage is often installed on such shared systems,
it was important to make this update. GNU Coreutils and GNU Emacs were also
updated because they are also commonly used.
The following improvements have also done with this commit:
- .gitignore: ignore emacs auto-save files (that end with a '#')
- README-hacking.md: In the checklist for updating the Maneage branch, the
no-longer-necessary '--decorate' option of Git was removed from the
command to check the general branch history.
[1] https://savannah.nongnu.org/task/?15699
[2] https://git.maneage.org/tarballs-software.git/
[3] https://lore.kernel.org/git/xmqqv8veb5i6.fsf@gitster.g/
[4] https://github.blog/2022-04-12-git-security-vulnerability-announced/
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README-hacking.md | 2 | ||||
-rw-r--r-- | reproduce/software/config/checksums.conf | 7 | ||||
-rw-r--r-- | reproduce/software/config/versions.conf | 7 | ||||
-rw-r--r-- | reproduce/software/make/basic.mk | 2 | ||||
-rwxr-xr-x | reproduce/software/shell/tarball-prepare.sh | 181 |
6 files changed, 192 insertions, 8 deletions
@@ -17,6 +17,7 @@ # without any warranty. *~ +*\# *.txt *.aux *.log diff --git a/README-hacking.md b/README-hacking.md index 24a3cea..b721d6d 100644 --- a/README-hacking.md +++ b/README-hacking.md @@ -1522,7 +1522,7 @@ for the benefit of others. # Have a look at the commits in the 'maneage' branch in relation # with your project. - $ git log --oneline --graph --decorate --all # General view of branches. + $ git log --oneline --graph --all # General view of branches. # Go to your 'main' branch and import all the updates into # 'main', don't worry about the printed outputs (in particular diff --git a/reproduce/software/config/checksums.conf b/reproduce/software/config/checksums.conf index d8b3a96..7450e6d 100644 --- a/reproduce/software/config/checksums.conf +++ b/reproduce/software/config/checksums.conf @@ -2,6 +2,7 @@ # # Copyright (C) 2018-2022 Mohammad Akhlaghi <mohammad@akhlaghi.org> # Copyright (C) 2019-2022 Raul Infante-Sainz <infantesainz@gmail.com> +# Copyright (C) 2022 Pedram Ashofteh Ardakani <pedramardakani@pm.me> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice and @@ -18,7 +19,7 @@ bash-checksum = 409843172032fbe7ef50004ddc30934e12d864e30935fa501dd8a2792c0c12c9 binutils-checksum = f3c10d8aeb50872278ece6ad31f7369bf12b2d09618812322b35e6750024b45f77fc32d498a9c579df3c152ce3da382f480281743eb5b53639aa287b7166aba3 bzip2-checksum = 929cb1b2d0db8a505e2bafe3ce2c893c8f132dd617c0110e86e19f116b570a85de3c8a635483b530456fc8f8b6698c8190d21313e47607f442807b10489ac86e cert-checksum = 25b689ebac01ebde136bcef1ef4aa18389fcc618375755001f153b37060cfb327fd6d6afac25d4ddfcf78fd6678fa00ce49ba688e725e4a4c657c37cba4ec3ca -coreutils-checksum = efdffdeec139e4a7e4033472197145d25400c4cbf6380cb63b18a748934021a977e613a75f018fff23bf506ebdb876b1d79166ba8d3b6077dd1c0a338ef5bff6 +coreutils-checksum = 887ca0ea9e6918c9e959033e625537335902a118af8384a050bbdfadf1c7fa30a92521dd4d9714055d869c1619c20f0f6bcecb89a99f22278a74668b393a5cf0 curl-checksum = af977f4ea4b096d3de8d116cfe4f8abbfe5dad487745b6fbc1b13c2669d2bcfdcafa44c9c4cf89c4fb413b3c0986d4e25ae107d461e6295bf469ae3cbc31bb67 dash-checksum = d8533e3fb29ab00369ee0e4f700a2e5ac2fc11a7c51d83fb93dbbe25d1e06b73718f6f583e368bd232edde41b03b53493657e81dc2e0ce439a9da8e1ed627923 diffutils-checksum = 597cd0a14087722b78469e2238fcee25e78108f53ca43fbff1194d87625b4c7498a205f68c7bb44fcd437b8d642bba263ac40170780aede006076b11956fd06e @@ -28,7 +29,7 @@ flock-checksum = f711815035e21b46572bf80e730a55822e5abf4cb29749e476ee6cf4d5027e9 gawk-checksum = 682fadd3630d51d13d19443a9a93d4cba1bd6802dd078f1366f17f39d3fa5800f47037b103d742be9254475fdc251d90626f95a2e04b5ace117cfaecebca2281 gcc-checksum = 7f9605b9527799f92b3251968f63e53bd0b74880952f0cbc58ade9b4eee60bac4990ad408c1a6067f7aa36225709061106f0d93bc581ec97711fc5ff6ae15127 gettext-checksum = f3083af79341bfdc849118333c1598812c12bc225d998181694648187088050160deb4777c252f72a7158e914c2967416489bc6167ef8505664497f2fb94ecbf -git-checksum = 4556c6e4ee5a2f583109c8b8811ca7bc66b1c717be4ffbdec77b6c9da49b2eb3a77fef538ee9a2dc599bfdb2baa0e436ca61f5601225cf80d16333a82ef79d51 +git-checksum = fe41fca911b3f276ac0832c059054c3f51fcc97862d23d47b5bc813a766ef31f431595553f62655360766427ae65debf09f6e2ded318bc8062de2410c359eb51 gmp-checksum = 2bec8840bceaeac542ce1f7870d5b971b631b055b49751ba4f78f98229d7eb9cd97c0a668f6d7cf81a53bf0b3d5d70e682af523f8f0eee0d7390727ff2bbb271 grep-checksum = e8c28da23fcef11825c54794b3eebffd0eaf84b7ebf5e187fd06b5d4aeff2af1ac097f0166151b3f11f332dc72abf6097188d578f549496f4c7c96ccf479a61e gzip-checksum = 48db13116543ffff39ce03a058e5ca279d93581b8aead3b857c41b0aa3028aa787d5bb21ee18d002565ba3e016fed60d55062b3fd91c41a9877f9f7febc6ae27 @@ -87,7 +88,7 @@ cdsclient-checksum = 24584eedeb84ab4666cbd2ed0b7264c92c63c9cf090595b75b01dd46f84 cfitsio-checksum = 51dc93aecadb08a402898e4c4bacf7a085a9799dda7678aa9e46d3096d51683a49bdb162f18c69b23cba47ffb78a35b11fc41a37f9b559af6da95589d3ad2e67 cmake-checksum = 351ee5d50d65c6048508c3982842e94e74a8eba066adfd348bb4c79f41a26613c0306ea1b49e96d8272ddae3b2680d74caebcd8391a3bf72d702f30f92c48fab eigen-checksum = 39c1944e0daca50bb01e929edc98e2bfc234accb30ca019dcccfc7b02db5cc81035592be219ae93cc3ec16fe0255e7e4d1f29ca2ad3dfee7e63546c47cb2f807 -emacs-checksum = b1febe6ddbb91983358e41ce5d9f700ed86bff7f30e1c1ced2ee0177272c8fcb12263d77f7fddba301dd9a41eb661e1d3b8e772a016d640a779f4f41c81f5841 +emacs-checksum = 91313dced8cd74f9e4a996eef42806aad00fb2576fc77b3694bb7b670624b6a1551ff49c2a3326dbeeba916e5732ca5975b5dc40b3b063f6e73a22839009abe9 expat-checksum = 526f2ec03978f853ff76a911b5a168f58a7eac83b8405536afe2a6acf4611ebcb96acbc5df809fd18e4edeb7ca5059a3ce56dcbd12cb33eecf742c6361d83d19 fftw-checksum = 28bd2f620399a415181027d30d7ea193aa487c7a277c9943d0051488908fd87e2731de0dfc3bebd22a6121d1deaa46037be8296a8a9cdb711f9fde4510c3d368 flex-checksum = f15c5a1efc78d3de36572ece8ec1694f368ecf13a01ac3851be142bd63e16e9e5c62d10ce9ac586aabcbed533a47d0d97f7c9f467b729d5efa3316c7788230e2 diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf index 575cdd6..2a27ddd 100644 --- a/reproduce/software/config/versions.conf +++ b/reproduce/software/config/versions.conf @@ -2,6 +2,7 @@ # # Copyright (C) 2018-2022 Mohammad Akhlaghi <mohammad@akhlaghi.org> # Copyright (C) 2019-2022 Raul Infante-Sainz <infantesainz@gmail.com> +# Copyright (C) 2022 Pedram Ashofteh Ardakani <pedramardakani@pm.me> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice and @@ -18,7 +19,7 @@ # CLASS:BASIC (important identifier for 'awk'; don't modify this line) bash-version = 5.1.8 binutils-version = 2.37 -coreutils-version = 9.0 +coreutils-version = 9.1 curl-version = 7.79.1 dash-version = 0.5.11.5 diffutils-version = 3.8 @@ -28,7 +29,7 @@ flock-version = 0.4.0 gawk-version = 5.1.0 gcc-version = 11.2.0 gettext-version = 0.21 -git-version = 2.34.0 +git-version = 2.36.0 gmp-version = 6.2.1 grep-version = 3.7 gzip-version = 1.11 @@ -105,7 +106,7 @@ cdsclient-version = 3.84 cfitsio-version = 4.0.0 cmake-version = 3.21.4 eigen-version = 3.4.0 -emacs-version = 27.2 +emacs-version = 28.1 expat-version = 2.4.1 fftw-version = 3.3.10 flex-version = 2.6.4 diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index 1c96b3f..5967a1d 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -60,7 +60,7 @@ ibidir = $(BDIR)/software/installed/version-info/proglib # Ultimate Makefile target. GNU Nano (a simple and very light-weight text # editor) is installed by default, it is recommended to have it in the # 'basic.mk', so Maneaged projects can be edited on any system (even when -# there is no command-line text editor is available). +# there is no command-line text editor available). targets-proglib = low-level-links \ gcc-$(gcc-version) \ nano-$(nano-version) diff --git a/reproduce/software/shell/tarball-prepare.sh b/reproduce/software/shell/tarball-prepare.sh new file mode 100755 index 0000000..ccc9318 --- /dev/null +++ b/reproduce/software/shell/tarball-prepare.sh @@ -0,0 +1,181 @@ +#!/bin/bash + +# Script to convert all files (tarballs in any format; just recognized +# by 'tar') within an 'odir' to a unified '.tar.lz' format. +# +# The inputs are assumed to be formatted with 'NAME_VERSION', and only for +# the names, we are currently assuming '.tar.*' (for the 'sed' +# command). Please modify/generalize accordingly. +# +# It will unpack the source in a certain empty directory with the +# 'tmpunpack' suffix, and rename the top directory to the requested format +# of NAME-VERSION also. So irrespective of the name of the top original +# tarball directory, the resulting tarball's top directory will have a name +# formatting of NAME-VERSION. +# +# Discussion: https://savannah.nongnu.org/task/?15699 +# +# Copyright (C) 2022 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2022 Pedram Ashofteh Ardakani <pedramardakani@pm.me> +# Released under GNU GPLv3+ + +# Abort the script in case of an error. +set -e + + + + + +# Default arguments +odir= +idir= +quiet= +basedir=$PWD + + +# The --help output +print_help() { + cat <<EOF +Usage: $0 [OPTIONS] + +Low-level script to create maneage-standard tarballs. + + -o, --output-dir Target directory to write the packed tarballs. + Current: $odir + + + -i, --input-dir Directory containing original tarballs. + Current: $idir + + -q, --quiet Suppress logging information. Only print the + final packed file and its sha512sum. + +Maneage URL: https://maneage.org + +Report bugs: https://savannah.nongnu.org/bugs/?group=reproduce +EOF +} + + + + +# Parse the arguments +while [ $# -gt 0 ] +do + case $1 in + -q|--quiet) quiet=1; shift;; + -h|--help|-'?') print_help; exit 0;; + -i|--input-dir) + # Remove the trailing '/' introduced by autocomplete + idir=$(echo "$2" | sed 's|/$||'); + shift; # past argument + shift;; # past value + -o|--output-dir) + # Remove the trailing '/' introduced by autocomplete + odir=$(echo "$2" | sed 's|/$||'); + shift; # past argument + shift;; # past value + *) echo "$0: unknown option '$1'"; exit 1;; + esac +done + + + + +# Extract the 'absolute path' to input and output directories. Working with +# relative path is a great source of confusion and unwanted side-effects +# like moving/removing files by accident. +if [ ! -d "$idir" ]; then + echo "$0: please pass the input directory (option --input-dir or -i)." + exit 1 +else + idir=$(realpath $idir) +fi + +if [ ! -d "$odir" ]; then + echo "$0: please pass the output directory (option --output-dir or -o)." + exit 1 +else + odir=$(realpath $odir) +fi + + + + + +# Unpack and pack all files in the '$idir' +# ---------------------------------------- +allfiles=$(ls $idir | sort) + +# Let user know number of tarballs if its not in quiet mode +if [ -z $quiet ]; then + nfiles=$(ls $idir | wc -l) + echo "Found $nfiles file(s) in '$idir/'" +fi + +# Process all files +for f in $allfiles; do + + # Seperate name and version number + name=$(echo $f | sed -e 's/.tar.*//' | \ + awk 'BEGIN { FS = "[-_ ]" } {print $1 "-" $2}') + + # Skip previously packed files + if [ -f $odir/$name.tar.lz ]; then + + # Print the info message if not in quiet mode + if [ -z $quiet ]; then + echo "$0: skipping '$odir/$name.tar.lz'" + fi + + # skip this file + continue + else + + # Print the info message if not in quiet mode + if [ -z $quiet ]; then + echo "$0: processing '$idir/$f'" + fi + fi + + # Create a temporary directory name + tmpdir=$odir/$name-tmpunpack + + # If the temporary directory exists, mkdir will throw an error. The + # developer needs to intervene manually to fix the issue. + mkdir $tmpdir + + + + + + # Move into the temporary directory + # --------------------------------- + # + # The default output directory for all the following commands: $tmpdir + cd $tmpdir + + # Unpack + tar -xf $idir/$f + + # Make sure the unpacked tarball is contained within a directory with + # the clean program name + if [ ! -d "$name" ]; then + mv * $name/ + fi + + # Pack with recommended options + tar -c -Hustar --owner=root --group=root \ + -f $name.tar $name/ + lzip -9 $name.tar + + # Move the compressed file from the temporary directory to the target + # output directory + mv $name.tar.lz $odir/ + + # Print the sha512sum along with the filename for a quick reference + echo $(sha512sum $odir/$name.tar.lz) + + # Clean up the temporary directory + rm -r $tmpdir +done |