summary refs log tree commit diff
path: root/pkgs/build-support/upstream-updater/update-walker.sh
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2014-07-01 11:28:35 +0400
committerMichael Raskin <7c6f434c@mail.ru>2014-07-01 11:54:09 +0400
commit2e12709a2688232af9d752490f36127a3e8c7cba (patch)
tree5334ce01d40d2ccd08350f0dc33e9428c8aa5287 /pkgs/build-support/upstream-updater/update-walker.sh
parent5ed1adbbd4bcf1e3372d42fd73b0bfddbe4b84a8 (diff)
downloadnixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar.gz
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar.bz2
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar.lz
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar.xz
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.tar.zst
nixlib-2e12709a2688232af9d752490f36127a3e8c7cba.zip
Allow update-walker to run directly from meta attributes
Diffstat (limited to 'pkgs/build-support/upstream-updater/update-walker.sh')
-rwxr-xr-xpkgs/build-support/upstream-updater/update-walker.sh38
1 files changed, 36 insertions, 2 deletions
diff --git a/pkgs/build-support/upstream-updater/update-walker.sh b/pkgs/build-support/upstream-updater/update-walker.sh
index bc58f935f815..8aa9e723a3a2 100755
--- a/pkgs/build-support/upstream-updater/update-walker.sh
+++ b/pkgs/build-support/upstream-updater/update-walker.sh
@@ -2,12 +2,14 @@
 
 own_dir="$(cd "$(dirname "$0")"; pwd)"
 
+URL_WAS_SET=
 CURRENT_URL=
 CURRENT_REV=
 PREFETCH_COMMAND=
 NEED_TO_CHOOSE_URL=1
 
 url () {
+  URL_WAS_SET=1
   CURRENT_URL="$1"
 }
 
@@ -101,14 +103,25 @@ ensure_name () {
 
 ensure_attribute_name () {
   echo "Ensuring attribute name. CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
+  ensure_name
   [ -z "$CURRENT_ATTRIBUTE_NAME" ] && attribute_name "$CURRENT_NAME"
   echo "Resulting attribute name: $CURRENT_ATTRIBUTE_NAME"
 }
 
+ensure_url () {
+  echo "Ensuring starting URL. CURRENT_URL: $CURRENT_URL" >&2
+  ensure_attribute_name
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta downloadPage)"
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta downloadpage)"
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta homepage)"
+  echo "Resulting URL: $CURRENT_URL"
+}
+
 ensure_choice () {
   echo "Ensuring that choice is made." >&2
   echo "NEED_TO_CHOOSE_URL: [$NEED_TO_CHOOSE_URL]." >&2
   echo "CURRENT_URL: $CURRENT_URL" >&2
+  [ -z "$URL_WAS_SET" ] && [ -z "$CURRENT_URL" ] && ensure_url
   [ -n "$NEED_TO_CHOOSE_URL" ] && {
     version_link '[.]tar[.]([^./])+$'
     unset NEED_TO_CHOOSE_URL
@@ -153,8 +166,12 @@ attribute_name () {
   echo "CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
 }
 
+retrieve_meta () {
+  nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_ATTRIBUTE_NAME".meta."$1" | xargs
+}
+
 retrieve_version () {
-  PACKAGED_VERSION="$(nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_ATTRIBUTE_NAME".meta.version | xargs)"
+  PACKAGED_VERSION="$(retrieve_meta version)"
 }
 
 directory_of () {
@@ -256,7 +273,24 @@ process_config () {
   CONFIG_DIR="$(directory_of "$1")"
   CONFIG_NAME="$(basename "$1")"
   BEGIN_EXPRESSION='# Generated upstream information';
-  source "$CONFIG_DIR/$CONFIG_NAME"
+  if [ -f  "$CONFIG_DIR/$CONFIG_NAME" ] &&
+      [ "${CONFIG_NAME}" = "${CONFIG_NAME%.nix}" ]; then
+    source "$CONFIG_DIR/$CONFIG_NAME"
+  else
+    CONFIG_NAME="${CONFIG_NAME%.nix}"
+    ensure_attribute_name
+    [ -n "$(retrieve_meta updateWalker)" ] ||
+        [ -n "$FORCE_UPDATE_WALKER" ] || {
+      echo "Error: package not marked as safe for update-walker" >&2
+      echo "Set FORCE_UPDATE_WALKER=1 to override" >&2
+      exit 1;
+    }
+    [ -z "$(retrieve_meta fullRegenerate)" ] && eval "
+      do_overwrite(){
+        do_overwrite_just_version
+      }
+    "
+  fi
   ensure_name
   ensure_attribute_name
   retrieve_version