tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
fetchzip: cleanup and improve metrics a bit
Jan Malakhovski
2 years ago
9dcecbdb
672efa69
+21
-34
1 changed file
expand all
collapse all
unified
split
pkgs
build-support
fetchzip
default.nix
+21
-34
pkgs/build-support/fetchzip/default.nix
···
7
8
{ lib, fetchurl, unzip, glibcLocalesUtf8 }:
9
10
-
{ # Optionally move the contents of the unpacked tree up one level.
11
-
stripRoot ? true
12
, url ? ""
13
, urls ? []
14
-
, extraPostFetch ? ""
15
, postFetch ? ""
16
-
, name ? "source"
17
-
, pname ? ""
18
-
, version ? ""
19
-
, nativeBuildInputs ? [ ]
20
-
, # Allows to set the extension for the intermediate downloaded
21
-
# file. This can be used as a hint for the unpackCmdHooks to select
22
-
# an appropriate unpacking tool.
23
-
extension ? null
24
-
, ... } @ args:
25
0
0
0
0
0
0
26
27
-
lib.warnIf (extraPostFetch != "") "use 'postFetch' instead of 'extraPostFetch' with 'fetchzip' and 'fetchFromGitHub'."
0
0
0
28
29
-
(let
30
tmpFilename =
31
if extension != null
32
then "download.${extension}"
33
else baseNameOf (if url != "" then url else builtins.head urls);
34
in
35
36
-
fetchurl ((
37
-
if (pname != "" && version != "") then
38
-
{
39
-
name = "${pname}-${version}";
40
-
inherit pname version;
41
-
}
42
-
else
43
-
{ inherit name; }
44
-
) // {
45
recursiveHash = true;
46
47
downloadToTemp = true;
···
61
mv "$downloadedFile" "$renamed"
62
unpackFile "$renamed"
63
chmod -R +w "$unpackDir"
64
-
''
65
-
+ (if stripRoot then ''
66
if [ $(ls -A "$unpackDir" | wc -l) != 1 ]; then
67
echo "error: zip file must contain a single file or directory."
68
echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files."
···
75
mv "$unpackDir/$fn" "$out"
76
'' else ''
77
mv "$unpackDir" "$out"
78
-
'')
79
-
+ ''
80
${postFetch}
81
-
'' + ''
82
${extraPostFetch}
83
-
''
84
-
85
-
# Remove non-owner write permissions
86
-
# Fixes https://github.com/NixOS/nixpkgs/issues/38649
87
-
+ ''
88
chmod 755 "$out"
89
'';
90
-
} // removeAttrs args [ "stripRoot" "extraPostFetch" "postFetch" "extension" "nativeBuildInputs" ]))
0
0
···
7
8
{ lib, fetchurl, unzip, glibcLocalesUtf8 }:
9
10
+
{ name ? "source"
0
11
, url ? ""
12
, urls ? []
13
+
, nativeBuildInputs ? []
14
, postFetch ? ""
15
+
, extraPostFetch ? ""
0
0
0
0
0
0
0
0
16
17
+
# Optionally move the contents of the unpacked tree up one level.
18
+
, stripRoot ? true
19
+
# Allows to set the extension for the intermediate downloaded
20
+
# file. This can be used as a hint for the unpackCmdHooks to select
21
+
# an appropriate unpacking tool.
22
+
, extension ? null
23
24
+
# the rest are given to fetchurl as is
25
+
, ... } @ args:
26
+
27
+
assert (extraPostFetch != "") -> lib.warn "use 'postFetch' instead of 'extraPostFetch' with 'fetchzip' and 'fetchFromGitHub'." true;
28
29
+
let
30
tmpFilename =
31
if extension != null
32
then "download.${extension}"
33
else baseNameOf (if url != "" then url else builtins.head urls);
34
in
35
36
+
fetchurl ({
37
+
inherit name;
0
0
0
0
0
0
0
38
recursiveHash = true;
39
40
downloadToTemp = true;
···
54
mv "$downloadedFile" "$renamed"
55
unpackFile "$renamed"
56
chmod -R +w "$unpackDir"
57
+
'' + (if stripRoot then ''
0
58
if [ $(ls -A "$unpackDir" | wc -l) != 1 ]; then
59
echo "error: zip file must contain a single file or directory."
60
echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files."
···
67
mv "$unpackDir/$fn" "$out"
68
'' else ''
69
mv "$unpackDir" "$out"
70
+
'') + ''
0
71
${postFetch}
0
72
${extraPostFetch}
0
0
0
0
0
73
chmod 755 "$out"
74
'';
75
+
# ^ Remove non-owner write permissions
76
+
# Fixes https://github.com/NixOS/nixpkgs/issues/38649
77
+
} // removeAttrs args [ "stripRoot" "extraPostFetch" "postFetch" "extension" "nativeBuildInputs" ])