diff options
-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 |