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
EXIT_CODE=0
SCRIPT_DIR=$(dirname "$0")
PATCHES_DIR="$SCRIPT_DIR/patches"
@ -10,6 +11,11 @@ fi
for patch_file in "$PATCHES_DIR"/*.sh; do
if [ -f "$patch_file" ] && [ -x "$patch_file" ]; then
"$patch_file"
"$patch_file" "$1"
if [ $? -eq 2 ]; then
EXIT_CODE=2
fi
fi
done
exit $EXIT_CODE

View File

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

View File

@ -1,16 +1,26 @@
#!/bin/bash
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)
if [ "$cargo_version" -gt "$LATEST_TESTED_VERSION" ]; then
if grep -q '#\[no_mangle\]' "$DEPENDENCY_PATH"; then
sed -i '/#\[no_mangle\]/d' "$DEPENDENCY_PATH"
echo "[+] patch-2 will be applied: remove unnecessary #[no_mangle] from the source code for sp-io"
else
echo "[+] patch-2 already applied: #[no_mangle] already removed from source code of sp-io"
fi
else
echo "[+] patch-2 not needed: rustc compiler version is compatible"
fi
[[ "$cargo_version" -le "$LATEST_TESTED_VERSION" ]] && { echo $SKIPPED_PATCH_OK; exit 0; }
SKIPPED_PATCH_OK="[+] patch-2 already applied: #[no_mangle] already removed from source code of sp-io"
! grep -q '#\[no_mangle\]' "$DEPENDENCY_PATH" && { echo $SKIPPED_PATCH_OK; exit 0; }
PATCH_MESSAGE="remove unnecessary #[no_mangle] from the source code for sp-io"
[[ -z "$1" ]] && { echo "[!] patch-2 could be applied: $PATCH_MESSAGE"; exit 2; }
echo "[+] patch-2 will be applied: $PATCH_MESSAGE"
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
GCC_MAJOR=$(gcc -dumpversion | cut -d. -f1)
if [ "$GCC_MAJOR" -gt "$LATEST_GCC_WORKING_VERSION" ]; then
if grep -q "config.flag(\"-include\").flag(\"cstdint\");" "$PATH_TO_BUILD_CONFIG"; then
echo "[+] patch-3 already applied: no need to change build config of librocksdb"
else
sed -i "/$(printf '%s' "config.compile(\"librocksdb.a\");" | sed 's/[].[*^$\/]/\\&/g')/i \
SKIPPED_PATCH_OK="[+] patch-3 not needed: gcc version is good to compile without patch"
[[ "$GCC_MAJOR" -le "$LATEST_GCC_WORKING_VERSION" ]] && { echo $SKIPPED_PATCH_OK; exit 0; }
SKIPPED_PATCH_OK="[+] patch-3 already applied: no need to change build config of librocksdb"
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"
echo "[+] patch-3 will be applied: cstdint included for build config of librocksdb"
fi
else
echo "[+] patch-3 not needed: gcc version is good to compile without patch"
fi
echo "[+] patch-3 will be applied: $PATCH_MESSAGE"
exit 0

View File

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