# Script to run through package checklist # (ideally a part of CI for new PRs) while getopts :p: OPT; do case $OPT in p|+p) PACKAGE=$OPTARG ;; *) echo "usage: ${0##*/} [+-p ARG} [--] ARGS..." exit 2 esac done shift $(( OPTIND - 1 )) OPTIND=1 if [ ! $PACKAGE ] then echo "Specify a package to test with -p" exit 1 fi ./bootstrap ./configure make -j4 DEVGUIX="./pre-inst-env guix" # 1. Check the cryptographic signature # (use the hash and link maintainers provide in the build) # 2. Take time to edit synopsis # 3. Lint $DEVGUIX lint $PACKAGE # 4. Style $DEVGUIX style $PACKAGE # 5. Build $DEVGUIX build $PACKAGE # 6. Build dependents $DEVGUIX build --dependents=1 $PACKAGE # 7. Check package does not install bundled copies of software # 8. Check size (avoid texlive) $DEVGUIX size $PACKAGE # 9. Check dependent packages are not affected $DEVGUIX refresh --list-dependent $PACKAGE # 10. Check if build is deterministic $DEVGUIX build -q --rounds=2 --check $PACKAGE if [ $? ] then echo "Build check succeeded!" else echo "Build check failed. $PACKAGE may not be deterministic." fi # 11. Gender neutral wording. # 12. Make sure your patch only contains related changes. # 13. Style (repeated) # 14. Use mirrors of github repos: don't use GitHub archives. # 15. Check if Guix builds (see building from Git) # skipping. done at the start. # 16. Run a guix pull # -q to make sure local channel settings are ignored $DEVGUIX pull -q --url=$PWD --profile=/tmp/guix.temp --disable-authentication