Compare commits

...

2 Commits

  1. 14
      posix/maketi
  2. 10
      posix/payload

@ -27,7 +27,7 @@ getlibs ()
readelf -d "$1" |
grep NEEDED |
awk '{print $5}' |
sed s/\\[/\ / | sed s/\\]/\ / > "$tmplist"
sed s/\\[// | sed s/\\]// > "$tmplist"
# While there are more dependencies
while [ "$(cat "$tmplist")" ]; do
@ -51,7 +51,7 @@ getlibs ()
readelf -d "$f" |
grep NEEDED |
awk '{print $5}' |
sed s/\\[/\ / | sed s/\\]/\ / >> "$tmpfile"
sed s/\\[// | sed s/\\]// >> "$tmpfile"
fi
done
sort -u "$tmpfile" > "$tmplist"
@ -81,7 +81,7 @@ if ! [ -e "$WORKDIR"/id ]; then
die 'id file not present'
fi
if ls -1 "$WORKDIR"/bin; then
if [ "$(ls -1 "$WORKDIR"/bin)" ]; then
for f in "$WORKDIR"/bin/*; do
if ! [ -x "$f" ]; then
die "$f is not executable"
@ -100,7 +100,7 @@ touch "$WORKDIR"/env
# TODO: add usage and error checking
DIRNAME="$WORKDIR"/"$(head -1 "$WORKDIR"/id | awk '{print $1}')"
echo "Fetching binary dependencies..."
echo "Fetching dependencies..."
if [ -s "$WORKDIR"/deps ]; then
while read -r d; do
( IFS=:
@ -111,7 +111,7 @@ if [ -s "$WORKDIR"/deps ]; then
done < "$tmplist"
fi
echo "Fetching dependencies and stripping binaries..."
echo "Fetching libraries and stripping binaries..."
# TODO: get al binary dependencies from deps file
# Get all dependencies and strip them
for b in "$WORKDIR"/bin/*; do
@ -151,10 +151,10 @@ numsize="$(echo "$size" | wc -c)"
normsize="$((size - (strsize - numsize) + 1))"
sed s/BYTES/"$normsize"/ tpp > tpr
cat tpr "$DIRNAME".tar.lz4 > "$DIRNAME".ti
cat tpr "$DIRNAME".tar.lz4 > "$DIRNAME".tin
echo "Cleaning up..."
rm -f tpr tpp
chmod +x "$DIRNAME".ti
chmod +x "$DIRNAME".tin
rm -rf "$DIRNAME" "$DIRNAME".tar*

@ -1,6 +1,5 @@
#!/bin/sh -e
# TODO: verify checksum before extracting
# TODO: extract self without resolving to $0 because it doesn't resolve links
if [ -z "$XDG_CACHE_HOME" ]; then
@ -14,10 +13,16 @@ if ! [ -d "$destdir" ]; then
fi
if ! [ "$(head -n 1 "$destdir"/ID/checksum 2>/dev/null)" = 'SUM' ]; then
rm -rf "$destdir"/ID
tail -c +BYTES "$0" | lz4 -dc | tar -x -C "$destdir"
echo "SUM" > "$destdir"/ID/checksum
fi
binname="$(basename "$0")"
if echo "$binname" | grep -q \.tin$; then
binname="$(echo "$binname" | sed s/\.tin//)"
fi
ORIGIN="$destdir"/ID
LD_LIBRARY_PATH="$ORIGIN/lib"
PATH="$ORIGIN/bin":$PATH
@ -27,5 +32,4 @@ export PATH
# export LD_DEBUG='libs'
# TODO: use $0 instead
exec "$destdir"/ID/bin/"$(basename "$1")"
exec "$destdir"/ID/bin/"$binname" "$@"

Loading…
Cancel
Save