Skip to content

Commit

Permalink
Replace mamake change with bin/package fix
Browse files Browse the repository at this point in the history
Taken from ksh93#768 (comment),
but fixed to avoid another export the referenced patch missed (also
reindented).
  • Loading branch information
JohnoKing committed Jul 22, 2024
1 parent fe2654b commit 68f417a
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 95 deletions.
188 changes: 100 additions & 88 deletions bin/package
Original file line number Diff line number Diff line change
Expand Up @@ -2056,100 +2056,112 @@ case $x in
case $abi in
'') abi="'d=$INSTALLROOT v='" ;;
esac

# allow loading dynamic libraries from $INSTALLROOT/dyn/lib
# by setting library path variables for various systems;
# instead of bothering to detect the system, just set them all

p=0
eval "
for a in $abi
do eval \$a
eval \"
case \\\$LD_LIBRARY\${v}_PATH: in
\\\$d/dyn/lib:*)
;;
*) x=\\\$LD_LIBRARY\${v}_PATH
case \\\$x in
''|:*) ;;
*) x=:\\\$x ;;
case $action in
make) # ... but not while building; otherwise, if $SHELL is a dynamically
# linked ksh binary, it may link against our preinstalled libraries
;;
*) eval "
for a in $abi
do eval \$a
eval \"
case \\\$LD_LIBRARY\${v}_PATH: in
\\\$d/dyn/lib:*)
;;
*) x=\\\$LD_LIBRARY\${v}_PATH
case \\\$x in
''|:*) ;;
*) x=:\\\$x ;;
esac
LD_LIBRARY\${v}_PATH=\$d/dyn/lib\\\$x
export LD_LIBRARY\${v}_PATH
p=1
;;
esac
LD_LIBRARY\${v}_PATH=\$d/dyn/lib\\\$x
export LD_LIBRARY\${v}_PATH
p=1
\"
done
"

case $LD_LIBRARY_PATH in
'') ;;
*) for d in $lib
do case $HOSTTYPE in
*64) if test -d ${d}64
then d=${d}64
fi
;;
esac
\"
done
"
case $LD_LIBRARY_PATH in
'') ;;
*) for d in $lib
do case $HOSTTYPE in
*64) if test -d ${d}64
then d=${d}64
fi
;;
esac
case :$LD_LIBRARY_PATH: in
*:$d:*) ;;
*) if test -d $d
then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$d
p=1
fi
;;
case :$LD_LIBRARY_PATH: in
*:$d:*) ;;
*) if test -d $d
then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$d
p=1
fi
;;
esac
done
;;
esac
case $p in
1) $show LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$show export LD_LIBRARY_PATH
export LD_LIBRARY_PATH
;;
esac
case $LIBPATH: in
$INSTALLROOT/dyn/bin:$INSTALLROOT/dyn/lib:*)
;;
*) case $LIBPATH in
'') LIBPATH=/usr/lib:/lib ;;
esac
done
;;
esac
case $p in
1) $show LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$show export LD_LIBRARY_PATH
export LD_LIBRARY_PATH
;;
esac
case $LIBPATH: in
$INSTALLROOT/dyn/bin:$INSTALLROOT/dyn/lib:*)
;;
*) case $LIBPATH in
'') LIBPATH=/usr/lib:/lib ;;
LIBPATH=$INSTALLROOT/dyn/bin:$INSTALLROOT/dyn/lib:$LIBPATH
$show LIBPATH=$LIBPATH
$show export LIBPATH
export LIBPATH
;;
esac
case $SHLIB_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) SHLIB_PATH=$INSTALLROOT/dyn/lib${SHLIB_PATH:+:$SHLIB_PATH}
$show SHLIB_PATH=$SHLIB_PATH
$show export SHLIB_PATH
export SHLIB_PATH
;;
esac
case $DYLD_LIBRARY_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) DYLD_LIBRARY_PATH=$INSTALLROOT/dyn/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}
$show DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
$show export DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH
;;
esac
case $_RLD_ROOT in
$INSTALLROOT/arch*) ;;
':') _RLD_ROOT=$INSTALLROOT/arch:/ ;;
/|*:/) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT ;;
*) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT:/ ;;
esac
$show _RLD_ROOT=$_RLD_ROOT
$show export _RLD_ROOT
export _RLD_ROOT
# Haiku
case $LIBRARY_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) LIBRARY_PATH=$INSTALLROOT/dyn/lib${LIBRARY_PATH:+:$LIBRARY_PATH}
$show LIBRARY_PATH=$LIBRARY_PATH
$show export LIBRARY_PATH
export LIBRARY_PATH
;;
esac
LIBPATH=$INSTALLROOT/dyn/bin:$INSTALLROOT/dyn/lib:$LIBPATH
$show LIBPATH=$LIBPATH
$show export LIBPATH
export LIBPATH
;;
esac
case $SHLIB_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) SHLIB_PATH=$INSTALLROOT/dyn/lib${SHLIB_PATH:+:$SHLIB_PATH}
$show SHLIB_PATH=$SHLIB_PATH
$show export SHLIB_PATH
export SHLIB_PATH
;;
esac
case $DYLD_LIBRARY_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) DYLD_LIBRARY_PATH=$INSTALLROOT/dyn/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}
$show DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
$show export DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH
;;
esac
case $_RLD_ROOT in
$INSTALLROOT/arch*) ;;
':') _RLD_ROOT=$INSTALLROOT/arch:/ ;;
/|*:/) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT ;;
*) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT:/ ;;
esac
$show _RLD_ROOT=$_RLD_ROOT
$show export _RLD_ROOT
export _RLD_ROOT
# Haiku
case $LIBRARY_PATH: in
$INSTALLROOT/dyn/lib:*)
;;
*) LIBRARY_PATH=$INSTALLROOT/dyn/lib${LIBRARY_PATH:+:$LIBRARY_PATH}
$show LIBRARY_PATH=$LIBRARY_PATH
$show export LIBRARY_PATH
export LIBRARY_PATH
;;
esac

Expand Down
7 changes: 0 additions & 7 deletions src/cmd/INIT/mamake.c
Original file line number Diff line number Diff line change
Expand Up @@ -1294,13 +1294,6 @@ static int execute(char *s)
if (pid == 0)
{ /* child */
report(-5, s, "exec", 0);
/*
* $SHELL or /bin/sh may be an old version of ksh that cannot use
* a freshly built copy of libast due to ABI changes. To ensure
* the build doesn't prematurely fail with an undefined symbol error
* LD_LIBRARY_PATH is unset before the shell is invoked.
*/
unsetenv("LD_LIBRARY_PATH");
execl(state.shell, "sh", "-c", s, (char*)0);
if (errno == ENOENT)
exit(127);
Expand Down

0 comments on commit 68f417a

Please sign in to comment.