From dcea5363c695620ec358f95fc95124b225095910 Mon Sep 17 00:00:00 2001 From: Zachary Brown Date: Mon, 27 Nov 2023 15:03:38 -0800 Subject: [PATCH] Add systemd init files to CLI-only Linux packages (#16866) --- build_scripts/assets/systemd/__init__.py | 0 .../assets/systemd/chia-crawler@.service | 16 ++++++++++++++++ .../assets/systemd/chia-daemon@.service | 16 ++++++++++++++++ .../systemd/chia-data-layer-http@.service | 17 +++++++++++++++++ .../assets/systemd/chia-data-layer@.service | 17 +++++++++++++++++ .../assets/systemd/chia-farmer@.service | 16 ++++++++++++++++ .../assets/systemd/chia-full-node@.service | 16 ++++++++++++++++ .../assets/systemd/chia-harvester@.service | 16 ++++++++++++++++ .../assets/systemd/chia-introducer@.service | 16 ++++++++++++++++ .../assets/systemd/chia-seeder@.service | 16 ++++++++++++++++ .../assets/systemd/chia-timelord@.service | 16 ++++++++++++++++ .../assets/systemd/chia-wallet@.service | 17 +++++++++++++++++ build_scripts/build_linux_deb-2-installer.sh | 2 ++ build_scripts/build_linux_rpm-2-installer.sh | 2 ++ 14 files changed, 183 insertions(+) create mode 100644 build_scripts/assets/systemd/__init__.py create mode 100644 build_scripts/assets/systemd/chia-crawler@.service create mode 100644 build_scripts/assets/systemd/chia-daemon@.service create mode 100644 build_scripts/assets/systemd/chia-data-layer-http@.service create mode 100644 build_scripts/assets/systemd/chia-data-layer@.service create mode 100644 build_scripts/assets/systemd/chia-farmer@.service create mode 100644 build_scripts/assets/systemd/chia-full-node@.service create mode 100644 build_scripts/assets/systemd/chia-harvester@.service create mode 100644 build_scripts/assets/systemd/chia-introducer@.service create mode 100644 build_scripts/assets/systemd/chia-seeder@.service create mode 100644 build_scripts/assets/systemd/chia-timelord@.service create mode 100644 build_scripts/assets/systemd/chia-wallet@.service diff --git a/build_scripts/assets/systemd/__init__.py b/build_scripts/assets/systemd/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/build_scripts/assets/systemd/chia-crawler@.service b/build_scripts/assets/systemd/chia-crawler@.service new file mode 100644 index 000000000000..1d473d38448b --- /dev/null +++ b/build_scripts/assets/systemd/chia-crawler@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Crawler Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_crawler +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-daemon@.service b/build_scripts/assets/systemd/chia-daemon@.service new file mode 100644 index 000000000000..d7601cd9984c --- /dev/null +++ b/build_scripts/assets/systemd/chia-daemon@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Daemon Service for %i +StopWhenUnneeded=true + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/daemon +ExecStartPost=/bin/bash -c '(while ! nc -z -v -w1 localhost 55400 2>/dev/null; do echo "Waiting for the daemon to listen on port 55400..."; sleep 1; done); sleep 1' +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-data-layer-http@.service b/build_scripts/assets/systemd/chia-data-layer-http@.service new file mode 100644 index 000000000000..1542799a5ade --- /dev/null +++ b/build_scripts/assets/systemd/chia-data-layer-http@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Chia Data Layer HTTP Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_data_layer_http +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 +TimeoutStopSec=15 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-data-layer@.service b/build_scripts/assets/systemd/chia-data-layer@.service new file mode 100644 index 000000000000..17a5efe11edf --- /dev/null +++ b/build_scripts/assets/systemd/chia-data-layer@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Chia Data Layer Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_data_layer +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 +TimeoutStopSec=15 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-farmer@.service b/build_scripts/assets/systemd/chia-farmer@.service new file mode 100644 index 000000000000..e09eaf64fb0e --- /dev/null +++ b/build_scripts/assets/systemd/chia-farmer@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Farmer Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_farmer +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-full-node@.service b/build_scripts/assets/systemd/chia-full-node@.service new file mode 100644 index 000000000000..964cea178be8 --- /dev/null +++ b/build_scripts/assets/systemd/chia-full-node@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Full Node Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_full_node +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-harvester@.service b/build_scripts/assets/systemd/chia-harvester@.service new file mode 100644 index 000000000000..eecbbb0fac84 --- /dev/null +++ b/build_scripts/assets/systemd/chia-harvester@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Harvester Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_harvester +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-introducer@.service b/build_scripts/assets/systemd/chia-introducer@.service new file mode 100644 index 000000000000..619ea390edc3 --- /dev/null +++ b/build_scripts/assets/systemd/chia-introducer@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Introducer Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_introducer +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-seeder@.service b/build_scripts/assets/systemd/chia-seeder@.service new file mode 100644 index 000000000000..fb8337d246ac --- /dev/null +++ b/build_scripts/assets/systemd/chia-seeder@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Seeder Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_seeder +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-timelord@.service b/build_scripts/assets/systemd/chia-timelord@.service new file mode 100644 index 000000000000..01140c8043b8 --- /dev/null +++ b/build_scripts/assets/systemd/chia-timelord@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Chia Timelord Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_timelord +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/assets/systemd/chia-wallet@.service b/build_scripts/assets/systemd/chia-wallet@.service new file mode 100644 index 000000000000..89f0deae6696 --- /dev/null +++ b/build_scripts/assets/systemd/chia-wallet@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Chia Wallet Service for %i +Requires=chia-daemon@%i.service +After=chia-daemon@%i.service + +[Service] +Type=simple +Environment=CHIA_ROOT=/home/%i/.chia/mainnet +ExecStart=/opt/chia/start_wallet +ExecStartPost=/bin/bash -c '(while ! nc -z -v -w1 localhost 9256 2>/dev/null; do echo "Waiting for the wallet to listen on port 9256..."; sleep 1; done); sleep 1' +User=%i +Group=%i +LimitNOFILE=1048576 +LimitNPROC=1048576 + +[Install] +WantedBy=multi-user.target diff --git a/build_scripts/build_linux_deb-2-installer.sh b/build_scripts/build_linux_deb-2-installer.sh index 86c50bb77ab0..f47540a2bec9 100644 --- a/build_scripts/build_linux_deb-2-installer.sh +++ b/build_scripts/build_linux_deb-2-installer.sh @@ -56,7 +56,9 @@ CLI_DEB_BASE="chia-blockchain-cli_$CHIA_INSTALLER_VERSION-1_$PLATFORM" mkdir -p "dist/$CLI_DEB_BASE/opt/chia" mkdir -p "dist/$CLI_DEB_BASE/usr/bin" mkdir -p "dist/$CLI_DEB_BASE/DEBIAN" +mkdir -p "dist/$CLI_DEB_BASE/etc/systemd/system" j2 -o "dist/$CLI_DEB_BASE/DEBIAN/control" assets/deb/control.j2 +cp assets/systemd/*.service "dist/$CLI_DEB_BASE/etc/systemd/system/" cp -r dist/daemon/* "dist/$CLI_DEB_BASE/opt/chia/" ln -s ../../opt/chia/chia "dist/$CLI_DEB_BASE/usr/bin/chia" diff --git a/build_scripts/build_linux_rpm-2-installer.sh b/build_scripts/build_linux_rpm-2-installer.sh index 8865fcb9881b..293d45cb0cc6 100644 --- a/build_scripts/build_linux_rpm-2-installer.sh +++ b/build_scripts/build_linux_rpm-2-installer.sh @@ -50,7 +50,9 @@ bash ./build_license_directory.sh CLI_RPM_BASE="chia-blockchain-cli-$CHIA_INSTALLER_VERSION-1.$REDHAT_PLATFORM" mkdir -p "dist/$CLI_RPM_BASE/opt/chia" mkdir -p "dist/$CLI_RPM_BASE/usr/bin" +mkdir -p "dist/$CLI_RPM_BASE/etc/systemd/system" cp -r dist/daemon/* "dist/$CLI_RPM_BASE/opt/chia/" +cp assets/systemd/*.service "dist/$CLI_RPM_BASE/etc/systemd/system/" ln -s ../../opt/chia/chia "dist/$CLI_RPM_BASE/usr/bin/chia" # This is built into the base build image