tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
qt5: factor out common setup hook for qtbase
Thomas Tuegel
9 years ago
851b5944
a6c75a71
+3
-335
6 changed files
expand all
collapse all
unified
split
pkgs
development
libraries
qt-5
5.5
qtbase
default.nix
5.6
qtbase
default.nix
setup-hook.sh
5.7
qtbase
default.nix
setup-hook.sh
qtbase-setup-hook.sh
+1
-1
pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
reviewed
···
272
272
'';
273
273
274
274
inherit lndir;
275
275
-
setupHook = ./setup-hook.sh;
275
275
+
setupHook = ../../qtbase-setup-hook.sh;
276
276
277
277
enableParallelBuilding = true;
278
278
pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
pkgs/development/libraries/qt-5/qtbase-setup-hook.sh
reviewed
+1
-1
pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
reviewed
···
228
228
'';
229
229
230
230
inherit lndir;
231
231
-
setupHook = ./setup-hook.sh;
231
231
+
setupHook = ../../qtbase-setup-hook.sh;
232
232
233
233
enableParallelBuilding = true;
234
234
-166
pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
reviewed
···
1
1
-
addToSearchPathOnceWithCustomDelimiter() {
2
2
-
local delim="$1"
3
3
-
local search="$2"
4
4
-
local target="$3"
5
5
-
local dirs
6
6
-
local exported
7
7
-
IFS="$delim" read -a dirs <<< "${!search}"
8
8
-
local canonical
9
9
-
if canonical=$(readlink -e "$target"); then
10
10
-
for dir in ${dirs[@]}; do
11
11
-
if [ "z$dir" == "z$canonical" ]; then exported=1; fi
12
12
-
done
13
13
-
if [ -z $exported ]; then
14
14
-
eval "export ${search}=\"${!search}${!search:+$delim}$canonical\""
15
15
-
fi
16
16
-
fi
17
17
-
}
18
18
-
19
19
-
addToSearchPathOnce() {
20
20
-
addToSearchPathOnceWithCustomDelimiter ':' "$@"
21
21
-
}
22
22
-
23
23
-
propagateOnce() {
24
24
-
addToSearchPathOnceWithCustomDelimiter ' ' "$@"
25
25
-
}
26
26
-
27
27
-
_qtPropagate() {
28
28
-
for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
29
29
-
if [ -d "$1/$dir" ]; then
30
30
-
propagateOnce propagatedBuildInputs "$1"
31
31
-
break
32
32
-
fi
33
33
-
done
34
34
-
addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
35
35
-
addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
36
36
-
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
37
37
-
}
38
38
-
39
39
-
crossEnvHooks+=(_qtPropagate)
40
40
-
41
41
-
_qtPropagateNative() {
42
42
-
for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
43
43
-
if [ -d "$1/$dir" ]; then
44
44
-
propagateOnce propagatedNativeBuildInputs "$1"
45
45
-
break
46
46
-
fi
47
47
-
done
48
48
-
if [ -z "$crossConfig" ]; then
49
49
-
addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
50
50
-
addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
51
51
-
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
52
52
-
fi
53
53
-
}
54
54
-
55
55
-
envHooks+=(_qtPropagateNative)
56
56
-
57
57
-
_qtMultioutDevs() {
58
58
-
# This is necessary whether the package is a Qt module or not
59
59
-
moveToOutput "mkspecs" "${!outputDev}"
60
60
-
}
61
61
-
62
62
-
preFixupHooks+=(_qtMultioutDevs)
63
63
-
64
64
-
_qtSetCMakePrefix() {
65
65
-
export CMAKE_PREFIX_PATH="$NIX_QT5_TMP${CMAKE_PREFIX_PATH:+:}${CMAKE_PREFIX_PATH}"
66
66
-
}
67
67
-
68
68
-
_qtRmTmp() {
69
69
-
if [ -z "$NIX_QT_SUBMODULE" ]; then
70
70
-
rm -fr "$NIX_QT5_TMP"
71
71
-
else
72
72
-
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read file; do
73
73
-
if [ ! -d "$NIX_QT5_TMP/$file" ]; then
74
74
-
rm -f "$NIX_QT5_TMP/$file"
75
75
-
fi
76
76
-
done
77
77
-
78
78
-
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read dir; do
79
79
-
if [ -d "$NIX_QT5_TMP/$dir" ]; then
80
80
-
rmdir --ignore-fail-on-non-empty -p "$NIX_QT5_TMP/$dir"
81
81
-
fi
82
82
-
done
83
83
-
84
84
-
rm "$NIX_QT5_TMP/nix-support/qt-inputs"
85
85
-
fi
86
86
-
}
87
87
-
88
88
-
_qtSetQmakePath() {
89
89
-
export PATH="$NIX_QT5_TMP/bin${PATH:+:}$PATH"
90
90
-
}
91
91
-
92
92
-
if [ -z "$NIX_QT5_TMP" ]; then
93
93
-
if [ -z "$NIX_QT_SUBMODULE" ]; then
94
94
-
NIX_QT5_TMP=$(pwd)/__nix_qt5__
95
95
-
else
96
96
-
NIX_QT5_TMP=$out
97
97
-
fi
98
98
-
postInstallHooks+=(_qtRmTmp)
99
99
-
100
100
-
mkdir -p "$NIX_QT5_TMP/nix-support"
101
101
-
for subdir in bin include lib mkspecs share; do
102
102
-
mkdir "$NIX_QT5_TMP/$subdir"
103
103
-
echo "$subdir/" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
104
104
-
done
105
105
-
106
106
-
postHooks+=(_qtSetCMakePrefix)
107
107
-
108
108
-
cp "@dev@/bin/qmake" "$NIX_QT5_TMP/bin"
109
109
-
echo "bin/qmake" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
110
110
-
111
111
-
cat >"$NIX_QT5_TMP/bin/qt.conf" <<EOF
112
112
-
[Paths]
113
113
-
Prefix = $NIX_QT5_TMP
114
114
-
Plugins = lib/qt5/plugins
115
115
-
Imports = lib/qt5/imports
116
116
-
Qml2Imports = lib/qt5/qml
117
117
-
Documentation = share/doc/qt5
118
118
-
EOF
119
119
-
echo "bin/qt.conf" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
120
120
-
121
121
-
export QMAKE="$NIX_QT5_TMP/bin/qmake"
122
122
-
123
123
-
# Set PATH to find qmake first in a preConfigure hook
124
124
-
# It must run after all the envHooks!
125
125
-
preConfigureHooks+=(_qtSetQmakePath)
126
126
-
fi
127
127
-
128
128
-
qt5LinkModuleDir() {
129
129
-
if [ -d "$1/$2" ]; then
130
130
-
@lndir@/bin/lndir -silent "$1/$2" "$NIX_QT5_TMP/$2"
131
131
-
find "$1/$2" -printf "$2/%P\n" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
132
132
-
fi
133
133
-
}
134
134
-
135
135
-
NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
136
136
-
NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
137
137
-
138
138
-
_qtLinkAllModules() {
139
139
-
IFS=: read -a modules <<< $NIX_QT5_MODULES
140
140
-
for module in ${modules[@]}; do
141
141
-
qt5LinkModuleDir "$module" "lib"
142
142
-
done
143
143
-
144
144
-
IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV
145
145
-
for module in ${modules[@]}; do
146
146
-
qt5LinkModuleDir "$module" "bin"
147
147
-
qt5LinkModuleDir "$module" "include"
148
148
-
qt5LinkModuleDir "$module" "lib"
149
149
-
qt5LinkModuleDir "$module" "mkspecs"
150
150
-
qt5LinkModuleDir "$module" "share"
151
151
-
done
152
152
-
}
153
153
-
154
154
-
preConfigureHooks+=(_qtLinkAllModules)
155
155
-
156
156
-
_qtFixCMakePaths() {
157
157
-
find "${!outputLib}" -name "*.cmake" | while read file; do
158
158
-
substituteInPlace "$file" \
159
159
-
--subst-var-by NIX_OUT "${!outputLib}" \
160
160
-
--subst-var-by NIX_DEV "${!outputDev}"
161
161
-
done
162
162
-
}
163
163
-
164
164
-
if [ -n "$NIX_QT_SUBMODULE" ]; then
165
165
-
postInstallHooks+=(_qtFixCMakePaths)
166
166
-
fi
+1
-1
pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
reviewed
···
232
232
'';
233
233
234
234
inherit lndir;
235
235
-
setupHook = ./setup-hook.sh;
235
235
+
setupHook = ../../qtbase-setup-hook.sh;
236
236
237
237
enableParallelBuilding = true;
238
238
-166
pkgs/development/libraries/qt-5/5.7/qtbase/setup-hook.sh
reviewed
···
1
1
-
addToSearchPathOnceWithCustomDelimiter() {
2
2
-
local delim="$1"
3
3
-
local search="$2"
4
4
-
local target="$3"
5
5
-
local dirs
6
6
-
local exported
7
7
-
IFS="$delim" read -a dirs <<< "${!search}"
8
8
-
local canonical
9
9
-
if canonical=$(readlink -e "$target"); then
10
10
-
for dir in ${dirs[@]}; do
11
11
-
if [ "z$dir" == "z$canonical" ]; then exported=1; fi
12
12
-
done
13
13
-
if [ -z $exported ]; then
14
14
-
eval "export ${search}=\"${!search}${!search:+$delim}$canonical\""
15
15
-
fi
16
16
-
fi
17
17
-
}
18
18
-
19
19
-
addToSearchPathOnce() {
20
20
-
addToSearchPathOnceWithCustomDelimiter ':' "$@"
21
21
-
}
22
22
-
23
23
-
propagateOnce() {
24
24
-
addToSearchPathOnceWithCustomDelimiter ' ' "$@"
25
25
-
}
26
26
-
27
27
-
_qtPropagate() {
28
28
-
for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
29
29
-
if [ -d "$1/$dir" ]; then
30
30
-
propagateOnce propagatedBuildInputs "$1"
31
31
-
break
32
32
-
fi
33
33
-
done
34
34
-
addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
35
35
-
addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
36
36
-
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
37
37
-
}
38
38
-
39
39
-
crossEnvHooks+=(_qtPropagate)
40
40
-
41
41
-
_qtPropagateNative() {
42
42
-
for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
43
43
-
if [ -d "$1/$dir" ]; then
44
44
-
propagateOnce propagatedNativeBuildInputs "$1"
45
45
-
break
46
46
-
fi
47
47
-
done
48
48
-
if [ -z "$crossConfig" ]; then
49
49
-
addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
50
50
-
addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
51
51
-
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
52
52
-
fi
53
53
-
}
54
54
-
55
55
-
envHooks+=(_qtPropagateNative)
56
56
-
57
57
-
_qtMultioutDevs() {
58
58
-
# This is necessary whether the package is a Qt module or not
59
59
-
moveToOutput "mkspecs" "${!outputDev}"
60
60
-
}
61
61
-
62
62
-
preFixupHooks+=(_qtMultioutDevs)
63
63
-
64
64
-
_qtSetCMakePrefix() {
65
65
-
export CMAKE_PREFIX_PATH="$NIX_QT5_TMP${CMAKE_PREFIX_PATH:+:}${CMAKE_PREFIX_PATH}"
66
66
-
}
67
67
-
68
68
-
_qtRmTmp() {
69
69
-
if [ -z "$NIX_QT_SUBMODULE" ]; then
70
70
-
rm -fr "$NIX_QT5_TMP"
71
71
-
else
72
72
-
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read file; do
73
73
-
if [ ! -d "$NIX_QT5_TMP/$file" ]; then
74
74
-
rm -f "$NIX_QT5_TMP/$file"
75
75
-
fi
76
76
-
done
77
77
-
78
78
-
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read dir; do
79
79
-
if [ -d "$NIX_QT5_TMP/$dir" ]; then
80
80
-
rmdir --ignore-fail-on-non-empty -p "$NIX_QT5_TMP/$dir"
81
81
-
fi
82
82
-
done
83
83
-
84
84
-
rm "$NIX_QT5_TMP/nix-support/qt-inputs"
85
85
-
fi
86
86
-
}
87
87
-
88
88
-
_qtSetQmakePath() {
89
89
-
export PATH="$NIX_QT5_TMP/bin${PATH:+:}$PATH"
90
90
-
}
91
91
-
92
92
-
if [ -z "$NIX_QT5_TMP" ]; then
93
93
-
if [ -z "$NIX_QT_SUBMODULE" ]; then
94
94
-
NIX_QT5_TMP=$(pwd)/__nix_qt5__
95
95
-
else
96
96
-
NIX_QT5_TMP=$out
97
97
-
fi
98
98
-
postInstallHooks+=(_qtRmTmp)
99
99
-
100
100
-
mkdir -p "$NIX_QT5_TMP/nix-support"
101
101
-
for subdir in bin include lib mkspecs share; do
102
102
-
mkdir "$NIX_QT5_TMP/$subdir"
103
103
-
echo "$subdir/" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
104
104
-
done
105
105
-
106
106
-
postHooks+=(_qtSetCMakePrefix)
107
107
-
108
108
-
cp "@dev@/bin/qmake" "$NIX_QT5_TMP/bin"
109
109
-
echo "bin/qmake" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
110
110
-
111
111
-
cat >"$NIX_QT5_TMP/bin/qt.conf" <<EOF
112
112
-
[Paths]
113
113
-
Prefix = $NIX_QT5_TMP
114
114
-
Plugins = lib/qt5/plugins
115
115
-
Imports = lib/qt5/imports
116
116
-
Qml2Imports = lib/qt5/qml
117
117
-
Documentation = share/doc/qt5
118
118
-
EOF
119
119
-
echo "bin/qt.conf" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
120
120
-
121
121
-
export QMAKE="$NIX_QT5_TMP/bin/qmake"
122
122
-
123
123
-
# Set PATH to find qmake first in a preConfigure hook
124
124
-
# It must run after all the envHooks!
125
125
-
preConfigureHooks+=(_qtSetQmakePath)
126
126
-
fi
127
127
-
128
128
-
qt5LinkModuleDir() {
129
129
-
if [ -d "$1/$2" ]; then
130
130
-
@lndir@/bin/lndir -silent "$1/$2" "$NIX_QT5_TMP/$2"
131
131
-
find "$1/$2" -printf "$2/%P\n" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
132
132
-
fi
133
133
-
}
134
134
-
135
135
-
NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
136
136
-
NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
137
137
-
138
138
-
_qtLinkAllModules() {
139
139
-
IFS=: read -a modules <<< $NIX_QT5_MODULES
140
140
-
for module in ${modules[@]}; do
141
141
-
qt5LinkModuleDir "$module" "lib"
142
142
-
done
143
143
-
144
144
-
IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV
145
145
-
for module in ${modules[@]}; do
146
146
-
qt5LinkModuleDir "$module" "bin"
147
147
-
qt5LinkModuleDir "$module" "include"
148
148
-
qt5LinkModuleDir "$module" "lib"
149
149
-
qt5LinkModuleDir "$module" "mkspecs"
150
150
-
qt5LinkModuleDir "$module" "share"
151
151
-
done
152
152
-
}
153
153
-
154
154
-
preConfigureHooks+=(_qtLinkAllModules)
155
155
-
156
156
-
_qtFixCMakePaths() {
157
157
-
find "${!outputLib}" -name "*.cmake" | while read file; do
158
158
-
substituteInPlace "$file" \
159
159
-
--subst-var-by NIX_OUT "${!outputLib}" \
160
160
-
--subst-var-by NIX_DEV "${!outputDev}"
161
161
-
done
162
162
-
}
163
163
-
164
164
-
if [ -n "$NIX_QT_SUBMODULE" ]; then
165
165
-
postInstallHooks+=(_qtFixCMakePaths)
166
166
-
fi