2023-07-03 13:24:45 +03:00
|
|
|
#!/usr/bin/env ash
|
|
|
|
# shellcheck shell=dash
|
|
|
|
|
|
|
|
WORKDIR=$(pwd)
|
|
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
dep () {
|
2023-07-20 11:42:58 +03:00
|
|
|
if ! which "$1" 2>/dev/null
|
|
|
|
then
|
|
|
|
echo "$1 not found"
|
|
|
|
exit 1
|
|
|
|
fi
|
2023-07-03 13:24:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
clone () {
|
|
|
|
git clone --single-branch --depth 1 "$1" "$2" || exit 2
|
|
|
|
}
|
|
|
|
|
|
|
|
cd_and_exec () {
|
|
|
|
old=$(pwd)
|
|
|
|
cd "$1" || exit 3
|
|
|
|
shift
|
|
|
|
"$@" || exit 4
|
|
|
|
cd "$old" || exit 3
|
|
|
|
}
|
|
|
|
|
|
|
|
try_exec () {
|
|
|
|
"$@"
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
title () {
|
2023-07-03 15:19:58 +03:00
|
|
|
# Newline, Bold text, $1, Normal text, Newline
|
|
|
|
printf '\n\033[1m%s\033[0m\n' "$1"
|
2023-07-03 13:24:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
title 'Checking dependencies...'
|
|
|
|
dep git
|
|
|
|
dep java
|
|
|
|
dep cargo
|
|
|
|
dep 7z
|
|
|
|
|
|
|
|
title 'Cloning repositories...'
|
|
|
|
[ -e backend ] || clone https://github.com/TeamPiped/Piped-Backend backend
|
|
|
|
[ -e reqwest4j ] || clone https://github.com/TeamPiped/reqwest4j reqwest4j
|
|
|
|
|
|
|
|
title 'Applying patches...'
|
2023-07-03 15:19:58 +03:00
|
|
|
if [ "$1" != "patched" ]
|
|
|
|
then
|
2023-07-04 12:56:10 +03:00
|
|
|
title 'Hint:'
|
|
|
|
echo "if you've already applied patches,"
|
|
|
|
echo "call this script specifying \"patched\" arg, i.e."
|
|
|
|
echo "./build.sh patched"
|
|
|
|
echo
|
|
|
|
|
2023-07-03 15:19:58 +03:00
|
|
|
cd_and_exec backend git apply ../backend.patch
|
|
|
|
cd_and_exec reqwest4j git apply ../reqwest4j.patch
|
2023-07-04 12:56:10 +03:00
|
|
|
else
|
|
|
|
echo 'Already applied, skipping'
|
2023-07-03 15:19:58 +03:00
|
|
|
fi
|
2023-07-03 13:24:45 +03:00
|
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
export RUSTFLAGS="-C target-feature=-crt-static"
|
|
|
|
|
2023-07-04 12:23:53 +03:00
|
|
|
title 'Building reqwest-jni'
|
|
|
|
cd_and_exec reqwest4j/reqwest-jni cargo build --release
|
|
|
|
|
|
|
|
title 'Building reqwest4j without Rust library...'
|
2023-07-03 13:24:45 +03:00
|
|
|
cd_and_exec reqwest4j ./gradlew shadowJar
|
|
|
|
cd_and_exec reqwest4j ./gradlew --stop
|
|
|
|
|
|
|
|
|
|
|
|
# ---
|
2023-07-04 12:23:53 +03:00
|
|
|
title 'Adding built libreqwest_jni into reqwest4j JAR...'
|
2023-07-03 13:24:45 +03:00
|
|
|
|
2023-07-04 12:56:10 +03:00
|
|
|
title '--Copying files'
|
|
|
|
|
2023-07-04 12:23:53 +03:00
|
|
|
# Copy JAR into workdir
|
2023-07-03 13:24:45 +03:00
|
|
|
REQ4J_NAME="reqwest4j.jar"
|
|
|
|
REQ4J="$WORKDIR/$REQ4J_NAME"
|
2023-07-03 15:05:05 +03:00
|
|
|
|
2023-07-03 13:24:45 +03:00
|
|
|
cd_and_exec reqwest4j/build/libs \
|
|
|
|
find . -maxdepth 1 -name 'reqwest4j-*-all.jar' -exec \
|
|
|
|
cp {} "$REQ4J" \;
|
|
|
|
|
2023-07-04 12:23:53 +03:00
|
|
|
# Copy built reqwest-jni into workdir
|
|
|
|
REQJNI_NAME="libreqwest.so"
|
|
|
|
REQJNI="$WORKDIR/$REQJNI_NAME"
|
2023-07-04 12:56:10 +03:00
|
|
|
|
2023-07-04 12:23:53 +03:00
|
|
|
cd_and_exec reqwest4j/reqwest-jni/target/release \
|
|
|
|
cp libreqwest_jni.so "$REQJNI"
|
|
|
|
|
|
|
|
# Create JAR native libraries tree
|
2023-07-04 12:56:10 +03:00
|
|
|
title '--Creating libraries directory tree'
|
2023-07-04 12:23:53 +03:00
|
|
|
NATIVES="META-INF/natives/linux/x86_64"
|
|
|
|
mkdir -p "$NATIVES"
|
|
|
|
|
|
|
|
# Move reqwest-jni to native libraries directory
|
2023-07-04 12:56:10 +03:00
|
|
|
title '--Moving libreqwest'
|
2023-07-04 12:23:53 +03:00
|
|
|
mv "$REQJNI" "$NATIVES/$REQJNI_NAME"
|
|
|
|
|
|
|
|
# Add native libraries into JAR
|
2023-07-04 12:56:10 +03:00
|
|
|
title '--Injecting libraries directory into reqwest4j JAR'
|
2023-07-04 12:23:53 +03:00
|
|
|
7z u "$REQ4J" META-INF
|
|
|
|
|
|
|
|
# Clean up
|
2023-07-04 12:56:10 +03:00
|
|
|
title '--Cleaning up'
|
2023-07-04 12:23:53 +03:00
|
|
|
rm -rf META-INF
|
|
|
|
rm -f "$REQJNI"
|
|
|
|
|
2023-07-03 13:24:45 +03:00
|
|
|
|
|
|
|
# ---
|
2023-07-04 12:23:53 +03:00
|
|
|
title 'Adding reqwest4j JAR into Piped sources...'
|
2023-07-03 15:07:17 +03:00
|
|
|
cd_and_exec backend mkdir -p libs
|
2023-07-03 13:24:45 +03:00
|
|
|
cd_and_exec backend/libs mv "$REQ4J" ./
|
|
|
|
|
|
|
|
title 'Building Piped...'
|
|
|
|
cd_and_exec backend ./gradlew shadowJar
|
|
|
|
cd_and_exec backend ./gradlew --stop
|
|
|
|
|
|
|
|
|
|
|
|
# ---
|
|
|
|
title 'Copying Piped JAR...'
|
|
|
|
cd_and_exec backend/build/libs \
|
|
|
|
find . -maxdepth 1 -name 'piped-*-all.jar' -exec \
|
|
|
|
cp {} "$WORKDIR/piped.jar" \;
|
|
|
|
|
|
|
|
title 'Copying config...'
|
|
|
|
cd_and_exec backend cp config.properties "$WORKDIR"
|
|
|
|
|
|
|
|
title 'Cleaning up...'
|
|
|
|
rm -rf backend reqwest4j
|
|
|
|
|
|
|
|
|
|
|
|
# ---
|
2023-07-04 12:56:10 +03:00
|
|
|
echo
|
2023-07-03 13:27:16 +03:00
|
|
|
echo '*** ************** ***'
|
|
|
|
echo '*** DONE ***'
|
|
|
|
echo '*** ************** ***'
|
|
|
|
|
2023-07-03 13:24:45 +03:00
|
|
|
title 'You need these files:'
|
2023-07-03 13:27:16 +03:00
|
|
|
|
2023-07-03 13:24:45 +03:00
|
|
|
for f in "piped.jar" "config.properties"
|
|
|
|
do
|
|
|
|
echo " $(readlink -f "$f")"
|
|
|
|
done
|