fix starter and patch scripts

Signed-off-by: Uncle Stretch <uncle.stretch@ghostchain.io>
This commit is contained in:
Uncle Stretch 2026-02-07 15:35:23 +03:00
parent 4348580127
commit 6263c620ab
Signed by: str3tch
GPG Key ID: 84F3190747EE79AA
5 changed files with 62 additions and 44 deletions

View File

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
EXIT_CODE=0
SCRIPT_DIR=$(dirname "$0") SCRIPT_DIR=$(dirname "$0")
PATCHES_DIR="$SCRIPT_DIR/patches" PATCHES_DIR="$SCRIPT_DIR/patches"
@ -10,6 +11,11 @@ fi
for patch_file in "$PATCHES_DIR"/*.sh; do for patch_file in "$PATCHES_DIR"/*.sh; do
if [ -f "$patch_file" ] && [ -x "$patch_file" ]; then if [ -f "$patch_file" ] && [ -x "$patch_file" ]; then
"$patch_file" "$patch_file" "$1"
if [ $? -eq 2 ]; then
EXIT_CODE=2
fi
fi fi
done done
exit $EXIT_CODE

View File

@ -1,25 +1,26 @@
#!/bin/bash #!/bin/bash
SERVICE_NAME="${1:-ghost-node.service}" SERVICE_NAME="${2:-ghost-node.service}"
if [[ "$SERVICE_NAME" != *.service ]]; then if [[ "$SERVICE_NAME" != *.service ]]; then
SERVICE_NAME="${SERVICE_NAME}.service" SERVICE_NAME="${SERVICE_NAME}.service"
fi fi
SERVICE_FULL_PATH="/etc/systemd/system/$SERVICE_NAME" SERVICE_FULL_PATH="/etc/systemd/system/$SERVICE_NAME"
if [[ -e "$SERVICE_FULL_PATH" ]]; then SKIPPED_NO_SERVICE="[-] patch-1 skipped: no serivce found at $SERVICE_FULL_PATH"
NETWORK_ONLINE_EXISTS=$(grep -Fx "After=network-online.target" "$SERVICE_FULL_PATH") [[ ! -e "$SERVICE_FULL_PATH" ]] && { echo $SKIPPED_NO_SERVICE; exit 1; }
NETWORK_EXISTS=$(grep -Fx "After=network.target" "$SERVICE_FULL_PATH")
if [[ -z "$NETWORK_ONLINE_EXISTS" && -n "$NETWORK_EXISTS" ]] NETWORK_ONLINE_EXISTS=$(grep -Fx "After=network-online.target" "$SERVICE_FULL_PATH")
then NETWORK_EXISTS=$(grep -Fx "After=network.target" "$SERVICE_FULL_PATH")
echo "[+] patch-1 will be applied: missing network-online.target dependency in $SERVICE_FULL_PATH, trying to replace"
sudo sed -i "s/After=network.target/After=network-online.target\nRequires=network-online.target/g" "$SERVICE_FULL_PATH" SKIPPED_SERVICE_OK="[+] patch-1 already applied: network-online.target is set correctly for $SERVICE_FULL_PATH"
echo "sudo systemctl daemon-reload" [[ ! (-z "$NETWORK_ONLINE_EXISTS" && -n "$NETWORK_EXISTS") ]] && { echo $SKIPPED_SERVICE_OK; exit 0; }
echo "sudo systemctl restart $SERVICE_NAME"
else PATCH_MESSAGE="missing network-online.target dependency in $SERVICE_FULL_PATH"
echo "[+] patch-1 already applied: network-online.target is set correctly for $SERVICE_FULL_PATH" [[ -z "$1" ]] && { echo "[!] patch-1 could be applied: $PATCH_MESSAGE"; exit 2; }
fi
else echo "[+] patch-1 will be applied: $PATCH_MESSAGE"
echo "[-] patch-1 skipped: no serivce found at $SERVICE_FULL_PATH" sudo sed -i "s/After=network.target/After=network-online.target\nRequires=network-online.target/g" "$SERVICE_FULL_PATH"
fi echo "sudo systemctl daemon-reload"
echo "sudo systemctl restart $SERVICE_NAME"
exit 0

View File

@ -1,16 +1,26 @@
#!/bin/bash #!/bin/bash
LATEST_TESTED_VERSION=83 LATEST_TESTED_VERSION=83
DEPENDENCY_PATH=~/.local/share/cargo/git/checkouts/polkadot-sdk-dee0edd6eefa0594/b401690/substrate/primitives/io/src/lib.rs MANIFEST_PATH=$(cargo metadata --format-version 1 | python3 -c "
import sys,json
data = json.load(sys.stdin)
for pkg in data['packages']:
if pkg['name'] == 'sp-io':
print(pkg['manifest_path'])
break
")
DEPENDENCY_PATH="${MANIFEST_PATH%Cargo.toml}src/lib.rs"
SKIPPED_PATCH_OK="[+] patch-2 not needed: rustc compiler version is compatible"
cargo_version=$(cargo --version | cut -d'.' -f2) cargo_version=$(cargo --version | cut -d'.' -f2)
if [ "$cargo_version" -gt "$LATEST_TESTED_VERSION" ]; then [[ "$cargo_version" -le "$LATEST_TESTED_VERSION" ]] && { echo $SKIPPED_PATCH_OK; exit 0; }
if grep -q '#\[no_mangle\]' "$DEPENDENCY_PATH"; then
sed -i '/#\[no_mangle\]/d' "$DEPENDENCY_PATH" SKIPPED_PATCH_OK="[+] patch-2 already applied: #[no_mangle] already removed from source code of sp-io"
echo "[+] patch-2 will be applied: remove unnecessary #[no_mangle] from the source code for sp-io" ! grep -q '#\[no_mangle\]' "$DEPENDENCY_PATH" && { echo $SKIPPED_PATCH_OK; exit 0; }
else
echo "[+] patch-2 already applied: #[no_mangle] already removed from source code of sp-io" PATCH_MESSAGE="remove unnecessary #[no_mangle] from the source code for sp-io"
fi [[ -z "$1" ]] && { echo "[!] patch-2 could be applied: $PATCH_MESSAGE"; exit 2; }
else
echo "[+] patch-2 not needed: rustc compiler version is compatible" echo "[+] patch-2 will be applied: $PATCH_MESSAGE"
fi sed -i '/#\[no_mangle\]/d' "$DEPENDENCY_PATH"
exit 0

View File

@ -4,14 +4,16 @@ LATEST_GCC_WORKING_VERSION=14
PATH_TO_BUILD_CONFIG=~/.local/share/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/librocksdb-sys-0.11.0+8.1.1/build.rs PATH_TO_BUILD_CONFIG=~/.local/share/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/librocksdb-sys-0.11.0+8.1.1/build.rs
GCC_MAJOR=$(gcc -dumpversion | cut -d. -f1) GCC_MAJOR=$(gcc -dumpversion | cut -d. -f1)
if [ "$GCC_MAJOR" -gt "$LATEST_GCC_WORKING_VERSION" ]; then SKIPPED_PATCH_OK="[+] patch-3 not needed: gcc version is good to compile without patch"
if grep -q "config.flag(\"-include\").flag(\"cstdint\");" "$PATH_TO_BUILD_CONFIG"; then [[ "$GCC_MAJOR" -le "$LATEST_GCC_WORKING_VERSION" ]] && { echo $SKIPPED_PATCH_OK; exit 0; }
echo "[+] patch-3 already applied: no need to change build config of librocksdb"
else SKIPPED_PATCH_OK="[+] patch-3 already applied: no need to change build config of librocksdb"
sed -i "/$(printf '%s' "config.compile(\"librocksdb.a\");" | sed 's/[].[*^$\/]/\\&/g')/i \ grep -q "config.flag(\"-include\").flag(\"cstdint\");" "$PATH_TO_BUILD_CONFIG" && { echo $SKIPPED_PATCH_OK; exit 0; }
PATCH_MESSAGE="include cstdint for build config of librocksdb"
[[ -z "$1" ]] && { echo "[!] patch-3 could be applied: $PATCH_MESSAGE"; exit 2; }
sed -i "/$(printf '%s' "config.compile(\"librocksdb.a\");" | sed 's/[].[*^$\/]/\\&/g')/i \
if !target.contains(\"windows\") {\n config.flag(\"-include\").flag(\"cstdint\");\n }" "$PATH_TO_BUILD_CONFIG" if !target.contains(\"windows\") {\n config.flag(\"-include\").flag(\"cstdint\");\n }" "$PATH_TO_BUILD_CONFIG"
echo "[+] patch-3 will be applied: cstdint included for build config of librocksdb" echo "[+] patch-3 will be applied: $PATCH_MESSAGE"
fi exit 0
else
echo "[+] patch-3 not needed: gcc version is good to compile without patch"
fi

View File

@ -82,8 +82,9 @@ extract_seed() {
upgrade_compiler_if_needed() { upgrade_compiler_if_needed() {
UPDATE_STATUS=$(rustup check 2>&1) UPDATE_STATUS=$(rustup check 2>&1)
if echo "$UPDATE_STATUS" | grep -q "Update available"; then "$SCRIPT_FOLDER"/patch.sh || PATCH_STATUS=$?
asd
if echo "$UPDATE_STATUS" | grep -q "Update available" || [ $PATCH_STATUS -eq 2 ]; then
echo "[+] clean all cache on the current system" echo "[+] clean all cache on the current system"
cargo install cargo-cache cargo install cargo-cache
cargo clean cargo clean
@ -107,9 +108,7 @@ upgrade_compiler_if_needed() {
cargo fetch cargo fetch
echo "[+] trying to apply all patches" echo "[+] trying to apply all patches"
"$SCRIPT_FOLDER"/patch.sh "$SCRIPT_FOLDER"/patch.sh apply
else
echo "[+] rustc compiler version is up to date"
fi fi
} }