9
9
10
10
script=$( readlink -f " $0 " )
11
11
12
+ CONDA_SKIP_ADJUST_PATHS=${CONDA_SKIP_ADJUST_PATHS:- " 1" }
12
13
ARCH=" ${ARCH:- " $( uname -m) " } "
13
14
14
15
show_usage () {
@@ -23,6 +24,7 @@ show_usage() {
23
24
echo " PIP_REQUIREMENTS=\" packageA packageB -r requirements.txt -e git+https://...\" "
24
25
echo " PIP_PREFIX=\" AppDir/usr/share/conda\" "
25
26
echo " ARCH=\" $ARCH \" (supported values: x86_64, i368, i686)"
27
+ echo " CONDA_SKIP_ADJUST_PATHS=\" 1\" (default: skip)"
26
28
echo " CONDA_SKIP_CLEANUP=\" [all;][conda-pkgs;][__pycache__;][strip;][.a;][cmake;][doc;][man;][site-packages;]\" "
27
29
}
28
30
@@ -187,6 +189,45 @@ for i in usr/conda/bin/*; do
187
189
done
188
190
popd
189
191
192
+ # adjust absolute paths, by default skipped via $CONDA_SKIP_ADJUST_PATHS
193
+ if [ " $CONDA_SKIP_ADJUST_PATHS " != " 1" ]; then
194
+ # disable history substitution, b/c we use ! in quoted strings
195
+ set +H
196
+ APPDIR_FULL=" $( pwd) /$APPDIR "
197
+ pushd " $APPDIR_FULL "
198
+ # NOTE: --follow-symlinks is only working for GNU sed
199
+ # replace absolute paths in some specific files (regex could result in false replacements in other files)
200
+ [ -f usr/conda/etc/profile.d/conda.sh ] && sed -i --follow-symlinks " s|'$APPDIR_FULL |\"\$ {APPDIR}\" '|g" usr/conda/etc/profile.d/conda.sh
201
+ [ -f usr/conda/etc/profile.d/conda.sh ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/etc/profile.d/conda.sh
202
+ [ -f usr/conda/etc/profile.d/conda.csh ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/etc/profile.d/conda.csh
203
+ [ -f usr/conda/etc/fish/conf.d/conda.fish ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ APPDIR|g" usr/conda/etc/fish/conf.d/conda.fish
204
+ # generic files in usr/conda/bin/ and usr/conda/condabin/
205
+ for i in usr/conda/bin/* usr/conda/condabin/* ; do
206
+ [ -f " $i " ] || continue
207
+ # shebangs
208
+ sed -i --follow-symlinks " s|^#!$APPDIR_FULL /usr/conda/bin/|#!/usr/bin/env |" " $i "
209
+ # perl assignments (must be before bash assignments)
210
+ sed -ri --follow-symlinks " s|^(my.*=[[:space:]]*\" )$APPDIR_FULL |\1\$ ENV{APPDIR} . \" |g" " $i "
211
+ # bash assignments
212
+ sed -ri --follow-symlinks " s|(=[[:space:]]*\" )$APPDIR_FULL |\1\$ {APPDIR}|g" " $i "
213
+ done
214
+ # specific files in usr/conda/bin/ (regex could result in false replacements in other files)
215
+ [ -f usr/conda/bin/python3-config ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/bin/python3-config
216
+ [ -f usr/conda/bin/ncursesw6-config ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/bin/ncursesw6-config
217
+ popd
218
+
219
+ # generate linuxdeploy-plugin-conda-hook
220
+ mkdir -p " $APPDIR " /apprun-hooks
221
+ cat > " $APPDIR " /apprun-hooks/linuxdeploy-plugin-conda-hook.sh << \EOF
222
+ # generated by linuxdeploy-plugin-conda
223
+
224
+ # export APPDIR variable to allow for running from extracted AppDir as well
225
+ export APPDIR="${APPDIR:- $(readlink -f " $( dirname " $0 " ) " )} "
226
+ # export PATH to allow /usr/bin/env shebangs to use the supplied applications
227
+ export PATH="$APPDIR "/usr/bin:"$PATH "
228
+ EOF
229
+
230
+ fi
190
231
191
232
# remove bloat, optionally skipped via $CONDA_SKIP_CLEANUP
192
233
IFS=' ;' read -ra cleanup <<< " $CONDA_SKIP_CLEANUP"
0 commit comments