aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh')
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh182
1 files changed, 182 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh b/infra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh
new file mode 100755
index 000000000000..38c0d13a723d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/build-support/upstream-updater/update-upstream-data.sh
@@ -0,0 +1,182 @@
+#! /bin/sh
+
+set -x
+
+own_dir="$(cd "$(dirname "$0")"; sh -c pwd)"
+
+source "$own_dir/snippets.sh"
+
+[ -z "$1" ] && {
+ echo "Specify main expression filename."
+ exit 1;
+}
+
+main_file="$1"
+main_dir="$(cd "$(dirname "$main_file")" ; sh -c pwd)"
+file_name="$(basename "$main_file")"
+defs_file="$main_dir"/src-info-for-"$file_name"
+src_file="$main_dir"/src-for-"$file_name"
+# OK, [vcs] revert is always possible
+new_src_file="$main_dir"/src-for-"$file_name"
+
+forcedUrl="$2"
+
+defs_dir="$("$own_dir"/attrset-to-dir.sh "$defs_file")"
+src_defs_dir="$("$own_dir"/attrset-to-dir.sh "$src_file")"
+
+getAttr () {
+ file="$defs_dir"/"$1"
+ data="$( ( [ -f "$file" ] && cat "$file" ) || echo "$2" )"
+ echo "attribute $1 obtained as: [[$data]]" >&2
+ echo "$data"
+}
+
+method="$(getAttr method fetchurl)"
+baseName="$(getAttr baseName 'unnamed-package')"
+commonPrefetchVars=" version name hash"
+
+prefetchClause=""
+[ fetchSFdirs = "$method" ] && {
+ if [ -z "$forcedUrl" ]; then
+ freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
+ eval "egrep '$(getAttr sourceRegexp '[-][0-9.]+/$')'" |
+ eval "egrep -v '$(getAttr blacklistRegexp '^$')'" |
+ eval "$(getAttr choiceCommand 'head -n 1')" |
+ eval "$(getAttr versionToFileCommand "sed -re 's@/([^/]*-[0-9.]+)/@/\1/\1$(getAttr fileSuffix .tar.gz)@'")"
+ )"
+
+ if ! egrep ':' <<< "$freshUrl" ; then
+ freshUrl="$(dirname "$(getAttr downloadPage).")/$freshUrl"
+ fi
+
+ echo "Found download link: $freshUrl" >&2
+ else
+ freshUrl="$forcedUrl"
+ fi
+
+ freshUrl="$(echo "$freshUrl" | sed -re "$skipRedirectSF")"
+ echo "Sourceforge-corrected URL: $freshUrl" >&2
+
+ version="$(echo "$freshUrl" |
+ sed -re "$(getAttr versionExtractorSedScript "$extractVersionSF")")"
+ baseName="$(getAttr baseName "$(echo "$freshUrl" | sed -re 's@.*/project/([^/]+)/.*@\1@')")"
+ url="$freshUrl"
+ name="$baseName-$version"
+ advertisedUrl="$freshUrl"
+
+ if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
+ echo "Source link not changed" >&2
+ exit
+ fi
+ hash=$(nix-prefetch-url "$freshUrl")
+
+ prefetchVars="url advertisedUrl";
+}
+[ fetchSF = "$method" ] && {
+ if [ -z "$forcedUrl" ]; then
+ freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
+ eval "egrep \"$(getAttr sourceRegexp '.*[.]tar[.].*|.*[.]tgz$|.*[.]tbz2$')\"" |
+ eval "egrep -v \"$(getAttr blacklistRegexp '^$')\"" |
+ eval "$(getAttr choiceCommand 'head -1')")"
+
+ if ! egrep ':' <<< "$freshUrl" ; then
+ freshUrl="$(dirname "$(getAttr downloadPage).")/$freshUrl"
+ fi
+
+ echo "Found download link: $freshUrl" >&2
+ else
+ freshUrl="$forcedUrl"
+ fi
+
+ freshUrl="$(echo "$freshUrl" | sed -re "$skipRedirectSF")"
+ echo "Sourceforge-corrected URL: $freshUrl" >&2
+
+ version="$(echo "$freshUrl" |
+ sed -re "$(getAttr versionExtractorSedScript "$extractVersionSF")")"
+ baseName="$(getAttr baseName "$(echo "$freshUrl" | sed -re 's@.*/project/([^/]+)/.*@\1@')")"
+ url="$freshUrl"
+ name="$baseName-$version"
+ advertisedUrl="$freshUrl"
+
+ if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
+ echo "Source link not changed" >&2
+ exit
+ fi
+ hash=$(nix-prefetch-url "$freshUrl")
+
+ prefetchVars="url advertisedUrl";
+}
+[ fetchurl = "$method" ] && {
+ if [ -z "$forcedUrl" ] ; then
+ freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
+ eval "egrep \"$(getAttr sourceRegexp '.*[.]tar[.].*|.*[.]tgz$|.*[.]tbz2$')\"" |
+ eval "egrep -v \"$(getAttr blacklistRegexp '^$')\"" |
+ eval "$(getAttr choiceCommand 'head -1')")"
+
+ if ! egrep ':' <<< "$freshUrl" ; then
+ freshUrl="$(dirname "$(getAttr downloadPage).")/$freshUrl"
+ fi
+
+ echo "Found download link: $freshUrl" >&2
+ else
+ freshUrl="$forcedUrl"
+ fi
+
+ version="$(echo "$freshUrl" |
+ eval "sed -re \"$(getAttr versionExtractorSedScript \
+ 's/.*-([0-9.]+)[.].*/\1/')\"")"
+
+ mirrorUrl="$(echo "$freshUrl" |
+ eval "sed -r -e \"$(getAttr versionReferenceCreator \
+ 's/-'"${version}"'[.]/-\${version}./')\"" |
+ eval "sed -r -e \"$(getAttr mirrorSedScript)\"")"
+ url="$mirrorUrl"
+
+ name="$baseName-$version"
+
+ advertisedUrl="$freshUrl"
+ url="$mirrorUrl"
+
+ if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
+ echo "Source link not changed" >&2
+ exit
+ fi
+ hash=$(nix-prefetch-url "$freshUrl")
+
+ prefetchVars="url advertisedUrl";
+}
+[ "fetchgit" = "$method" ] && {
+ repoUrl="$(getAttr repoUrl)"
+ export NIX_PREFETCH_GIT_CHECKOUT_HOOK="
+ cat .git/HEAD
+ "
+ export NIX_HASH_ALGO=sha256
+ rev="$(getAttr rev '')";
+ rev_and_hash="$("$own_dir"/../fetchgit/nix-prefetch-git "$repoUrl" "$rev" | tee /dev/stderr | tail -2)"
+
+ rev="$(echo "$rev_and_hash" | head -1)"
+ url="$repoUrl";
+ hash="$(echo "$rev_and_hash" | tail -1)"
+ version="$rev"
+ name="$baseName-$version"
+
+ prefetchVars="rev url";
+}
+
+prefetchAssignments="";
+for i in $commonPrefetchVars $prefetchVars; do
+ prefetchAssignments="$prefetchAssignments $i=\"$(eval echo \"\$$i\")\";$(echo -e '\n ')"
+done;
+
+extraAssignments=""
+for i in $(getAttr extraVars ''); do
+ eval "$(getAttr "eval_$i" 'i=""')"
+ extraAssignments="$extraAssignments $i=\"$(eval echo \"\$$i\")\";$(echo -e '\n ')"
+done
+
+cat << EOF > "$new_src_file"
+rec {
+ $prefetchAssignments
+ $extraAssignments
+}
+EOF