2024-07-07 18:06:25 +02:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
#set -o pipefail # bash extension
|
2024-07-08 14:00:05 +02:00
|
|
|
#set -e
|
2024-07-07 18:06:25 +02:00
|
|
|
|
2024-07-08 14:25:20 +02:00
|
|
|
# Pack elf binary and it's dependencies into standalone executable
|
|
|
|
# License: GPLv2.0
|
|
|
|
|
2024-07-07 18:06:25 +02:00
|
|
|
# These vars will be modified automatically with sed
|
|
|
|
compress_flag=-z
|
|
|
|
|
|
|
|
unpack() {
|
|
|
|
filename=$1
|
|
|
|
echo "#!/usr/bin/env sh" > $filename
|
|
|
|
echo "#set -o pipefail # bash extension" >> $filename
|
2024-07-08 14:00:05 +02:00
|
|
|
echo "#set -e" >> $filename
|
2024-07-07 18:06:25 +02:00
|
|
|
echo "" >> $filename
|
|
|
|
echo "compress_flag=$compress_flag" >> $filename
|
|
|
|
echo "executable_run=$2" >> $filename
|
|
|
|
echo "tmp_parent=/tmp" >> $filename
|
2024-07-07 21:41:48 +02:00
|
|
|
echo 'if [ "$1" = "--packelf-extract" ] ; then' >> $filename
|
|
|
|
echo ' mkdir -p packelf-files' >> $filename
|
|
|
|
echo " echo \"Extracting to 'packelf-files'\"" >> $filename
|
|
|
|
echo " sed '1,/^#__END__\$/d' \"\$0\" | tar \$compress_flag -x -C packelf-files" >> $filename
|
|
|
|
echo " exit 0" >> $filename
|
|
|
|
echo "fi" >> $filename
|
2024-07-07 18:06:25 +02:00
|
|
|
echo 'mkdir -p "$tmp_parent"' >> $filename
|
|
|
|
echo 'unpack_dir=$(mktemp -d -p "$tmp_parent" || echo "$tmp_parent")' >> $filename
|
|
|
|
echo "sed '1,/^#__END__\$/d' \"\$0\" | tar \$compress_flag -x -C \"\$unpack_dir\"" >> $filename
|
2024-07-07 19:14:32 +02:00
|
|
|
echo "chmod 777 -R \"\$unpack_dir\"/* 2> /dev/null" >> $filename
|
|
|
|
echo '"$unpack_dir/$executable_run" "$@"' >> $filename
|
2024-07-07 18:06:25 +02:00
|
|
|
echo "rm -rf \$unpack_dir" >> $filename
|
|
|
|
echo "exit 0" >> $filename
|
|
|
|
echo "#__END__" >> $filename
|
|
|
|
}
|
|
|
|
|
|
|
|
pack() {
|
|
|
|
folder=$1
|
|
|
|
filename=$2
|
|
|
|
executable_run=$3
|
|
|
|
temp_file=$(mktemp)
|
|
|
|
current_dir=$(pwd)
|
|
|
|
if [ ! -d "$folder" ] ; then
|
|
|
|
echo "Folder $folder does not exist"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
echo "Creating package $2"
|
|
|
|
unpack $filename $executable_run
|
|
|
|
cd $folder
|
2024-07-08 14:25:20 +02:00
|
|
|
chmod 777 -R * 2> /dev/null
|
2024-07-07 18:06:25 +02:00
|
|
|
tar $compress_flag -c -f $temp_file *
|
2024-07-08 14:25:20 +02:00
|
|
|
cd $current_dir
|
2024-07-07 18:06:25 +02:00
|
|
|
cat $temp_file >> $filename
|
|
|
|
rm -rf $temp_file
|
|
|
|
echo "Created successfully"
|
|
|
|
}
|
|
|
|
|
|
|
|
help() {
|
|
|
|
echo "$0 <FOLDER> <FILENAME> <EXECUTABLE_RUN>"
|
|
|
|
exit 0
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ -z "$1" ] ; then
|
|
|
|
help
|
|
|
|
else
|
|
|
|
if [ -z "$2" ] ; then
|
|
|
|
help
|
|
|
|
else
|
|
|
|
if [ -z "$3" ] ; then
|
|
|
|
help
|
|
|
|
else
|
|
|
|
pack "$1" "$2" "$3"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|