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,44 @@ 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.csh ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/etc/profile.d/conda.csh
202
+ [ -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
203
+ # generic files in usr/conda/bin/ and usr/conda/condabin/
204
+ for i in usr/conda/bin/* usr/conda/condabin/* ; do
205
+ [ -f " $i " ] || continue
206
+ # shebangs
207
+ sed -i --follow-symlinks " s|^#!$APPDIR_FULL /usr/conda/bin/|#!/usr/bin/env |" " $i "
208
+ # perl assignments (must be before bash assignments)
209
+ sed -ri --follow-symlinks " s|^(my.*=[[:space:]]*\" )$APPDIR_FULL |\1\$ ENV{APPDIR} . \" |g" " $i "
210
+ # bash assignments
211
+ sed -ri --follow-symlinks " s|(=[[:space:]]*\" )$APPDIR_FULL |\1\$ {APPDIR}|g" " $i "
212
+ done
213
+ # specific files in usr/conda/bin/ (regex could result in false replacements in other files)
214
+ [ -f usr/conda/bin/python3-config ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/bin/python3-config
215
+ [ -f usr/conda/bin/ncursesw6-config ] && sed -i --follow-symlinks " s|$APPDIR_FULL |\$ {APPDIR}|g" usr/conda/bin/ncursesw6-config
216
+ popd
217
+
218
+ # generate linuxdeploy-plugin-conda-hook
219
+ mkdir -p " $APPDIR " /apprun-hooks
220
+ cat > " $APPDIR " /apprun-hooks/linuxdeploy-plugin-conda-hook.sh << \EOF
221
+ # generated by linuxdeploy-plugin-conda
222
+
223
+ # export APPDIR variable to allow for running from extracted AppDir as well
224
+ export APPDIR="${APPDIR:- $(readlink -f " $( dirname " $0 " ) " )} "
225
+ # export PATH to allow /usr/bin/env shebangs to use the supplied applications
226
+ export PATH="$APPDIR "/usr/bin:"$PATH "
227
+ EOF
228
+
229
+ fi
190
230
191
231
# remove bloat, optionally skipped via $CONDA_SKIP_CLEANUP
192
232
IFS=' ;' read -ra cleanup <<< " $CONDA_SKIP_CLEANUP"
0 commit comments