Skip to content
Snippets Groups Projects
crosstool-ng--sources-from-nixos.patch 3.55 KiB
Newer Older
diff --git a/scripts/functions b/scripts/functions
index 17384476..430c832d 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -720,6 +720,12 @@ CT_DoGetFile()
         T="${CT_CONNECT_TIMEOUT}"
     fi
 
+    if [ "${CT_COLLECT_SOURCES_FOR_NIXOS}" = "y" ]; then
+        echo "DoGetFile: ${url} -> ${dest}" >>"$out"
+        touch "${dest}"
+        return 0
+    fi
+
     CT_DoLog DEBUG "Trying '${url}'"
     if [ "${CT_DOWNLOAD_AGENT_WGET}" = "y" ]; then
         if CT_DoExecLog ALL wget ${CT_DOWNLOAD_WGET_OPTIONS} \
@@ -782,6 +788,12 @@ CT_DoVerifyDigest()
         CT_DoLog WARN "Not verifying '${file}': digest missing"
         return 0
     fi
+
+    if [ "${CT_COLLECT_SOURCES_FOR_NIXOS}" = "y" ]; then
+        echo "DoVerifyDigest: ${alg}, ${pkgdir}/chksum, ${file}" >>"$out"
+        return 0
+    fi
+
     CT_DoLog EXTRA "Verifying ${alg^^} checksum for '${file}'"
     chksum=`"${alg}sum" "${path}"`
     chksum="${chksum%%[[:space:]]*}"
@@ -846,6 +858,11 @@ CT_DoVerifySignature()
     local sigfile
     local cat
 
+    if [ "${CT_COLLECT_SOURCES_FOR_NIXOS}" = "y" ]; then
+        echo "DoVerifySignature: ${path}, ${url}, ${format}" >>"$out"
+        return 0
+    fi
+
     CT_DoLog EXTRA "Verifying detached signature for '${file}'"
     case "${method}" in
     packed)
@@ -1957,7 +1974,7 @@ CT_DoFetch()
     elif [ "${src_devel}" = "y" ]; then
         local unique_id
 
-        if [ -z "${devel_revision}" -a "${CT_FORBID_DOWNLOAD}" = "y" ]; then
+        if [ -z "${devel_revision}" -a "${CT_FORBID_DOWNLOAD}" = "y" -a "${CT_COLLECT_SOURCES_FOR_NIXOS}" != "y" -a "${CT_USE_SOURCES_FROM_NIXOS}" != "y" ]; then
             CT_Abort "${pkg_name}: cannot find most recent revisions with downloads prohibited"
         fi
 
@@ -1970,7 +1987,14 @@ CT_DoFetch()
         # this would override empty (default) values with "default branch name" and
         # "most current revision", respectively.
 
-        CT_GetVersion_${devel_vcs}
+        if [ "${CT_COLLECT_SOURCES_FOR_NIXOS}" = "y" ]; then
+            echo "CT_GetVersion_${devel_vcs}: url=${devel_url}, branch=${devel_branch}, revision=${devel_revision}" >>"$out"
+            unique_id=local
+        elif [ "${CT_USE_SOURCES_FROM_NIXOS}" = "y" ]; then
+            unique_id=local
+        else
+            CT_GetVersion_${devel_vcs}
+        fi
         if [ -z "${unique_id}" ]; then
             CT_Abort "${pkg_name}: ${devel_vcs} did not set unique ID for branch/revision"
         fi
@@ -1986,6 +2010,12 @@ CT_DoFetch()
             return 0
         fi
 
+        if [ "${CT_USE_SOURCES_FROM_NIXOS}" = "y" -a -e "${CT_LOCAL_TARBALLS_DIR}/${basename}" ]; then
+            cp -aTH "${CT_LOCAL_TARBALLS_DIR}/${basename}/" "${basename}"
+            chmod -R u+w "${basename}"
+            return 0
+        fi
+
         if [ "${CT_FORBID_DOWNLOAD}" = "y" ]; then
             CT_DoLog WARN "Downloads forbidden, not trying ${devel_vcs} retrieval"
             return 1
@@ -1994,7 +2024,12 @@ CT_DoFetch()
         CT_DoLog EXTRA "Retrieving '${basename}' (${devel_vcs} ${devel_url} ${devel_branch} ${devel_revision})"
         CT_MktempDir tmp_dir
         CT_Pushd "${tmp_dir}"
-        CT_Download_${devel_vcs}
+        if [ "${CT_COLLECT_SOURCES_FOR_NIXOS}" = "y" ]; then
+            echo "CT_Download_${devel_vcs}: ${devel_vcs} ${devel_url} ${devel_branch} ${devel_revision} ${pkg_name}" >>"$out"
+        else
+            CT_Download_${devel_vcs}
+        fi
 
         # First setting above may not have determined the version (e.g. with Mercurial)
         # Set the final, downloaded version.