From 5aad6a361da03f35c5f813166241588005d9de34 Mon Sep 17 00:00:00 2001 From: José Romildo Malaquias Date: Wed, 15 Apr 2020 11:34:21 -0300 Subject: common-updater: add update script to all-packages --- pkgs/common-updater/generic-updater.nix | 98 +++++++++++++++++++++++++++++++++ pkgs/common-updater/update-script.nix | 98 --------------------------------- 2 files changed, 98 insertions(+), 98 deletions(-) create mode 100644 pkgs/common-updater/generic-updater.nix delete mode 100644 pkgs/common-updater/update-script.nix (limited to 'pkgs/common-updater') diff --git a/pkgs/common-updater/generic-updater.nix b/pkgs/common-updater/generic-updater.nix new file mode 100644 index 00000000000..8e8153d9a33 --- /dev/null +++ b/pkgs/common-updater/generic-updater.nix @@ -0,0 +1,98 @@ +{ stdenv, writeScript, coreutils, gnugrep, gnused, common-updater-scripts, nix }: + +{ pname +, version +, attrPath ? pname +, versionLister +, rev-prefix ? "" +, odd-unstable ? true +, patchlevel-unstable ? true +}: + +let + # where to print git commands and debugging messages + fileForGitCommands = "update-git-commits.txt"; + + # shell script to update package + updateScript = writeScript "update-script.sh" '' + #! ${stdenv.shell} + set -o errexit + set -x + + pname="$1" + version="$2" + attr_path="$3" + version_lister="$4" + rev_prefix="$5" + odd_unstable="$6" + patchlevel_unstable="$7" + + # print header + echo "# $pname-$version" >> ${fileForGitCommands} + + function version_is_unstable() { + local tag="$1" + local enforce="$2" + if [ -n "$odd_unstable" -o -n "$enforce" ]; then + local minor=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.([0-9]+).*,\1,p') + if [ $((minor % 2)) -eq 1 ]; then + return 0 + fi + fi + if [ -n "$patchlevel_unstable" -o -n "$enforce" ]; then + local patchlevel=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.[0-9]+\.([0-9]+).*$,\1,p') + if ((patchlevel >= 90)); then + return 0 + fi + fi + return 1 + } + + tags=$($version_lister $pname ${fileForGitCommands}) || exit 1 + + # print available tags + for tag in $tags; do + echo "# found $pname version: $tag" >> ${fileForGitCommands} + done + + # cut any revision prefix not used in the NixOS package version + if [ -n "$rev_prefix" ]; then + tags=$(echo "$tags" | ${gnugrep}/bin/grep "^$rev_prefix") + tags=$(echo "$tags" | ${gnused}/bin/sed -e "s,^$rev_prefix,,") + fi + tags=$(echo "$tags" | ${gnugrep}/bin/grep "^[0-9]") + + # sort the tags in decreasing order + tags=$(echo "$tags" | ${coreutils}/bin/sort --reverse --version-sort) + + # find the newest tag + # do not consider development versions + for latest_tag in $tags; do + if version_is_unstable "$latest_tag"; then + echo "# skip development version: $pname-$latest_tag" >> ${fileForGitCommands} + latest_tag= + else + if version_is_unstable "$latest_tag" "enforce"; then + echo "# use potential development version: $pname-$latest_tag" >> ${fileForGitCommands} + fi + break + fi + done + + if [ -n "$latest_tag" ]; then + # print commands to commit the changes + if [ "$version" != "$latest_tag" ]; then + pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. "$attr_path") + echo " git add $pfile " >> ${fileForGitCommands} + echo " git commit -m '$attr_path: $version -> $latest_tag'" >> ${fileForGitCommands} + fi + + # update the nix expression + ${common-updater-scripts}/bin/update-source-version "$attr_path" "$latest_tag" + fi + + echo "" >> ${fileForGitCommands} + ''; + +in +[ updateScript pname version attrPath versionLister rev-prefix odd-unstable patchlevel-unstable ] diff --git a/pkgs/common-updater/update-script.nix b/pkgs/common-updater/update-script.nix deleted file mode 100644 index 8e8153d9a33..00000000000 --- a/pkgs/common-updater/update-script.nix +++ /dev/null @@ -1,98 +0,0 @@ -{ stdenv, writeScript, coreutils, gnugrep, gnused, common-updater-scripts, nix }: - -{ pname -, version -, attrPath ? pname -, versionLister -, rev-prefix ? "" -, odd-unstable ? true -, patchlevel-unstable ? true -}: - -let - # where to print git commands and debugging messages - fileForGitCommands = "update-git-commits.txt"; - - # shell script to update package - updateScript = writeScript "update-script.sh" '' - #! ${stdenv.shell} - set -o errexit - set -x - - pname="$1" - version="$2" - attr_path="$3" - version_lister="$4" - rev_prefix="$5" - odd_unstable="$6" - patchlevel_unstable="$7" - - # print header - echo "# $pname-$version" >> ${fileForGitCommands} - - function version_is_unstable() { - local tag="$1" - local enforce="$2" - if [ -n "$odd_unstable" -o -n "$enforce" ]; then - local minor=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.([0-9]+).*,\1,p') - if [ $((minor % 2)) -eq 1 ]; then - return 0 - fi - fi - if [ -n "$patchlevel_unstable" -o -n "$enforce" ]; then - local patchlevel=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.[0-9]+\.([0-9]+).*$,\1,p') - if ((patchlevel >= 90)); then - return 0 - fi - fi - return 1 - } - - tags=$($version_lister $pname ${fileForGitCommands}) || exit 1 - - # print available tags - for tag in $tags; do - echo "# found $pname version: $tag" >> ${fileForGitCommands} - done - - # cut any revision prefix not used in the NixOS package version - if [ -n "$rev_prefix" ]; then - tags=$(echo "$tags" | ${gnugrep}/bin/grep "^$rev_prefix") - tags=$(echo "$tags" | ${gnused}/bin/sed -e "s,^$rev_prefix,,") - fi - tags=$(echo "$tags" | ${gnugrep}/bin/grep "^[0-9]") - - # sort the tags in decreasing order - tags=$(echo "$tags" | ${coreutils}/bin/sort --reverse --version-sort) - - # find the newest tag - # do not consider development versions - for latest_tag in $tags; do - if version_is_unstable "$latest_tag"; then - echo "# skip development version: $pname-$latest_tag" >> ${fileForGitCommands} - latest_tag= - else - if version_is_unstable "$latest_tag" "enforce"; then - echo "# use potential development version: $pname-$latest_tag" >> ${fileForGitCommands} - fi - break - fi - done - - if [ -n "$latest_tag" ]; then - # print commands to commit the changes - if [ "$version" != "$latest_tag" ]; then - pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. "$attr_path") - echo " git add $pfile " >> ${fileForGitCommands} - echo " git commit -m '$attr_path: $version -> $latest_tag'" >> ${fileForGitCommands} - fi - - # update the nix expression - ${common-updater-scripts}/bin/update-source-version "$attr_path" "$latest_tag" - fi - - echo "" >> ${fileForGitCommands} - ''; - -in -[ updateScript pname version attrPath versionLister rev-prefix odd-unstable patchlevel-unstable ] -- cgit 1.4.1