From 34167b3341154e2f137d696e298a98f6d215c110 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:16:39 +0100 Subject: [PATCH 01/16] Update sqlite --- cross/sqlite/Makefile | 2 +- cross/sqlite/digests | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cross/sqlite/Makefile b/cross/sqlite/Makefile index 5b64750fa..11bcee118 100644 --- a/cross/sqlite/Makefile +++ b/cross/sqlite/Makefile @@ -1,5 +1,5 @@ PKG_NAME = sqlite-autoconf -PKG_VERS = 3340100 +PKG_VERS = 3360000 PKG_EXT = tar.gz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://www.sqlite.org/2021 diff --git a/cross/sqlite/digests b/cross/sqlite/digests index 0e5cd06d5..07c8f3f4d 100644 --- a/cross/sqlite/digests +++ b/cross/sqlite/digests @@ -1,3 +1,3 @@ -sqlite-autoconf-3340100.tar.gz SHA1 c20286e11fe5c2e3712ce74890e1692417de6890 -sqlite-autoconf-3340100.tar.gz SHA256 2a3bca581117b3b88e5361d0ef3803ba6d8da604b1c1a47d902ef785c1b53e89 -sqlite-autoconf-3340100.tar.gz MD5 14dca9d44fb6a57f6521c1ace4be5a68 +sqlite-autoconf-3360000.tar.gz SHA1 a4bcf9e951bfb9745214241ba08476299fc2dc1e +sqlite-autoconf-3360000.tar.gz SHA256 bd90c3eb96bee996206b83be7065c9ce19aef38c3f4fb53073ada0d0b69bbce3 +sqlite-autoconf-3360000.tar.gz MD5 f5752052fc5b8e1b539af86a3671eac7 From 15bb4fdb006dac8d37ebc76a544955cd24072e34 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:21:53 +0100 Subject: [PATCH 02/16] Fix github trigger --- .github/workflows/build.yml | 2 +- .github/workflows/docker.yml | 4 ++-- .github/workflows/lint.yml | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e8f27fffe..16a568485 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ on: - 'native/**' push: branches: - - "**" + - master paths: - 'spk/**' - 'cross/**' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2b3e6cc08..8d702616d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,7 +20,7 @@ on: jobs: docker: runs-on: ubuntu-latest - if: github.repository_owner == 'SynoCommunity' + if: github.repository_owner == 'Servarr' steps: - name: Set up QEMU uses: docker/setup-qemu-action@v1 @@ -40,4 +40,4 @@ jobs: if: ${{ github.event_name != 'pull_request' }} with: push: true - tags: ghcr.io/synocommunity/spksrc:latest + tags: ghcr.io/servarr/spksrc:latest diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 05b3fe3a4..b3da5ce1f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -5,6 +5,8 @@ on: paths-ignore: - "**.md" push: + branches: + - master paths-ignore: - "**.md" From 3ca504f644a5533524a13f572412f7b9150d435a Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:38:21 +0100 Subject: [PATCH 03/16] Run build inside privileged container --- .github/workflows/build.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 16a568485..0b2359b13 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,26 +103,35 @@ jobs: # We don't want to stop the build on errors. # Errors are reported in "Build Status" continue-on-error: true - uses: docker://ghcr.io/synocommunity/spksrc:latest - with: - entrypoint: ./.github/actions/build.sh env: ARCH_PACKAGES: ${{ needs.prepare.outputs.arch_packages }} NOARCH_PACKAGES: ${{ needs.prepare.outputs.noarch_packages }} PUBLISH: ${{ github.event.inputs.publish }} API_KEY: ${{ secrets.PUBLISH_API_KEY }} - # https://github.com/SynoCommunity/spksrc/wiki/Compile-and-build-rules GH_ARCH: ${{ matrix.arch }} BUILD_ERROR_FILE: /github/workspace/build_errors.txt BUILD_ERROR_LOGFILE: /github/workspace/build_log_errors.txt BUILD_UNSUPPORTED_FILE: /github/workspace/build_unsupported.txt BUILD_SUCCESS_FILE: /github/workspace/build_success.txt + run: | + /usr/bin/docker run --rm --privileged --workdir /github/workspace \ + -e ARCH_PACKAGES \ + -e NOARCH_PACKAGES \ + -e PUBLISH \ + -e API_KEY \ + -e GH_ARCH \ + -e BUILD_ERROR_FILE \ + -e BUILD_ERROR_LOGFILE \ + -e BUILD_UNSUPPORTED_FILE \ + -e BUILD_SUCCESS_FILE \ + -e INPUT_ENTRYPOINT -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true --entrypoint "./.github/actions/build.sh" -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/spksrc/spksrc":"/github/workspace" ghcr.io/servarr/spksrc:latest + - name: Build Status id: build_status # We need this status since we don't want to stop the build on errors. # Here we fail on build errors found in the build error file. - uses: docker://ghcr.io/synocommunity/spksrc:latest + uses: docker://ghcr.io/servarr/spksrc:latest with: entrypoint: ./.github/actions/build_status.sh env: From 27cdc67c1130ccfee13ea0499d3adb06f43514ee Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:39:10 +0100 Subject: [PATCH 04/16] Official radarr package --- Dockerfile | 22 +--------- Makefile | 8 ++-- cross/bubblewrap/Makefile | 21 +++++++++ cross/bubblewrap/PLIST | 1 + cross/bubblewrap/digests | 3 ++ cross/debian-stretch/Makefile | 45 ++++++++++++++++++++ cross/debian-stretch/PLIST.auto | 0 cross/radarr/Makefile | 6 +-- cross/radarr/PLIST | 2 +- cross/radarr/digests | 18 ++++---- cross/sqlite/PLIST | 1 - mk/spksrc.install.mk | 5 ++- mk/spksrc.plist.mk | 2 +- mk/spksrc.spk.mk | 7 ++- spk/radarr/Makefile | 41 ++++++++++++------ spk/radarr/src/service-setup.sh | 75 +++++++++++++-------------------- 16 files changed, 155 insertions(+), 102 deletions(-) create mode 100644 cross/bubblewrap/Makefile create mode 100644 cross/bubblewrap/PLIST create mode 100644 cross/bubblewrap/digests create mode 100644 cross/debian-stretch/Makefile create mode 100644 cross/debian-stretch/PLIST.auto diff --git a/Dockerfile b/Dockerfile index e49092cd0..f2eca28d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,8 +20,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ check \ cmake \ curl \ - cython \ - debootstrap \ + debootstrap \ + debuerreotype \ ed \ expect \ fakeroot \ @@ -51,18 +51,12 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ mercurial \ moreutils \ ncurses-dev \ - ninja-build \ - php \ pkg-config \ - python3 \ - python3-distutils \ rename \ rsync \ scons \ - subversion \ sudo \ swig \ - texinfo \ unzip \ xmlto \ zlib1g-dev && \ @@ -72,18 +66,6 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ adduser user sudo && \ echo "%users ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/users -# Install setuptools, wheel and pip for Python2 -RUN wget https://bootstrap.pypa.io/pip/2.7/get-pip.py -O - | python2 -# Install virtualenv and httpie for Python2 -# Use pip2 as default pip -> python3 -RUN pip2 install virtualenv httpie - -# Install setuptools, wheel and pip for Python3 -# Default pip -> python3 aware for native python wheels builds -RUN wget https://bootstrap.pypa.io/get-pip.py -O - | python3 -# Install meson cross-platform build system -RUN pip3 install meson==0.56.0 - # Volume pointing to spksrc sources VOLUME /spksrc diff --git a/Makefile b/Makefile index a7504a861..c4d4427ab 100644 --- a/Makefile +++ b/Makefile @@ -173,8 +173,8 @@ dsm-%: local.mk @grep -q "^DEFAULT_TC.*=.*$*.*" local.mk || sed -i "/^DEFAULT_TC =/s/$$/ $*/" local.mk setup-synocommunity: setup - @sed -i -e "s|PUBLISH_URL\s*=.*|PUBLISH_URL = https://api.synocommunity.com|" \ - -e "s|DISTRIBUTOR\s*=.*|DISTRIBUTOR = SynoCommunity|" \ - -e "s|DISTRIBUTOR_URL\s*=.*|DISTRIBUTOR_URL = https://synocommunity.com|" \ - -e "s|REPORT_URL\s*=.*|REPORT_URL = https://github.com/SynoCommunity/spksrc/issues|" \ + @sed -i -e "s|PUBLISH_URL\s*=.*|PUBLISH_URL = https://syno.servarr.com|" \ + -e "s|DISTRIBUTOR\s*=.*|DISTRIBUTOR = Servarr|" \ + -e "s|DISTRIBUTOR_URL\s*=.*|DISTRIBUTOR_URL = https://github.com/Servarr/spksrc|" \ + -e "s|REPORT_URL\s*=.*|REPORT_URL = https://github.com/Servarr/spksrc/issues|" \ local.mk diff --git a/cross/bubblewrap/Makefile b/cross/bubblewrap/Makefile new file mode 100644 index 000000000..68cf0e723 --- /dev/null +++ b/cross/bubblewrap/Makefile @@ -0,0 +1,21 @@ +PKG_NAME = bubblewrap +PKG_VERS = 0.6.1 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/containers/bubblewrap/releases/download/v$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/libcap + +HOMEPAGE = https://github.com/containers/bubblewrap +LICENSE = LGPLv2 + +GNU_CONFIGURE = 1 + +PRE_CONFIGURE_TARGET = bubblewrap_pre_configure + +include ../../mk/spksrc.cross-cc.mk + +.PHONY: bubblewrap_pre_configure +bubblewrap_pre_configure: + @$(RUN) ./autogen.sh $(REAL_CONFIGURE_ARGS) diff --git a/cross/bubblewrap/PLIST b/cross/bubblewrap/PLIST new file mode 100644 index 000000000..9b4025bce --- /dev/null +++ b/cross/bubblewrap/PLIST @@ -0,0 +1 @@ +bin:bin/bwrap diff --git a/cross/bubblewrap/digests b/cross/bubblewrap/digests new file mode 100644 index 000000000..62c814a53 --- /dev/null +++ b/cross/bubblewrap/digests @@ -0,0 +1,3 @@ +bubblewrap-0.6.1.tar.xz SHA1 97058281dcce2fcc749ea406abb0f99d9dacfaec +bubblewrap-0.6.1.tar.xz SHA256 9609c7dc162bc68abc29abfab566934fdca37520a15ed01b675adcf3a4303282 +bubblewrap-0.6.1.tar.xz MD5 a481e7981e9c00e6b3eeaa05e9c2dc07 diff --git a/cross/debian-stretch/Makefile b/cross/debian-stretch/Makefile new file mode 100644 index 000000000..edd6550e6 --- /dev/null +++ b/cross/debian-stretch/Makefile @@ -0,0 +1,45 @@ +PKG_NAME = debian-$(PKG_VERS) +PKG_VERS = stretch + +DISTRIB_DIR = $(BASE_DISTRIB_DIR)/$(PKG_NAME)-$(PKG_DIST_ARCH) + +PKG_EXT = tar.xz +PKG_DIST_NAME = rootfs.$(PKG_EXT) +PKG_DIST_SITE = https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +HOMEPAGE = https://www.debian.org/ +COMMENT = Debian base image +LICENSE = GPLv3 + +CHECKSUM_TARGET = debian_checksum +INSTALL_TARGET = debian_install + +EXTRACT_PATH=$(WORK_DIR)/rootfs + +PKG_DIST_ARCH_LIST = x64 armv7 arm64 + +include ../../mk/spksrc.archs.mk + +PKG_DIST_ARCH = x64 +PKG_SHA = e8e26161d828d035f0eb2f06a57c7972375a769a +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +PKG_SHA = dac1fb21147a9d20e3234a90a83269c9ea02588e +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +PKG_SHA = 0cb2f80d1b5fc71d626a65a80bde83dff6be6278 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: debian_install debian_checksum +debian_checksum: + +debian_install: + mkdir -p $(STAGING_INSTALL_PREFIX)/rootfs + tar -cf - -C $(WORK_DIR)/rootfs . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/rootfs + curl -so $(STAGING_INSTALL_PREFIX)/rootfs/debuerreotype-epoch https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim/rootfs.debuerreotype-epoch diff --git a/cross/debian-stretch/PLIST.auto b/cross/debian-stretch/PLIST.auto new file mode 100644 index 000000000..e69de29bb diff --git a/cross/radarr/Makefile b/cross/radarr/Makefile index 74062093d..7970cc967 100644 --- a/cross/radarr/Makefile +++ b/cross/radarr/Makefile @@ -1,5 +1,5 @@ PKG_NAME = Radarr -PKG_VERS = 3.2.2.5080 +PKG_VERS = 4.1.0.6175 PKG_EXT = tar.gz PKG_DIST_NAME = $(PKG_NAME).master.$(PKG_VERS).linux-core-$(PKG_DIST_ARCH).$(PKG_EXT) PKG_DIST_SITE = https://github.com/Radarr/Radarr/releases/download/v$(PKG_VERS) @@ -31,5 +31,5 @@ include ../../mk/spksrc.install-resources.mk .PHONY: radarr_install radarr_install: rm -rf $(WORK_DIR)/$(PKG_DIR)/Radarr.Update - mkdir -p $(STAGING_INSTALL_PREFIX)/share/$(PKG_DIR)/bin - tar -cf - -C $(WORK_DIR)/$(PKG_DIR) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/share/$(PKG_DIR)/bin + mkdir -p $(STAGING_INSTALL_PREFIX)/usr/lib/radarr/bin + tar -cf - -C $(WORK_DIR)/$(PKG_NAME) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/usr/lib/radarr/bin diff --git a/cross/radarr/PLIST b/cross/radarr/PLIST index 116044178..29cf9b5a2 100644 --- a/cross/radarr/PLIST +++ b/cross/radarr/PLIST @@ -1 +1 @@ -rsc:share/Radarr +rsc:usr/lib/radarr diff --git a/cross/radarr/digests b/cross/radarr/digests index 96a491c1c..4cf1062fe 100644 --- a/cross/radarr/digests +++ b/cross/radarr/digests @@ -1,9 +1,9 @@ -Radarr.master.3.2.2.5080.linux-core-x64.tar.gz SHA1 32515f7da6a77a1ec460da0d2c5f93c2f974b77e -Radarr.master.3.2.2.5080.linux-core-x64.tar.gz SHA256 2300fb3c5473ea68c48d44dba6a22da2bbc5301fe170c7118471bc5d01efd223 -Radarr.master.3.2.2.5080.linux-core-x64.tar.gz MD5 875c37b575a399acd0e3cd560b6e3d85 -Radarr.master.3.2.2.5080.linux-core-arm.tar.gz SHA1 6e88a900a9dc1d375541fb560f7625c8427c7c98 -Radarr.master.3.2.2.5080.linux-core-arm.tar.gz SHA256 7300be4d40037b08bdb10708a198eebb47d59fe868c119d51df3597257a39e11 -Radarr.master.3.2.2.5080.linux-core-arm.tar.gz MD5 128e56246e5666e9bc4f8a94860bee5e -Radarr.master.3.2.2.5080.linux-core-arm64.tar.gz SHA1 b58fa6c6266254fac25c030a0f26615693a37899 -Radarr.master.3.2.2.5080.linux-core-arm64.tar.gz SHA256 f4ebb4f0f2371cd40ee836bbe99324cf1d50954fa86aaf53afebea3d3d39c67c -Radarr.master.3.2.2.5080.linux-core-arm64.tar.gz MD5 baf77ea0f683d2a41f6dbca6d538015c +Radarr.master.4.1.0.6175.linux-core-arm.tar.gz SHA1 51e1f2364e0ac94a33cfce708e17acc153024672 +Radarr.master.4.1.0.6175.linux-core-arm.tar.gz SHA256 e89d16862c6a97ff3929c06547b2581f3df3cb29be6e26b54e0406774fee1693 +Radarr.master.4.1.0.6175.linux-core-arm.tar.gz MD5 203f522e60f5dc703da38453cf0c5c01 +Radarr.master.4.1.0.6175.linux-core-arm64.tar.gz SHA1 35a507acf0632895a9a6bbbed5edfa657c54aae6 +Radarr.master.4.1.0.6175.linux-core-arm64.tar.gz SHA256 39a088da778bf1b3057ff42e6446572ae6602419d44fe4365cc0a17d2a85e417 +Radarr.master.4.1.0.6175.linux-core-arm64.tar.gz MD5 70e740303f977d45a21228541cc0fca1 +Radarr.master.4.1.0.6175.linux-core-x64.tar.gz SHA1 ade14190eccef6058fc985a945f35d46dfc25dfd +Radarr.master.4.1.0.6175.linux-core-x64.tar.gz SHA256 de8c42060fa5c4df1e19a4b592620ad242f6a9434e2c784b9e430f98f959732c +Radarr.master.4.1.0.6175.linux-core-x64.tar.gz MD5 94bfaafa5cadd1a814d5129d7e8a7116 diff --git a/cross/sqlite/PLIST b/cross/sqlite/PLIST index eb822d6c6..a7d644d24 100644 --- a/cross/sqlite/PLIST +++ b/cross/sqlite/PLIST @@ -1,4 +1,3 @@ -bin:bin/sqlite3 lnk:lib/libsqlite3.so lnk:lib/libsqlite3.so.0 lib:lib/libsqlite3.so.0.8.6 diff --git a/mk/spksrc.install.mk b/mk/spksrc.install.mk index 18096e83e..57767f740 100644 --- a/mk/spksrc.install.mk +++ b/mk/spksrc.install.mk @@ -58,7 +58,7 @@ install_msg_target: $(PRE_INSTALL_PLIST): $(create_target_dir) @mkdir -p $(INSTALL_DIR)/$(INSTALL_PREFIX) $(INSTALL_DIR)/$(INSTALL_PREFIX_VAR) - find $(PLIST_SEARCH_PATH) \! -type d -printf '%P\n' | sed 's?^target/??g' | sort > $@ + find $(PLIST_SEARCH_PATH) -printf '%P\n' | sed 's?^target/??g' | sort > $@ pre_install_target: install_msg_target $(PRE_INSTALL_PLIST) @@ -71,7 +71,8 @@ install_destdir_target: $(PRE_INSTALL_TARGET) post_install_target: $(INSTALL_TARGET) $(INSTALL_PLIST): - find $(PLIST_SEARCH_PATH)/ \! -type d -printf '%P\n' | sed 's?^target/??g' | sort | \ + @echo Creating standard plist + find $(PLIST_SEARCH_PATH)/ -printf '%P\n' | sed 's?^target/??g' | sort | \ diff $(PRE_INSTALL_PLIST) - | grep '>' | sed 's?> ??g' > $@ install_correct_lib_files: $(INSTALL_PLIST) diff --git a/mk/spksrc.plist.mk b/mk/spksrc.plist.mk index 528a93908..4aa49dc49 100644 --- a/mk/spksrc.plist.mk +++ b/mk/spksrc.plist.mk @@ -21,7 +21,7 @@ cat_PLIST: # If there is a PLIST.auto file or if parent directory is kernel \ elif [ -f PLIST.auto -o $$(basename $$(dirname $$(pwd))) = "kernel" ] ; \ then \ - cat $(WORK_DIR)/$(PKG_NAME).plist.tmp | sort | while read -r file ; \ + cat $(WORK_DIR)/$(PKG_NAME).plist | sort | while read -r file ; \ do \ type=$$(file --brief "$(INSTALL_DIR)/$(INSTALL_PREFIX)/$$file" | cut -d , -f1) ; \ case $$type in \ diff --git a/mk/spksrc.spk.mk b/mk/spksrc.spk.mk index d16ff91c6..abfcf76eb 100644 --- a/mk/spksrc.spk.mk +++ b/mk/spksrc.spk.mk @@ -51,7 +51,12 @@ ARCH_SUFFIX = -$(SPK_TCVERS) FIRMWARE = $(OS_MIN_VER) endif -SPK_FILE_NAME = $(PACKAGES_DIR)/$(SPK_NAME)_$(SPK_NAME_ARCH)-$(SPK_TCVERS)_$(SPK_VERS)-$(SPK_REV).spk +SPK_REV = 9999 +ifdef GITHUB_RUN_NUMBER +SPK_REV = $(GITHUB_RUN_NUMBER) +endif + +SPK_FILE_NAME = $(PACKAGES_DIR)/$(SPK_NAME)_$(SPK_VERS)-spk$(SPK_REV)_$(SPK_NAME_ARCH)-dsm$(SPK_TCVERS).spk ##### diff --git a/spk/radarr/Makefile b/spk/radarr/Makefile index 6249980f9..3f36dace4 100644 --- a/spk/radarr/Makefile +++ b/spk/radarr/Makefile @@ -1,14 +1,14 @@ -SPK_NAME = radarr -SPK_VERS = $(shell date +%Y%m%d) -SPK_REV = 16 +SPK_NAME = radarr_official +SPK_CONFLICT = radarr +SPK_VERS = 4.1.0.6175 SPK_ICON = src/radarr.png -REQUIRED_MIN_DSM = 5.0 +REQUIRED_MIN_DSM = 6.0 # .NET is not supported on PPC, ARM5, ARM7L and x86 UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) -DEPENDS = cross/libstdc++ cross/libmediainfo cross/sqlite cross/radarr +DEPENDS = cross/radarr MAINTAINER = Team Radarr MAINTAINER_URL = https://radarr.video/ @@ -18,9 +18,9 @@ SUPPORTURL = https://radarr.video/\#support DESCRIPTION = Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available. STARTABLE = yes DISPLAY_NAME = Radarr -CHANGELOG = "Update Radarr to v3.0.2.4552 .NET Core" +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" -HOMEPAGE = https://radarr.video/ +HOMEPAGE = $(MAINTAINER_URL) LICENSE = GPLv3 SERVICE_USER = auto @@ -33,18 +33,31 @@ ADMIN_PORT = $(SERVICE_PORT) WIZARDS_DIR = src/wizard/ -POST_STRIP_TARGET = radarr_extra_install +POST_STRIP_TARGET = app_extra_install -# use alternate TMPDIR as /tmp might be too small. +# DSM prevents executing from /tmp in 7.1 USE_ALTERNATE_TMPDIR = 1 include ../../mk/spksrc.spk.mk -PACKAGE_VERSION = $(SPK_NAME_ARCH)-$(SPK_TCVERS)_$(SPK_VERS)-$(SPK_REV) -PACKAGE_AUTHOR = [Team Radarr](https://radarr.video) +ifeq ($(call version_lt, ${SPK_TCVERS}, 7.0),1) +DEPENDS += cross/bubblewrap cross/debian-stretch +app_extra_install: rootfs_install +else +DEPENDS += cross/sqlite cross/radarr +endif -.PHONY: radarr_extra_install -radarr_extra_install: +PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) +PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) + +.PHONY: app_extra_install rootfs_install + +rootfs_install: + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu57 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ + +app_extra_install: @install -m 755 -d $(STAGING_DIR)/app @install -m 644 src/config.xml $(STAGING_DIR)/app/config.xml - @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/share/Radarr/package_info + @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/usr/lib/radarr/package_info diff --git a/spk/radarr/src/service-setup.sh b/spk/radarr/src/service-setup.sh index 8ddc98117..08aaf0cbf 100644 --- a/spk/radarr/src/service-setup.sh +++ b/spk/radarr/src/service-setup.sh @@ -1,68 +1,51 @@ +APP_LOWER="radarr" +APP_UPPER="Radarr" -# Radarr service setup - -RADARR="${SYNOPKG_PKGDEST}/share/Radarr/bin/Radarr" +GROUP="sc-download" -# Radarr uses custom Config and PID directories -HOME_DIR="${SYNOPKG_PKGVAR}" -CONFIG_DIR="${SYNOPKG_PKGVAR}/.config" -PID_FILE="${CONFIG_DIR}/Radarr/radarr.pid" +USR_LIB="/usr/lib/${APP_LOWER}" +PID_FILE="${SYNOPKG_PKGVAR}/${APP_LOWER}.pid" -# Some have it stored in the root of package -LEGACY_CONFIG_DIR="${SYNOPKG_PKGDEST}/.config" +# Some versions include bwrap to create a chroot container with newer libraries. +# If the bwrap binary is in the package, use the chroot +BWRAP="${SYNOPKG_PKGDEST}/bin/bwrap" -GROUP="sc-download" -LEGACY_GROUP="sc-media" +if [ -f "${BWRAP}" ]; then + APP="${USR_LIB}/bin/${APP_UPPER}" + CONFIG_DIR="/var/lib/${APP_LOWER}" + SERVICE_COMMAND="${BWRAP} --bind ${SYNOPKG_PKGDEST}/rootfs / --proc /proc --dev /dev --bind ${SYNOPKG_PKGDEST}${USR_LIB} ${USR_LIB} --bind ${SYNOPKG_PKGVAR} ${CONFIG_DIR} --bind /volume1 /volume1 --setenv HOME ${SYNOPKG_PKGVAR} ${APP} --nobrowser --data=${CONFIG_DIR}" +else + APP="${SYNOPKG_PKGDEST}${USR_LIB}/bin/${APP_UPPER}" + SERVICE_COMMAND="env HOME=${SYNOPKG_PKGVAR} LD_LIBRARY_PATH=${SYNOPKG_PKGDEST}/lib ${APP} --nobrowser --data=${SYNOPKG_PKGVAR}" +fi -SERVICE_COMMAND="env HOME=${HOME_DIR} LD_LIBRARY_PATH=${SYNOPKG_PKGDEST}/lib ${RADARR}" SVC_BACKGROUND=y -service_postinst () +fix_permissions () { - # Move config.xml to .config - mkdir -p ${CONFIG_DIR}/Radarr - mv ${SYNOPKG_PKGDEST}/app/config.xml ${CONFIG_DIR}/Radarr/config.xml - if [ ${SYNOPKG_DSM_VERSION_MAJOR} -lt 7 ]; then - set_unix_permissions "${CONFIG_DIR}" + if [ -f "${BWRAP}" ]; then + chown root:root "${BWRAP}" + chmod u+s "${BWRAP}" + fi - # If nessecary, add user also to the old group before removing it - syno_user_add_to_legacy_group "${EFF_USER}" "${USER}" "${LEGACY_GROUP}" - syno_user_add_to_legacy_group "${EFF_USER}" "${USER}" "users" + set_unix_permissions "${SYNOPKG_PKGVAR}" fi } -service_preupgrade () +service_postinst () { - # We have to account for legacy folder in the root - # It should go, after the upgrade, into /var/.config/ - # The /var/ folder gets automatically copied by service-installer after this - if [ -d "${LEGACY_CONFIG_DIR}" ]; then - echo "Moving ${LEGACY_CONFIG_DIR} to ${INST_VAR}" - mv ${LEGACY_CONFIG_DIR} ${CONFIG_DIR} 2>&1 - else - # Create, in case it's missing for some reason - mkdir ${CONFIG_DIR} 2>&1 - fi + # Move config.xml to .config + mv ${SYNOPKG_PKGDEST}/app/config.xml ${SYNOPKG_PKGVAR} + + fix_permissions } service_postupgrade () { # Make Radarr do an update check on start to avoid possible Radarr # downgrade when synocommunity package is updated - touch ${CONFIG_DIR}/Radarr/update_required + touch ${SYNOPKG_PKGVAR}/update_required - if [ ${SYNOPKG_DSM_VERSION_MAJOR} -lt 7 ]; then - set_unix_permissions "${CONFIG_DIR}" - fi - - UPDATE_FROM_VERSION=${SYNOPKG_OLD_PKGVER%-*} - UPDATE_FROM_REV=${SYNOPKG_OLD_PKGVER##*-} - if [ ${UPDATE_FROM_REV} -lt 6 ]; then - # If backup was created before new-style packages - # new updates/backups will fail due to permissions (see #3185) - # fixed in #3190, i.e. radarr v20180303-6 - set_unix_permissions "/tmp/radarr_backup" - set_unix_permissions "/tmp/radarr_update" - fi + fix_permissions } From 69b6cd9bc4f993c14a315604ca5d7d55611f0bc6 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:39:10 +0100 Subject: [PATCH 05/16] Publish as GitHub release --- .github/workflows/build.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b2359b13..30eb44256 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,7 +6,7 @@ on: package: description: 'Package to build' required: true - default: 'syno-magnet' + default: 'radarr' publish: description: 'Publish to repository' required: false @@ -20,6 +20,7 @@ on: branches: - master paths: + - '.github/workflows/*' - 'spk/**' - 'cross/**' - 'native/**' @@ -144,6 +145,22 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: Packages for ${{ matrix.arch }} + name: ${{ matrix.arch }} path: packages/*.spk if-no-files-found: ignore + publish: + needs: build + if: github.ref == 'refs/heads/master' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Download artifact + uses: actions/download-artifact@v3 + + - name: Publish release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release create -d -p v$GITHUB_RUN_NUMBER --generate-notes --title "Servarr Synology Packages v$GITHUB_RUN_NUMBER" --target $GITHUB_SHA **/*.spk From d025c11771795a1dbe6c4345b1d46949d2116df3 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:39:10 +0100 Subject: [PATCH 06/16] Always build all packages --- .github/actions/prepare.sh | 21 ++------------------- .github/workflows/build.yml | 21 --------------------- 2 files changed, 2 insertions(+), 40 deletions(-) diff --git a/.github/actions/prepare.sh b/.github/actions/prepare.sh index 4cfad5d56..895660581 100755 --- a/.github/actions/prepare.sh +++ b/.github/actions/prepare.sh @@ -6,7 +6,6 @@ # # Functions: # - Evaluate all packages to build depending on files defined in ${GH_FILES}. -# - ffmpeg is moved to head of packages to built first if triggered by its own or a dependent. # - Referenced native and cross packages of the packages to build are added to the download list. set -o pipefail @@ -14,8 +13,8 @@ set -o pipefail echo "::group:: ---- find dependent packages" # filter for changes made in the spk directories and take unique package name (without spk folder) -SPK_TO_BUILD+=" " -SPK_TO_BUILD+=$(echo "${GH_FILES}" | tr ' ' '\n' | grep -oP "(spk)/\K[^\/]*" | sort -u | tr '\n' ' ') +GH_FILES=$(find -type f -printf '%P\n') +SPK_TO_BUILD=$(echo "${GH_FILES}" | tr ' ' '\n' | grep -oP "(spk)/\K[^\/]*" | sort -u | tr '\n' ' ') # filter for changes made in the cross and native directories and take unique package name (including cross or native folder) DEPENDENT_PACKAGES=$(echo "${GH_FILES}" | tr ' ' '\n' | grep -oP "(cross|native)/[^\/]*" | sort -u | tr '\n' ' ') @@ -49,22 +48,6 @@ fi # remove duplicate packages packages=$(printf %s "${SPK_TO_BUILD}" | tr ' ' '\n' | sort -u | tr '\n' ' ') - -# find all packages that depend on spk/ffmpeg is built before. -all_ffmpeg_packages=$(find spk/ -maxdepth 2 -mindepth 2 -name "Makefile" -exec grep -Ho "export FFMPEG_DIR" {} \; | grep -Po ".*spk/\K[^/]*" | sort | tr '\n' ' ') - -# if ffmpeg or one of its dependents is to build, ensure -# ffmpeg is first package in the list of packages to build. -for package in ${packages} -do - if [ "$(echo ffmpeg ${all_ffmpeg_packages} | grep -ow ${package})" != "" ]; then - packages_without_ffmpeg=$(echo "${packages}" | tr ' ' '\n' | grep -v "ffmpeg" | tr '\n' ' ') - packages="ffmpeg ${packages_without_ffmpeg}" - break; - fi -done - - # find all noarch packages all_noarch=$(find spk/ -maxdepth 2 -mindepth 2 -name "Makefile" -exec grep -Ho "override ARCH" {} \; | grep -Po ".*spk/\K[^/]*" | sort | tr '\n' ' ') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 30eb44256..1f0b29f66 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,10 +3,6 @@ name: Build on: workflow_dispatch: inputs: - package: - description: 'Package to build' - required: true - default: 'radarr' publish: description: 'Publish to repository' required: false @@ -40,26 +36,9 @@ jobs: fetch-depth: 0 persist-credentials: false - - name: Get changed files for pull request - if: github.event_name == 'pull_request' - id: getfile_pr - run: | - git diff --no-commit-id --name-only -r origin/master...${{github.event.pull_request.head.sha}} | xargs - echo "::set-output name=files::$(git diff --no-commit-id --name-only -r origin/master...${{github.event.pull_request.head.sha}} | xargs)" - - - name: Get changed files for push - if: github.event_name == 'push' - id: getfile - run: | - git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | xargs - echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | xargs)" - - name: Evaluate dependencies id: dependencies run: ./.github/actions/prepare.sh - env: - GH_FILES: ${{ steps.getfile.outputs.files }} ${{ steps.getfile_pr.outputs.files }} - SPK_TO_BUILD: ${{ github.event.inputs.package }} - name: Cache downloaded files uses: actions/cache@v3 From 92a1ce1efa5aa1eb2bcfe464e71cb0d92d700c91 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:39:10 +0100 Subject: [PATCH 07/16] Add qemu to build --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1f0b29f66..51555cefd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,6 +79,9 @@ jobs: path: distrib key: distrib-${{ github.run_id }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Build Package (based on changed files) # We don't want to stop the build on errors. # Errors are reported in "Build Status" From 59f417a09d9ac775c10d1ba2497e33c49beb30cb Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:23:38 +0100 Subject: [PATCH 08/16] Remove bubblewrap features not available on old syno kernels --- cross/bubblewrap/Makefile | 2 + ...R_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch | 296 ++++++++++++++++++ spk/radarr/Makefile | 7 +- 3 files changed, 304 insertions(+), 1 deletion(-) create mode 100644 cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch diff --git a/cross/bubblewrap/Makefile b/cross/bubblewrap/Makefile index 68cf0e723..2ef2a164a 100644 --- a/cross/bubblewrap/Makefile +++ b/cross/bubblewrap/Makefile @@ -14,6 +14,8 @@ GNU_CONFIGURE = 1 PRE_CONFIGURE_TARGET = bubblewrap_pre_configure +PATCHES_LEVEL = 1 + include ../../mk/spksrc.cross-cc.mk .PHONY: bubblewrap_pre_configure diff --git a/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch b/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch new file mode 100644 index 000000000..82567787d --- /dev/null +++ b/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch @@ -0,0 +1,296 @@ +From 2a9ffea35ca72aff2082450309864d4c5d6b383b Mon Sep 17 00:00:00 2001 +From: ta264 +Date: Thu, 5 May 2022 19:00:44 +0100 +Subject: [PATCH] Remove seccomp, PR_SET_NO_NEW_PRIVS, PR_SET_CHILD_SUBREAPER + +--- + bubblewrap.c | 171 +-------------------------------------------------- + 1 file changed, 2 insertions(+), 169 deletions(-) + +diff --git a/bubblewrap.c b/bubblewrap.c +index 2f2fca5..bca2b24 100644 +--- a/bubblewrap.c ++++ b/bubblewrap.c +@@ -31,9 +31,6 @@ + #include + #include + #include +-#include +-#include +-#include + + #include "utils.h" + #include "network.h" +@@ -84,12 +81,10 @@ int opt_block_fd = -1; + int opt_userns_block_fd = -1; + int opt_info_fd = -1; + int opt_json_status_fd = -1; +-int opt_seccomp_fd = -1; + const char *opt_sandbox_hostname = NULL; + char *opt_args_data = NULL; /* owned */ + int opt_userns_fd = -1; + int opt_userns2_fd = -1; +-int opt_pidns_fd = -1; + int next_perms = -1; + + #define CAP_TO_MASK_0(x) (1L << ((x) & 31)) +@@ -235,51 +230,6 @@ lock_file_new (const char *path) + return lock; + } + +-typedef struct _SeccompProgram SeccompProgram; +- +-struct _SeccompProgram +-{ +- struct sock_fprog program; +- SeccompProgram *next; +-}; +- +-DEFINE_LINKED_LIST (SeccompProgram, seccomp_program) +- +-static SeccompProgram * +-seccomp_program_new (int *fd) +-{ +- SeccompProgram *self = _seccomp_program_append_new (); +- cleanup_free char *data = NULL; +- size_t len; +- +- data = load_file_data (*fd, &len); +- +- if (data == NULL) +- die_with_error ("Can't read seccomp data"); +- +- close (*fd); +- *fd = -1; +- +- if (len % 8 != 0) +- die ("Invalid seccomp data, must be multiple of 8"); +- +- self->program.len = len / 8; +- self->program.filter = (struct sock_filter *) steal_pointer (&data); +- return self; +-} +- +-static void +-seccomp_programs_apply (void) +-{ +- SeccompProgram *program; +- +- for (program = seccomp_programs; program != NULL; program = program->next) +- { +- if (prctl (PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &program->program) != 0) +- die_with_error ("prctl(PR_SET_SECCOMP)"); +- } +-} +- + static void + usage (int ecode, FILE *out) + { +@@ -301,7 +251,6 @@ usage (int ecode, FILE *out) + " --unshare-cgroup-try Create new cgroup namespace if possible else continue by skipping it\n" + " --userns FD Use this user namespace (cannot combine with --unshare-user)\n" + " --userns2 FD After setup switch to this user namespace, only useful with --userns\n" +- " --pidns FD Use this user namespace (as parent namespace if using --unshare-pid)\n" + " --uid UID Custom uid in the sandbox (requires --unshare-user or --userns)\n" + " --gid GID Custom gid in the sandbox (requires --unshare-user or --userns)\n" + " --hostname NAME Custom hostname in the sandbox (requires --unshare-uts)\n" +@@ -329,8 +278,6 @@ usage (int ecode, FILE *out) + " --bind-data FD DEST Copy from FD to file which is bind-mounted on DEST\n" + " --ro-bind-data FD DEST Copy from FD to file which is readonly bind-mounted on DEST\n" + " --symlink SRC DEST Create symlink at DEST with target SRC\n" +- " --seccomp FD Load and use seccomp rules from FD (not repeatable)\n" +- " --add-seccomp FD Load and use seccomp rules from FD (repeatable)\n" + " --block-fd FD Block on FD until some data to read is available\n" + " --userns-block-fd FD Block on FD until the user namespace is ready\n" + " --info-fd FD Write information about the running container to FD\n" +@@ -592,8 +539,6 @@ do_init (int event_fd, pid_t initial_pid) + /* Optionally bind our lifecycle to that of the caller */ + handle_die_with_parent (); + +- seccomp_programs_apply (); +- + while (TRUE) + { + pid_t child; +@@ -1209,7 +1154,7 @@ setup_newroot (bool unshare_pid, + if (ensure_dir (dest, 0755) != 0) + die_with_error ("Can't mkdir %s", op->dest); + +- if (unshare_pid || opt_pidns_fd != -1) ++ if (unshare_pid) + { + /* Our own procfs */ + privileged_op (privileged_op_socket, +@@ -2123,50 +2068,6 @@ parse_args_recurse (int *argcp, + + opt_json_status_fd = the_fd; + +- argv += 1; +- argc -= 1; +- } +- else if (strcmp (arg, "--seccomp") == 0) +- { +- int the_fd; +- char *endptr; +- +- if (argc < 2) +- die ("--seccomp takes an argument"); +- +- if (seccomp_programs != NULL) +- die ("--seccomp cannot be combined with --add-seccomp-fd"); +- +- if (opt_seccomp_fd != -1) +- warn_only_last_option ("--seccomp"); +- +- the_fd = strtol (argv[1], &endptr, 10); +- if (argv[1][0] == 0 || endptr[0] != 0 || the_fd < 0) +- die ("Invalid fd: %s", argv[1]); +- +- opt_seccomp_fd = the_fd; +- +- argv += 1; +- argc -= 1; +- } +- else if (strcmp (arg, "--add-seccomp-fd") == 0) +- { +- int the_fd; +- char *endptr; +- +- if (argc < 2) +- die ("--add-seccomp-fd takes an argument"); +- +- if (opt_seccomp_fd != -1) +- die ("--add-seccomp-fd cannot be combined with --seccomp"); +- +- the_fd = strtol (argv[1], &endptr, 10); +- if (argv[1][0] == 0 || endptr[0] != 0 || the_fd < 0) +- die ("Invalid fd: %s", argv[1]); +- +- /* takes ownership of fd */ +- seccomp_program_new (&the_fd); +- + argv += 1; + argc -= 1; + } +@@ -2207,26 +2108,6 @@ parse_args_recurse (int *argcp, + + opt_userns2_fd = the_fd; + +- argv += 1; +- argc -= 1; +- } +- else if (strcmp (arg, "--pidns") == 0) +- { +- int the_fd; +- char *endptr; +- +- if (argc < 2) +- die ("--pidns takes an argument"); +- +- if (opt_pidns_fd != -1) +- warn_only_last_option ("--pidns"); +- +- the_fd = strtol (argv[1], &endptr, 10); +- if (argv[1][0] == 0 || endptr[0] != 0 || the_fd < 0) +- die ("Invalid fd: %s", argv[1]); +- +- opt_pidns_fd = the_fd; +- + argv += 1; + argc -= 1; + } +@@ -2569,10 +2450,6 @@ main (int argc, + /* Get the (optional) privileges we need */ + acquire_privs (); + +- /* Never gain any more privs during exec */ +- if (prctl (PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) +- die_with_error ("prctl(PR_SET_NO_NEW_PRIVS) failed"); +- + /* The initial code is run with high permissions + (i.e. CAP_SYS_ADMIN), so take lots of care. */ + +@@ -2724,7 +2601,7 @@ main (int argc, + clone_flags = SIGCHLD | CLONE_NEWNS; + if (opt_unshare_user) + clone_flags |= CLONE_NEWUSER; +- if (opt_unshare_pid && opt_pidns_fd == -1) ++ if (opt_unshare_pid) + clone_flags |= CLONE_NEWPID; + if (opt_unshare_net) + clone_flags |= CLONE_NEWNET; +@@ -2771,14 +2648,6 @@ main (int argc, + die_with_error ("Joining specified user namespace failed"); + } + +- /* Sometimes we have uninteresting intermediate pids during the setup, set up code to pass the real pid down */ +- if (opt_pidns_fd != -1) +- { +- /* Mark us as a subreaper, this way we can get exit status from grandchildren */ +- prctl (PR_SET_CHILD_SUBREAPER, 1, 0, 0, 0); +- create_pid_socketpair (intermediate_pids_sockets); +- } +- + pid = raw_clone (clone_flags, NULL); + if (pid == -1) + { +@@ -2868,31 +2737,6 @@ main (int argc, + return monitor_child (event_fd, pid, setup_finished_pipe[0]); + } + +- if (opt_pidns_fd > 0) +- { +- if (setns (opt_pidns_fd, CLONE_NEWPID) != 0) +- die_with_error ("Setting pidns failed"); +- +- /* fork to get the passed in pid ns */ +- fork_intermediate_child (); +- +- /* We might both have specified an --pidns *and* --unshare-pid, so set up a new child pid namespace under the specified one */ +- if (opt_unshare_pid) +- { +- if (unshare (CLONE_NEWPID)) +- die_with_error ("unshare pid ns"); +- +- /* fork to get the new pid ns */ +- fork_intermediate_child (); +- } +- +- /* We're back, either in a child or grandchild, so message the actual pid to the monitor */ +- +- close (intermediate_pids_sockets[0]); +- send_pid_on_socket (intermediate_pids_sockets[1]); +- close (intermediate_pids_sockets[1]); +- } +- + /* Child, in sandbox, privileged in the parent or in the user namespace (if --unshare-user). + * + * Note that for user namespaces we run as euid 0 during clone(), so +@@ -3113,13 +2957,6 @@ main (int argc, + close (opt_block_fd); + } + +- if (opt_seccomp_fd != -1) +- { +- assert (seccomp_programs == NULL); +- /* takes ownership of fd */ +- seccomp_program_new (&opt_seccomp_fd); +- } +- + umask (old_umask); + + new_cwd = "/"; +@@ -3212,10 +3049,6 @@ main (int argc, + if (!is_privileged) + set_ambient_capabilities (); + +- /* Should be the last thing before execve() so that filters don't +- * need to handle anything above */ +- seccomp_programs_apply (); +- + if (setup_finished_pipe[1] != -1) + { + char data = 0; +-- +2.25.1 + diff --git a/spk/radarr/Makefile b/spk/radarr/Makefile index 3f36dace4..6dcc43f08 100644 --- a/spk/radarr/Makefile +++ b/spk/radarr/Makefile @@ -40,8 +40,13 @@ USE_ALTERNATE_TMPDIR = 1 include ../../mk/spksrc.spk.mk +BWRAP_DEPENDS = cross/bubblewrap cross/debian-stretch + ifeq ($(call version_lt, ${SPK_TCVERS}, 7.0),1) -DEPENDS += cross/bubblewrap cross/debian-stretch +DEPENDS += $(BWRAP_DEPENDS) +app_extra_install: rootfs_install +else ifeq ($(SPK_NAME_ARCH), comcerto2k) +DEPENDS += $(BWRAP_DEPENDS) app_extra_install: rootfs_install else DEPENDS += cross/sqlite cross/radarr From e7a9e63dfabc48dec795163bc95e982d4b06e31c Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 4 May 2022 21:57:30 +0100 Subject: [PATCH 09/16] Use debian-bullseye rootfs --- cross/debian-bullseye/Makefile | 45 ++++++++++++++++++++++++++++++++ cross/debian-bullseye/PLIST.auto | 0 spk/radarr/Makefile | 4 +-- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 cross/debian-bullseye/Makefile create mode 100644 cross/debian-bullseye/PLIST.auto diff --git a/cross/debian-bullseye/Makefile b/cross/debian-bullseye/Makefile new file mode 100644 index 000000000..87fb6a8ea --- /dev/null +++ b/cross/debian-bullseye/Makefile @@ -0,0 +1,45 @@ +PKG_NAME = debian-$(PKG_VERS) +PKG_VERS = bullseye + +DISTRIB_DIR = $(BASE_DISTRIB_DIR)/$(PKG_NAME)-$(PKG_DIST_ARCH) + +PKG_EXT = tar.xz +PKG_DIST_NAME = rootfs.$(PKG_EXT) +PKG_DIST_SITE = https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +HOMEPAGE = https://www.debian.org/ +COMMENT = Debian base image +LICENSE = GPLv3 + +CHECKSUM_TARGET = debian_checksum +INSTALL_TARGET = debian_install + +EXTRACT_PATH=$(WORK_DIR)/rootfs + +PKG_DIST_ARCH_LIST = x64 armv7 arm64 + +include ../../mk/spksrc.archs.mk + +PKG_DIST_ARCH = x64 +PKG_SHA = e8e26161d828d035f0eb2f06a57c7972375a769a +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +PKG_SHA = dac1fb21147a9d20e3234a90a83269c9ea02588e +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +PKG_SHA = 0cb2f80d1b5fc71d626a65a80bde83dff6be6278 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: debian_install debian_checksum +debian_checksum: + +debian_install: + mkdir -p $(STAGING_INSTALL_PREFIX)/rootfs + tar -cf - -C $(WORK_DIR)/rootfs . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/rootfs + curl -so $(STAGING_INSTALL_PREFIX)/rootfs/debuerreotype-epoch https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim/rootfs.debuerreotype-epoch diff --git a/cross/debian-bullseye/PLIST.auto b/cross/debian-bullseye/PLIST.auto new file mode 100644 index 000000000..e69de29bb diff --git a/spk/radarr/Makefile b/spk/radarr/Makefile index 6dcc43f08..efbaa36a3 100644 --- a/spk/radarr/Makefile +++ b/spk/radarr/Makefile @@ -40,7 +40,7 @@ USE_ALTERNATE_TMPDIR = 1 include ../../mk/spksrc.spk.mk -BWRAP_DEPENDS = cross/bubblewrap cross/debian-stretch +BWRAP_DEPENDS = cross/bubblewrap cross/debian-bullseye ifeq ($(call version_lt, ${SPK_TCVERS}, 7.0),1) DEPENDS += $(BWRAP_DEPENDS) @@ -59,7 +59,7 @@ PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) rootfs_install: sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ - sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu57 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu67 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ app_extra_install: From 130aa09f3ba189909f8f31601a9ff4913820e1b8 Mon Sep 17 00:00:00 2001 From: ta264 Date: Thu, 5 May 2022 21:08:24 +0100 Subject: [PATCH 10/16] Use buster rootfs --- cross/debian-buster/Makefile | 45 ++++++++++++++++++++++++++++++++++ cross/debian-buster/PLIST.auto | 0 spk/radarr/Makefile | 4 +-- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 cross/debian-buster/Makefile create mode 100644 cross/debian-buster/PLIST.auto diff --git a/cross/debian-buster/Makefile b/cross/debian-buster/Makefile new file mode 100644 index 000000000..9ebcebdd9 --- /dev/null +++ b/cross/debian-buster/Makefile @@ -0,0 +1,45 @@ +PKG_NAME = debian-$(PKG_VERS) +PKG_VERS = buster + +DISTRIB_DIR = $(BASE_DISTRIB_DIR)/$(PKG_NAME)-$(PKG_DIST_ARCH) + +PKG_EXT = tar.xz +PKG_DIST_NAME = rootfs.$(PKG_EXT) +PKG_DIST_SITE = https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +HOMEPAGE = https://www.debian.org/ +COMMENT = Debian base image +LICENSE = GPLv3 + +CHECKSUM_TARGET = debian_checksum +INSTALL_TARGET = debian_install + +EXTRACT_PATH=$(WORK_DIR)/rootfs + +PKG_DIST_ARCH_LIST = x64 armv7 arm64 + +include ../../mk/spksrc.archs.mk + +PKG_DIST_ARCH = x64 +PKG_SHA = e8e26161d828d035f0eb2f06a57c7972375a769a +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +PKG_SHA = dac1fb21147a9d20e3234a90a83269c9ea02588e +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +PKG_SHA = 0cb2f80d1b5fc71d626a65a80bde83dff6be6278 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: debian_install debian_checksum +debian_checksum: + +debian_install: + mkdir -p $(STAGING_INSTALL_PREFIX)/rootfs + tar -cf - -C $(WORK_DIR)/rootfs . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/rootfs + curl -so $(STAGING_INSTALL_PREFIX)/rootfs/debuerreotype-epoch https://raw.githubusercontent.com/debuerreotype/docker-debian-artifacts/$(PKG_SHA)/$(PKG_VERS)/slim/rootfs.debuerreotype-epoch diff --git a/cross/debian-buster/PLIST.auto b/cross/debian-buster/PLIST.auto new file mode 100644 index 000000000..e69de29bb diff --git a/spk/radarr/Makefile b/spk/radarr/Makefile index efbaa36a3..b55220fbe 100644 --- a/spk/radarr/Makefile +++ b/spk/radarr/Makefile @@ -40,7 +40,7 @@ USE_ALTERNATE_TMPDIR = 1 include ../../mk/spksrc.spk.mk -BWRAP_DEPENDS = cross/bubblewrap cross/debian-bullseye +BWRAP_DEPENDS = cross/bubblewrap cross/debian-buster ifeq ($(call version_lt, ${SPK_TCVERS}, 7.0),1) DEPENDS += $(BWRAP_DEPENDS) @@ -59,7 +59,7 @@ PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) rootfs_install: sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ - sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu67 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu63 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ app_extra_install: From 898b53786fd82154df7561bdac351838e185ce96 Mon Sep 17 00:00:00 2001 From: ta264 Date: Thu, 5 May 2022 21:18:16 +0100 Subject: [PATCH 11/16] Add bubblewrap spk for DSM 7 --- spk/bubblewrap/Makefile | 26 +++++++++++++++++++++++ spk/bubblewrap/src/bubblewrap.jpg | Bin 0 -> 40239 bytes spk/bubblewrap/src/service-setup.sh | 22 +++++++++++++++++++ spk/bubblewrap/src/wizard/install_uifile | 6 ++++++ spk/bubblewrap/src/wizard/upgrade_uifile | 6 ++++++ spk/radarr/Makefile | 15 +++++++------ spk/radarr/src/service-setup.sh | 12 +++++++---- 7 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 spk/bubblewrap/Makefile create mode 100644 spk/bubblewrap/src/bubblewrap.jpg create mode 100644 spk/bubblewrap/src/service-setup.sh create mode 100644 spk/bubblewrap/src/wizard/install_uifile create mode 100644 spk/bubblewrap/src/wizard/upgrade_uifile diff --git a/spk/bubblewrap/Makefile b/spk/bubblewrap/Makefile new file mode 100644 index 000000000..f8542d3b5 --- /dev/null +++ b/spk/bubblewrap/Makefile @@ -0,0 +1,26 @@ +SPK_NAME = bubblewrap +SPK_VERS = 0.6.1 +SPK_ICON = src/bubblewrap.jpg + +DEPENDS = cross/$(SPK_NAME) + +REQUIRED_MIN_DSM = 7.0 + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) + +MAINTAINER = Servarr +DESCRIPTION = The goal of bubblewrap is to run an application in a sandbox, where it has restricted access to parts of the operating system or user data such as the home directory. +DISPLAY_NAME = Bubblewrap +STARTABLE = no +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" + +HOMEPAGE = https://github.com/containers/bubblewrap +LICENSE = GPLv2 + +SERVICE_SETUP = src/service-setup.sh + +WIZARDS_DIR = src/wizard/ + +SPK_COMMANDS = bin/bwrap + +include ../../mk/spksrc.spk.mk diff --git a/spk/bubblewrap/src/bubblewrap.jpg b/spk/bubblewrap/src/bubblewrap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3c243dface42da83cdec1be9bd93f5475120a9b GIT binary patch literal 40239 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 literal 0 HcmV?d00001 diff --git a/spk/bubblewrap/src/service-setup.sh b/spk/bubblewrap/src/service-setup.sh new file mode 100644 index 000000000..17cc100a4 --- /dev/null +++ b/spk/bubblewrap/src/service-setup.sh @@ -0,0 +1,22 @@ + +# bwrap service setup + +BWRAP="${SYNOPKG_PKGDEST}/bin/bwrap" + +fix_permissions () +{ + if [ ${SYNOPKG_DSM_VERSION_MAJOR} -lt 7 ]; then + chown root:root "${BWRAP}" + chmod u+s "${BWRAP}" + fi +} + +service_postinst () +{ + fix_permissions +} + +service_postupgrade () +{ + fix_permissions +} diff --git a/spk/bubblewrap/src/wizard/install_uifile b/spk/bubblewrap/src/wizard/install_uifile new file mode 100644 index 000000000..525fabb40 --- /dev/null +++ b/spk/bubblewrap/src/wizard/install_uifile @@ -0,0 +1,6 @@ +[{ + "step_title": "Manual configuration required!", + "items": [{ + "desc": "This package, and any packages that depend on it, will not work until you perform the manual steps explained here." + }] +}] diff --git a/spk/bubblewrap/src/wizard/upgrade_uifile b/spk/bubblewrap/src/wizard/upgrade_uifile new file mode 100644 index 000000000..525fabb40 --- /dev/null +++ b/spk/bubblewrap/src/wizard/upgrade_uifile @@ -0,0 +1,6 @@ +[{ + "step_title": "Manual configuration required!", + "items": [{ + "desc": "This package, and any packages that depend on it, will not work until you perform the manual steps explained here." + }] +}] diff --git a/spk/radarr/Makefile b/spk/radarr/Makefile index b55220fbe..01f642c03 100644 --- a/spk/radarr/Makefile +++ b/spk/radarr/Makefile @@ -38,20 +38,21 @@ POST_STRIP_TARGET = app_extra_install # DSM prevents executing from /tmp in 7.1 USE_ALTERNATE_TMPDIR = 1 -include ../../mk/spksrc.spk.mk - -BWRAP_DEPENDS = cross/bubblewrap cross/debian-buster +include ../../mk/spksrc.common.mk -ifeq ($(call version_lt, ${SPK_TCVERS}, 7.0),1) -DEPENDS += $(BWRAP_DEPENDS) +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +DEPENDS += cross/bubblewrap cross/debian-buster app_extra_install: rootfs_install -else ifeq ($(SPK_NAME_ARCH), comcerto2k) -DEPENDS += $(BWRAP_DEPENDS) +else ifeq ($(ARCH), comcerto2k) +DEPENDS += cross/debian-buster +SPK_DEPENDS = "bubblewrap>=0.6.1" app_extra_install: rootfs_install else DEPENDS += cross/sqlite cross/radarr endif +include ../../mk/spksrc.spk.mk + PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) diff --git a/spk/radarr/src/service-setup.sh b/spk/radarr/src/service-setup.sh index 08aaf0cbf..27da9b149 100644 --- a/spk/radarr/src/service-setup.sh +++ b/spk/radarr/src/service-setup.sh @@ -6,14 +6,18 @@ GROUP="sc-download" USR_LIB="/usr/lib/${APP_LOWER}" PID_FILE="${SYNOPKG_PKGVAR}/${APP_LOWER}.pid" -# Some versions include bwrap to create a chroot container with newer libraries. -# If the bwrap binary is in the package, use the chroot +# If the bwrap binary is in this package, use it, otherwise use from standalone package. BWRAP="${SYNOPKG_PKGDEST}/bin/bwrap" +if [ ! -f "${BWRAP}" ]; then + BWRAP="/var/packages/bubblewrap/target/bin/bwrap" +fi -if [ -f "${BWRAP}" ]; then +# Some versions include a rootfs to create a chroot container with newer libraries. +ROOTFS="${SYNOPKG_PKGDEST}/rootfs" +if [ -d "${ROOTFS}" ]; then APP="${USR_LIB}/bin/${APP_UPPER}" CONFIG_DIR="/var/lib/${APP_LOWER}" - SERVICE_COMMAND="${BWRAP} --bind ${SYNOPKG_PKGDEST}/rootfs / --proc /proc --dev /dev --bind ${SYNOPKG_PKGDEST}${USR_LIB} ${USR_LIB} --bind ${SYNOPKG_PKGVAR} ${CONFIG_DIR} --bind /volume1 /volume1 --setenv HOME ${SYNOPKG_PKGVAR} ${APP} --nobrowser --data=${CONFIG_DIR}" + SERVICE_COMMAND="${BWRAP} --bind ${ROOTFS} / --proc /proc --dev /dev --bind ${SYNOPKG_PKGDEST}${USR_LIB} ${USR_LIB} --bind ${SYNOPKG_PKGVAR} ${CONFIG_DIR} --bind /volume1 /volume1 --setenv HOME ${SYNOPKG_PKGVAR} ${APP} --nobrowser --data=${CONFIG_DIR}" else APP="${SYNOPKG_PKGDEST}${USR_LIB}/bin/${APP_UPPER}" SERVICE_COMMAND="env HOME=${SYNOPKG_PKGVAR} LD_LIBRARY_PATH=${SYNOPKG_PKGDEST}/lib ${APP} --nobrowser --data=${SYNOPKG_PKGVAR}" From f8912372657fbb31b91ca33a29ad860dc04c992b Mon Sep 17 00:00:00 2001 From: ta264 Date: Thu, 5 May 2022 21:53:03 +0100 Subject: [PATCH 12/16] Add sonarr package --- ...R_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch | 17 ++++- cross/debian-buster/Makefile | 13 +++- cross/sonarr/Makefile | 22 ++++++ cross/sonarr/PLIST | 1 + cross/sonarr/digests | 3 + spk/sonarr/Makefile | 68 ++++++++++++++++++ spk/sonarr/src/service-setup.sh | 48 +++++++++++++ spk/sonarr/src/sonarr.png | Bin 0 -> 15681 bytes spk/sonarr/src/wizard/install_uifile | 11 +++ spk/sonarr/src/wizard/install_uifile_fre | 11 +++ spk/sonarr/src/wizard/upgrade_uifile | 18 +++++ spk/sonarr/src/wizard/upgrade_uifile_fre | 18 +++++ 12 files changed, 225 insertions(+), 5 deletions(-) create mode 100644 cross/sonarr/Makefile create mode 100644 cross/sonarr/PLIST create mode 100644 cross/sonarr/digests create mode 100644 spk/sonarr/Makefile create mode 100644 spk/sonarr/src/service-setup.sh create mode 100644 spk/sonarr/src/sonarr.png create mode 100644 spk/sonarr/src/wizard/install_uifile create mode 100644 spk/sonarr/src/wizard/install_uifile_fre create mode 100644 spk/sonarr/src/wizard/upgrade_uifile create mode 100644 spk/sonarr/src/wizard/upgrade_uifile_fre diff --git a/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch b/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch index 82567787d..fcff60a97 100644 --- a/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch +++ b/cross/bubblewrap/patches/0001-Remove-seccomp-PR_SET_NO_NEW_PRIVS-PR_SET_CHILD_SUBR.patch @@ -1,11 +1,12 @@ -From 2a9ffea35ca72aff2082450309864d4c5d6b383b Mon Sep 17 00:00:00 2001 +From 4ffde446cf59c72c7cd8fe9104d82168baa1b355 Mon Sep 17 00:00:00 2001 From: ta264 Date: Thu, 5 May 2022 19:00:44 +0100 Subject: [PATCH] Remove seccomp, PR_SET_NO_NEW_PRIVS, PR_SET_CHILD_SUBREAPER --- bubblewrap.c | 171 +-------------------------------------------------- - 1 file changed, 2 insertions(+), 169 deletions(-) + configure.ac | 1 - + 2 files changed, 2 insertions(+), 170 deletions(-) diff --git a/bubblewrap.c b/bubblewrap.c index 2f2fca5..bca2b24 100644 @@ -291,6 +292,18 @@ index 2f2fca5..bca2b24 100644 if (setup_finished_pipe[1] != -1) { char data = 0; +diff --git a/configure.ac b/configure.ac +index d6b72f3..9a62dac 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -91,7 +91,6 @@ dnl Keep this in sync with ostree, except remove -Werror=declaration-after-state + CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\ + -pipe \ + -Wall \ +- -Werror=shadow \ + -Werror=empty-body \ + -Werror=strict-prototypes \ + -Werror=missing-prototypes \ -- 2.25.1 diff --git a/cross/debian-buster/Makefile b/cross/debian-buster/Makefile index 9ebcebdd9..faecd7b6c 100644 --- a/cross/debian-buster/Makefile +++ b/cross/debian-buster/Makefile @@ -9,7 +9,7 @@ PKG_DIST_SITE = https://raw.githubusercontent.com/debuerreotype/docker-debian-ar DEPENDS = -UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv7L_ARCHS) HOMEPAGE = https://www.debian.org/ COMMENT = Debian base image @@ -20,8 +20,6 @@ INSTALL_TARGET = debian_install EXTRACT_PATH=$(WORK_DIR)/rootfs -PKG_DIST_ARCH_LIST = x64 armv7 arm64 - include ../../mk/spksrc.archs.mk PKG_DIST_ARCH = x64 @@ -32,6 +30,15 @@ PKG_SHA = dac1fb21147a9d20e3234a90a83269c9ea02588e else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) PKG_DIST_ARCH = arm64 PKG_SHA = 0cb2f80d1b5fc71d626a65a80bde83dff6be6278 +else ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = x86 +PKG_SHA = 7b1476e024fa599a18949a449b6f73cb373e45a9 +else ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = armv5 +PKG_SHA = cdf4686a54ee2835b16dbb1cae620e5952667f88 +else ifeq ($(findstring $(ARCH),$(ARMvv7L_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = armv5 +PKG_SHA = cdf4686a54ee2835b16dbb1cae620e5952667f88 endif include ../../mk/spksrc.install-resources.mk diff --git a/cross/sonarr/Makefile b/cross/sonarr/Makefile new file mode 100644 index 000000000..cb57de7f0 --- /dev/null +++ b/cross/sonarr/Makefile @@ -0,0 +1,22 @@ +PKG_NAME = Sonarr +PKG_VERS = 3.0.8.1507 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME).main.$(PKG_VERS).linux.$(PKG_EXT) +PKG_DIST_SITE = https://download.sonarr.tv/v3/main/$(PKG_VERS) +PKG_DIR = $(PKG_NAME) + +DEPENDS = + +HOMEPAGE = https://sonarr.tv +COMMENT = Sonarr is a PVR for newsgroup users. It can monitor multiple RSS feeds for new episodes of your favourite shows and will grab, sorts and rename them. It can also be configured to automatically upgrade the quality of files already downloaded if a better quality format becomes available. +LICENSE = GNU GPL v3 + +INSTALL_TARGET = sonarr_install + +include ../../mk/spksrc.install-resources.mk + +.PHONY: radarr_install +sonarr_install: + rm -rf $(WORK_DIR)/$(PKG_DIR)/Sonarr.Update + mkdir -p $(STAGING_INSTALL_PREFIX)/usr/lib/sonarr/bin + tar -cf - -C $(WORK_DIR)/$(PKG_DIR) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/usr/lib/sonarr/bin diff --git a/cross/sonarr/PLIST b/cross/sonarr/PLIST new file mode 100644 index 000000000..ccfd8c230 --- /dev/null +++ b/cross/sonarr/PLIST @@ -0,0 +1 @@ +rsc:usr/lib/sonarr diff --git a/cross/sonarr/digests b/cross/sonarr/digests new file mode 100644 index 000000000..8491fe009 --- /dev/null +++ b/cross/sonarr/digests @@ -0,0 +1,3 @@ +Sonarr.main.3.0.8.1507.linux.tar.gz SHA1 67fa02872eae3ce9c7a271db855aee42f5c4dc35 +Sonarr.main.3.0.8.1507.linux.tar.gz SHA256 3b652f5358ee3b9e206fd2d59c4b885e14f4531dab108ab659d9aca16543875c +Sonarr.main.3.0.8.1507.linux.tar.gz MD5 c547b7631aacb2db854bff03c6b4b566 diff --git a/spk/sonarr/Makefile b/spk/sonarr/Makefile new file mode 100644 index 000000000..3765b31e4 --- /dev/null +++ b/spk/sonarr/Makefile @@ -0,0 +1,68 @@ +SPK_NAME = sonarr_servarr +SPK_CONFLICT = nzbdrone +SPK_VERS = 3.0.8.1507 +SPK_ICON = src/sonarr.png + +REQUIRED_MIN_DSM = 6.0 + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv7L_ARCHS) + +DEPENDS = cross/sonarr cross/debian-buster + +MAINTAINER = Servarr +MAINTAINER_URL = https://sonarr.tv/ +HELPURL = https://wiki.servarr.com/Sonarr +SUPPORTURL = https://sonarr.tv/\#support + +DESCRIPTION = Sonarr is a PVR for newsgroup and torrent users. It can monitor multiple RSS feeds for new episodes of your favourite shows and will grab, sorts and rename them. It can also be configured to automatically upgrade the quality of files already downloaded if a better quality format becomes available. +DESCRIPTION_FRE = Sonarr est un PVR pour les utilisateurs de groupes de discussion et torrents. Il peut surveiller plusieurs flux RSS pour les nouveaux épisodes de vos séries préférées et saisira, sortes et les renomme. Il peut également être configuré pour mettre à jour automatiquement la qualité des fichiers déjà téléchargés si un meilleur format de qualité devient disponible. +DESCRIPTION_SPN = Sonarr es un PVR para los usuarios de grupos de noticias y torrents. Se puede controlar múltiples canales RSS para nuevos episodios de sus programas favoritos y se agarra, tipo y les cambia el nombre. También puede ser configurado para actualizar automáticamente la calidad de los archivos ya descargados si un formato de mejor calidad disponible. +DISPLAY_NAME = Sonarr +STARTABLE = yes +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" + +HOMEPAGE = https://sonarr.tv +LICENSE = GPLv3 + +SERVICE_USER = auto +SERVICE_SETUP = src/service-setup.sh +SERVICE_PORT = 8989 +SERVICE_PORT_TITLE = $(DISPLAY_NAME) + +# Admin link for in DSM UI +ADMIN_PORT = $(SERVICE_PORT) + +WIZARDS_DIR = src/wizard/ + +POST_STRIP_TARGET = rootfs_install + +# DSM prevents executing from /tmp in 7.1 +USE_ALTERNATE_TMPDIR = 1 + +include ../../mk/spksrc.common.mk + +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +DEPENDS += cross/bubblewrap +else +SPK_DEPENDS = "bubblewrap>=0.6.1" +endif + +include ../../mk/spksrc.spk.mk + +PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) +PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) + +.PHONY: app_extra_install rootfs_install + +rootfs_install: + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y apt-transport-https dirmngr gnupg ca-certificates; \ + sudo debuerreotype-chroot $(STAGING_DIR)/rootfs apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF; \ + sudo debuerreotype-chroot $(STAGING_DIR)/rootfs sh -c 'echo "deb https://download.mono-project.com/repo/debian stable-buster main" | tee /etc/apt/sources.list.d/mono-official.list'; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests locales tzdata libsqlite3-0 libmediainfo0v5 mono-runtime ca-certificates-mono libmono-system-net-http4.0-cil libmono-corlib4.5-cil libmono-microsoft-csharp4.0-cil libmono-posix4.0-cil libmono-system-componentmodel-dataannotations4.0-cil libmono-system-configuration-install4.0-cil libmono-system-configuration4.0-cil libmono-system-core4.0-cil libmono-system-data-datasetextensions4.0-cil libmono-system-data4.0-cil libmono-system-identitymodel4.0-cil libmono-system-io-compression4.0-cil libmono-system-numerics4.0-cil libmono-system-runtime-serialization4.0-cil libmono-system-security4.0-cil libmono-system-servicemodel4.0a-cil libmono-system-serviceprocess4.0-cil libmono-system-transactions4.0-cil libmono-system-web4.0-cil libmono-system-xml-linq4.0-cil libmono-system-xml4.0-cil libmono-system4.0-cil; \ + rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ + +app_extra_install: + @install -m 755 -d $(STAGING_DIR)/app + @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/usr/lib/sonarr/package_info diff --git a/spk/sonarr/src/service-setup.sh b/spk/sonarr/src/service-setup.sh new file mode 100644 index 000000000..469473937 --- /dev/null +++ b/spk/sonarr/src/service-setup.sh @@ -0,0 +1,48 @@ +APP_LOWER="sonarr" +APP_UPPER="Sonarr" + +GROUP="sc-download" + +USR_LIB="/usr/lib/${APP_LOWER}" +PID_FILE="${SYNOPKG_PKGVAR}/${APP_LOWER}.pid" + +# If the bwrap binary is in this package, use it, otherwise use from standalone package. +BWRAP="${SYNOPKG_PKGDEST}/bin/bwrap" +if [ ! -f "${BWRAP}" ]; then + BWRAP="/var/packages/bubblewrap/target/bin/bwrap" +fi + +# All sonarr packages include a rootfs +ROOTFS="${SYNOPKG_PKGDEST}/rootfs" + +APP="${USR_LIB}/bin/${APP_UPPER}" +CONFIG_DIR="/var/lib/${APP_LOWER}" +SERVICE_COMMAND="${BWRAP} --bind ${ROOTFS} / --proc /proc --dev /dev --bind ${SYNOPKG_PKGDEST}${USR_LIB} ${USR_LIB} --bind ${SYNOPKG_PKGVAR} ${CONFIG_DIR} --bind /volume1 /volume1 --setenv HOME ${SYNOPKG_PKGVAR} mono --debug ${APP}.exe -nobrowser -data=${CONFIG_DIR}" + +SVC_BACKGROUND=y + +fix_permissions () +{ + if [ ${SYNOPKG_DSM_VERSION_MAJOR} -lt 7 ]; then + if [ -f "${BWRAP}" ]; then + chown root:root "${BWRAP}" + chmod u+s "${BWRAP}" + fi + + set_unix_permissions "${SYNOPKG_PKGVAR}" + fi +} + +service_postinst () +{ + fix_permissions +} + +service_postupgrade () +{ + # Do an update check on start to avoid possible + # downgrade when synocommunity package is updated + touch ${SYNOPKG_PKGVAR}/update_required + + fix_permissions +} diff --git a/spk/sonarr/src/sonarr.png b/spk/sonarr/src/sonarr.png new file mode 100644 index 0000000000000000000000000000000000000000..815750aa063546eeadf8f6295df5ffb3774cfc76 GIT binary patch literal 15681 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 literal 0 HcmV?d00001 diff --git a/spk/sonarr/src/wizard/install_uifile b/spk/sonarr/src/wizard/install_uifile new file mode 100644 index 000000000..e7de3ed37 --- /dev/null +++ b/spk/sonarr/src/wizard/install_uifile @@ -0,0 +1,11 @@ +[{ + "step_title": "Updating Sonarr", + "items": [{ + "desc": "The first time Sonarr is started it might take a few moments for the interface to become available!

Keep Sonarr up-to-date by using Sonarr's built-in updater.
Navigate to System>Updates in the Sonarr UI." + }] +},{ + "step_title": "Attention! DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + }] +}] diff --git a/spk/sonarr/src/wizard/install_uifile_fre b/spk/sonarr/src/wizard/install_uifile_fre new file mode 100644 index 000000000..aa3ab97a1 --- /dev/null +++ b/spk/sonarr/src/wizard/install_uifile_fre @@ -0,0 +1,11 @@ +[{ + "step_title": "Mettre à jour Sonarr", + "items": [{ + "desc": "Au premier démarrage de Sonarr cela peut prendre un moment avant que l'interface ne soit disponible !

Garder Sonarr à jour en utilisant System>Updates dans l'interface Sonarr." + }] +},{ + "step_title": "Attention! Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + }] +}] diff --git a/spk/sonarr/src/wizard/upgrade_uifile b/spk/sonarr/src/wizard/upgrade_uifile new file mode 100644 index 000000000..c564b4c4d --- /dev/null +++ b/spk/sonarr/src/wizard/upgrade_uifile @@ -0,0 +1,18 @@ +[{ + "step_title": "RECOMMENDATION: Download A Backup Before Upgrading", + "items": [{ + "desc": "IMPORTANT: This update is an upgrade to Sonarr v3. We suggest that you download a manual backup as a precautionary measure before installing this update.

You can download a backup via Sonarr's built-in web-interface.
To do this, navigate to System>Backup in the Sonarr UI.

Create a backup and then download a copy of that backup before installing this upgrade." + }] +},{ + "step_title": "Updating Sonarr", + "items": [{ + "desc": "Keep Sonarr up-to-date by using Sonarr's built-in updater.
Navigate to System>Updates in the Sonarr UI." + }] +},{ + "step_title": "Attention! DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + },{ + "desc": "NOTE: The package upgrade will try to set the correct permissions on your folders. If you get permission errors within Sonarr, manually set Read/Write permissions for the 'sc-download' group on the reported folders using File Station." + }] +}] diff --git a/spk/sonarr/src/wizard/upgrade_uifile_fre b/spk/sonarr/src/wizard/upgrade_uifile_fre new file mode 100644 index 000000000..0f7fb188c --- /dev/null +++ b/spk/sonarr/src/wizard/upgrade_uifile_fre @@ -0,0 +1,18 @@ +[{ + "step_title": "RECOMMENDATION: Télécharger une sauvegarde avant la mise à niveau", + "items": [{ + "desc": "IMPORTANT: Cette mise à jour est une mise à niveau vers Sonarr v3. Nous vous suggérons de télécharger une sauvegarde manuelle par mesure de précaution avant d'installer cette mise à jour.

Vous pouvez télécharger une sauvegarde via l'interface Web intégrée de Sonarr.
Pour ce faire, accédez à System>Backup dans l'interface utilisateur Sonarr.

Créez une sauvegarde, puis téléchargez une copie de cette sauvegarde avant d'installer cette mise à niveau." + }] +},{ + "step_title": "Mettre à jour Sonarr", + "items": [{ + "desc": "Garder Sonarr à jour en utilisant System>Updates dans l'interface Sonarr." + }] +},{ + "step_title": "Attention! Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + },{ + "desc": "NOTE: La mise à jour de l'application va tenter de corriger les permissions des répertoires. En cas d'erreur de permission dans Sonarr, donner les droits de Lecture/Ecriture au groupe 'sc-download' sur les répertoires mentionnés depuis File Station." + }] +}] From 9c195de78c50a6c782fe72ec04964c932021583e Mon Sep 17 00:00:00 2001 From: ta264 Date: Sat, 7 May 2022 06:43:46 +0100 Subject: [PATCH 13/16] Add lidarr --- cross/libstdc++/Makefile | 46 --------------- cross/libstdc++/PLIST | 2 - cross/libstdc++/digests | 15 ----- cross/lidarr/Makefile | 36 ++++++++++++ cross/lidarr/PLIST | 1 + cross/lidarr/digests | 12 ++++ spk/lidarr/Makefile | 68 +++++++++++++++++++++++ spk/lidarr/src/lidarr.png | Bin 0 -> 52098 bytes spk/lidarr/src/service-setup.sh | 55 ++++++++++++++++++ spk/lidarr/src/wizard/install_uifile | 11 ++++ spk/lidarr/src/wizard/install_uifile_fre | 11 ++++ spk/lidarr/src/wizard/upgrade_uifile | 13 +++++ spk/lidarr/src/wizard/upgrade_uifile_fre | 13 +++++ spk/radarr/src/service-setup.sh | 2 +- 14 files changed, 221 insertions(+), 64 deletions(-) delete mode 100644 cross/libstdc++/Makefile delete mode 100644 cross/libstdc++/PLIST delete mode 100644 cross/libstdc++/digests create mode 100644 cross/lidarr/Makefile create mode 100644 cross/lidarr/PLIST create mode 100644 cross/lidarr/digests create mode 100644 spk/lidarr/Makefile create mode 100644 spk/lidarr/src/lidarr.png create mode 100644 spk/lidarr/src/service-setup.sh create mode 100644 spk/lidarr/src/wizard/install_uifile create mode 100644 spk/lidarr/src/wizard/install_uifile_fre create mode 100644 spk/lidarr/src/wizard/upgrade_uifile create mode 100644 spk/lidarr/src/wizard/upgrade_uifile_fre diff --git a/cross/libstdc++/Makefile b/cross/libstdc++/Makefile deleted file mode 100644 index 73480f376..000000000 --- a/cross/libstdc++/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -PKG_NAME = libstdc++6 -PKG_VERS = 6.3.0-18+deb9u1 -PKG_EXT = deb -PKG_DIST_NAME = $(PKG_NAME)_$(PKG_VERS)_$(PKG_DIST_ARCH).$(PKG_EXT) -PKG_DIST_SITE = http://http.us.debian.org/debian/pool/main/g/gcc-6/ -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -EXTRACT_PATH = $(WORK_DIR)/$(PKG_DIR) - -DEPENDS = - -UNSUPPORTED_ARCHS = $(PPC_ARCHS) - -HOMEPAGE = https://gcc.gnu.org/ -COMMENT = The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user\'s freedom. -LICENSE = GPLv3 - -INSTALL_TARGET = libstdc++6_install - -include ../../mk/spksrc.archs.mk - -# use digests with multiple files -PKG_DIST_ARCH_LIST = amd64 armhf arm64 armel i386 - -PKG_DIST_ARCH = amd64 -LIB_DIR = x86_64-linux-gnu -ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv5_ARCHS)),$(ARCH)) -PKG_DIST_ARCH = armhf -LIB_DIR = arm-linux-gnueabihf -else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) -PKG_DIST_ARCH = arm64 -LIB_DIR = aarch64-linux-gnu -else ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) -PKG_DIST_ARCH = armel -LIB_DIR = arm-linux-gnueabi -else ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) -PKG_DIST_ARCH = i386 -LIB_DIR = i386-linux-gnu -endif - -include ../../mk/spksrc.install-resources.mk - -.PHONY: libstdc++6_install -libstdc++6_install: - install -m 755 -d $(STAGING_INSTALL_PREFIX)/lib - install -m 644 $(WORK_DIR)/$(PKG_DIR)/usr/lib/$(LIB_DIR)/libstdc++.so.6.0.22 $(STAGING_INSTALL_PREFIX)/lib - ln -s libstdc++.so.6.0.22 $(STAGING_INSTALL_PREFIX)/lib/libstdc++.so.6 diff --git a/cross/libstdc++/PLIST b/cross/libstdc++/PLIST deleted file mode 100644 index ed8e82b71..000000000 --- a/cross/libstdc++/PLIST +++ /dev/null @@ -1,2 +0,0 @@ -lnk:lib/libstdc++.so.6 -lib:lib/libstdc++.so.6.0.22 diff --git a/cross/libstdc++/digests b/cross/libstdc++/digests deleted file mode 100644 index faaa2f6fb..000000000 --- a/cross/libstdc++/digests +++ /dev/null @@ -1,15 +0,0 @@ -libstdc++6_6.3.0-18+deb9u1_amd64.deb SHA1 d4161e6afc9e47ea0e49262c240c1e03665cc827 -libstdc++6_6.3.0-18+deb9u1_amd64.deb SHA256 d05373fbbb0d2c538fa176dfe71d1fa7983c58d35a7a456263ca87e8e0d45030 -libstdc++6_6.3.0-18+deb9u1_amd64.deb MD5 65d6d1479e90397f7144bf1a8a152746 -libstdc++6_6.3.0-18+deb9u1_armhf.deb SHA1 1623e33f9c129c036ede644bc0b5b249fd642935 -libstdc++6_6.3.0-18+deb9u1_armhf.deb SHA256 1d92ff5a7e33ee75052c9bac4755ee912e8caedbd69c002bd8f10cd4667941e4 -libstdc++6_6.3.0-18+deb9u1_armhf.deb MD5 5f3e9455508826a8da359b0f3e89cb5d -libstdc++6_6.3.0-18+deb9u1_arm64.deb SHA1 7854d7377fdd988c979d3eb5ab55579471c17190 -libstdc++6_6.3.0-18+deb9u1_arm64.deb SHA256 d379867da69254631b75d616f06fe0f2395e5151d5338b735c145be2041ff81f -libstdc++6_6.3.0-18+deb9u1_arm64.deb MD5 7b3c0cba5c63aa13647b41d0153a6d09 -libstdc++6_6.3.0-18+deb9u1_armel.deb SHA1 ecc59bef953be94e929ae8358b1f2f5f76dcb7cb -libstdc++6_6.3.0-18+deb9u1_armel.deb SHA256 e1e05ec07f8164c8f3fc25339a10d432b422ee159f1431a0645a2fe13b3416dc -libstdc++6_6.3.0-18+deb9u1_armel.deb MD5 75939546e834812b7724008d585f5638 -libstdc++6_6.3.0-18+deb9u1_i386.deb SHA1 3000c76cab8fb99e6b7237c0adffc129561f42a8 -libstdc++6_6.3.0-18+deb9u1_i386.deb SHA256 414f272767f0a0d02333e74f00927dd4343bb1570d41df01a81057d28841615f -libstdc++6_6.3.0-18+deb9u1_i386.deb MD5 c4c28228cf72065bff71aeaec485a214 diff --git a/cross/lidarr/Makefile b/cross/lidarr/Makefile new file mode 100644 index 000000000..40d59a3ce --- /dev/null +++ b/cross/lidarr/Makefile @@ -0,0 +1,36 @@ +PKG_NAME = Lidarr +PKG_VERS = 1.0.0.2570 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME).develop.$(PKG_VERS).linux-core-$(PKG_DIST_ARCH).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/Lidarr/Lidarr/releases/download/v$(PKG_VERS) +PKG_DIR = Lidarr + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) + +HOMEPAGE = https://lidarr.audio/ +COMMENT = Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. + +INSTALL_TARGET = lidarr_install + +# use digests with multiple files +PKG_DIST_ARCH_LIST = x64 x86 arm arm64 + +include ../../mk/spksrc.archs.mk +PKG_DIST_ARCH = x64 +ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = x86 +else ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: lidarr_install +lidarr_install: + rm -rf $(WORK_DIR)/$(PKG_DIR)/Lidarr.Update + mkdir -p $(STAGING_INSTALL_PREFIX)/usr/lib/lidarr/bin + tar -cf - -C $(WORK_DIR)/$(PKG_NAME) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/usr/lib/lidarr/bin diff --git a/cross/lidarr/PLIST b/cross/lidarr/PLIST new file mode 100644 index 000000000..778fe35b3 --- /dev/null +++ b/cross/lidarr/PLIST @@ -0,0 +1 @@ +rsc:usr/lib/lidarr diff --git a/cross/lidarr/digests b/cross/lidarr/digests new file mode 100644 index 000000000..9926724f0 --- /dev/null +++ b/cross/lidarr/digests @@ -0,0 +1,12 @@ +Lidarr.develop.1.0.0.2570.linux-core-x64.tar.gz SHA1 84824a86e728b6f954a92ebf873a4812bb44a3b9 +Lidarr.develop.1.0.0.2570.linux-core-x64.tar.gz SHA256 0c7c7ee2bdf9f81f1ee5ce3c4e6a4f070357775d6ce73ca10fb6cbc9cbcde953 +Lidarr.develop.1.0.0.2570.linux-core-x64.tar.gz MD5 94d3bdbd401fc708b3f7ea22842b8fad +Lidarr.develop.1.0.0.2570.linux-core-x86.tar.gz SHA1 216183a4a9d584ef7acdade61f59f1bef3c3ae81 +Lidarr.develop.1.0.0.2570.linux-core-x86.tar.gz SHA256 ce00f8b9f9d016a0a56e9f68f66504834905654d15f545120773a8c734a4d960 +Lidarr.develop.1.0.0.2570.linux-core-x86.tar.gz MD5 68e33d6454a66b0c0ecc1523b1ef2944 +Lidarr.develop.1.0.0.2570.linux-core-arm.tar.gz SHA1 c21d31387597e32400eefb29ff6496982fdf2871 +Lidarr.develop.1.0.0.2570.linux-core-arm.tar.gz SHA256 8043ed04284d02307cb6308c8a678c5d34e9adb5dbb3b7e4ad80b6caeedf213e +Lidarr.develop.1.0.0.2570.linux-core-arm.tar.gz MD5 a2721eeee77a9569d6b5d45cf83950d2 +Lidarr.develop.1.0.0.2570.linux-core-arm64.tar.gz SHA1 7c223b22591d77f2a3d4c3150af6f10b74ada872 +Lidarr.develop.1.0.0.2570.linux-core-arm64.tar.gz SHA256 eab18cca74112b3e530722bfcaeefaa6efa15dd4afc02718c5d7137976a70ef3 +Lidarr.develop.1.0.0.2570.linux-core-arm64.tar.gz MD5 0e6e7a1068501bedcbb2f75a853d67a3 diff --git a/spk/lidarr/Makefile b/spk/lidarr/Makefile new file mode 100644 index 000000000..20ea7458c --- /dev/null +++ b/spk/lidarr/Makefile @@ -0,0 +1,68 @@ +SPK_NAME = lidarr_official +SPK_CONFLICT = lidarr +SPK_VERS = 1.0.0.2570 +SPK_ICON = src/lidarr.png + +REQUIRED_MIN_DSM = 6.0 + +# .NET is not supported on PPC, ARM5, ARM7L and x86 +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) + +DEPENDS = cross/lidarr + +MAINTAINER = Team Lidarr +MAINTAINER_URL = https://lidarr.audio/ +HELPURL = https://wiki.servarr.com/Lidarr +SUPPORTURL = https://lidarr.audio/\#support + +DESCRIPTION = Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. +STARTABLE = yes +DISPLAY_NAME = Lidarr +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" + +HOMEPAGE = $(MAINTAINER_URL) +LICENSE = GPLv3 + +SERVICE_USER = auto +SERVICE_SETUP = src/service-setup.sh +SERVICE_PORT = 8686 +SERVICE_PORT_TITLE = $(DISPLAY_NAME) + +# Admin link for in DSM UI +ADMIN_PORT = $(SERVICE_PORT) + +WIZARDS_DIR = src/wizard/ + +POST_STRIP_TARGET = app_extra_install + +# DSM prevents executing from /tmp in 7.1 +USE_ALTERNATE_TMPDIR = 1 + +include ../../mk/spksrc.common.mk + +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +DEPENDS += cross/bubblewrap cross/debian-buster +app_extra_install: rootfs_install +else ifeq ($(ARCH), comcerto2k) +DEPENDS += cross/debian-buster +SPK_DEPENDS = "bubblewrap>=0.6.1" +app_extra_install: rootfs_install +else +DEPENDS += cross/sqlite cross/lidarr +endif + +include ../../mk/spksrc.spk.mk + +PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) +PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) + +.PHONY: app_extra_install rootfs_install + +rootfs_install: + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu63 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ + +app_extra_install: + @install -m 755 -d $(STAGING_DIR)/app + @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/usr/lib/lidarr/package_info diff --git a/spk/lidarr/src/lidarr.png b/spk/lidarr/src/lidarr.png new file mode 100644 index 0000000000000000000000000000000000000000..f048bf77dc248651974ef15948f039c305753a81 GIT binary patch literal 52098 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
Keep Lidarr up-to-date by using Lidarr's built-in updater.
Navigate to System>Updates in the Lidarr UI." + }] +},{ + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + }] +}] diff --git a/spk/lidarr/src/wizard/install_uifile_fre b/spk/lidarr/src/wizard/install_uifile_fre new file mode 100644 index 000000000..b4491578e --- /dev/null +++ b/spk/lidarr/src/wizard/install_uifile_fre @@ -0,0 +1,11 @@ +[{ + "step_title": "Mettre à jour Lidarr", + "items": [{ + "desc": "Au premier démarrage de Lidarr cela peut prendre un moment avant que l'interface ne soit disponible !

Garder Lidarr à jour en utilisant System>Updates dans l'interface Lidarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + }] +}] diff --git a/spk/lidarr/src/wizard/upgrade_uifile b/spk/lidarr/src/wizard/upgrade_uifile new file mode 100644 index 000000000..b24d49852 --- /dev/null +++ b/spk/lidarr/src/wizard/upgrade_uifile @@ -0,0 +1,13 @@ +[{ + "step_title": "Updating Lidarr", + "items": [{ + "desc": "Keep Lidarr up-to-date by using Lidarr's built-in updater.
Navigate to System>Updates in the Lidarr UI." + }] +}, { + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + },{ + "desc": "NOTE: The package upgrade will try to set the correct permissions on your folders. If you get permission errors within Radarr, manually set Read/Write permissions for the 'sc-download' group on the reported folders using File Station." + }] +}] diff --git a/spk/lidarr/src/wizard/upgrade_uifile_fre b/spk/lidarr/src/wizard/upgrade_uifile_fre new file mode 100644 index 000000000..7644d1609 --- /dev/null +++ b/spk/lidarr/src/wizard/upgrade_uifile_fre @@ -0,0 +1,13 @@ +[{ + "step_title": "Mettre à jour Lidarr", + "items": [{ + "desc": "Garder Lidarr à jour en utilisant System>Updates dans l'interface Lidarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + },{ + "desc": "NOTE: La mise à jour de l'application va tenter de corriger les permissions des répertoires. En cas d'erreur de permission dans Radarr, donner les droits de Lecture/Ecriture au groupe 'sc-download' sur les répertoires mentionnés depuis File Station." + }] +}] diff --git a/spk/radarr/src/service-setup.sh b/spk/radarr/src/service-setup.sh index 27da9b149..08aa2b9cf 100644 --- a/spk/radarr/src/service-setup.sh +++ b/spk/radarr/src/service-setup.sh @@ -47,7 +47,7 @@ service_postinst () service_postupgrade () { - # Make Radarr do an update check on start to avoid possible Radarr + # Do an update check on start to avoid possible # downgrade when synocommunity package is updated touch ${SYNOPKG_PKGVAR}/update_required From bc5b1d3403eaf22eaad21b0b4c763cec53443ee7 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sat, 7 May 2022 21:05:44 +0100 Subject: [PATCH 14/16] Add readarr --- cross/readarr/Makefile | 34 +++++++++++ cross/readarr/PLIST | 1 + cross/readarr/digests | 9 +++ spk/readarr/Makefile | 68 ++++++++++++++++++++++ spk/readarr/src/readarr.png | Bin 0 -> 39632 bytes spk/readarr/src/service-setup.sh | 55 +++++++++++++++++ spk/readarr/src/wizard/install_uifile | 11 ++++ spk/readarr/src/wizard/install_uifile_fre | 11 ++++ spk/readarr/src/wizard/upgrade_uifile | 13 +++++ spk/readarr/src/wizard/upgrade_uifile_fre | 13 +++++ 10 files changed, 215 insertions(+) create mode 100644 cross/readarr/Makefile create mode 100644 cross/readarr/PLIST create mode 100644 cross/readarr/digests create mode 100644 spk/readarr/Makefile create mode 100644 spk/readarr/src/readarr.png create mode 100644 spk/readarr/src/service-setup.sh create mode 100644 spk/readarr/src/wizard/install_uifile create mode 100644 spk/readarr/src/wizard/install_uifile_fre create mode 100644 spk/readarr/src/wizard/upgrade_uifile create mode 100644 spk/readarr/src/wizard/upgrade_uifile_fre diff --git a/cross/readarr/Makefile b/cross/readarr/Makefile new file mode 100644 index 000000000..1f84c6a6c --- /dev/null +++ b/cross/readarr/Makefile @@ -0,0 +1,34 @@ +PKG_NAME = Readarr +PKG_VERS = 0.1.0.1248 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME).develop.$(PKG_VERS).linux-core-$(PKG_DIST_ARCH).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/Readarr/Readarr/releases/download/v$(PKG_VERS) +PKG_DIR = Readarr + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +HOMEPAGE = https://readarr.com/ +COMMENT = Readarr is an ebook and audiobook collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will grab, sort, and rename them. Note that only one type of a given book is supported. If you want both an audiobook and ebook of a given book you will need multiple instances. + +INSTALL_TARGET = readarr_install + +# use digests with multiple files +PKG_DIST_ARCH_LIST = x64 arm arm64 + +include ../../mk/spksrc.archs.mk +PKG_DIST_ARCH = x64 +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: readarr_install +readarr_install: + rm -rf $(WORK_DIR)/$(PKG_DIR)/Readarr.Update + mkdir -p $(STAGING_INSTALL_PREFIX)/usr/lib/readarr/bin + tar -cf - -C $(WORK_DIR)/$(PKG_NAME) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/usr/lib/readarr/bin diff --git a/cross/readarr/PLIST b/cross/readarr/PLIST new file mode 100644 index 000000000..864c1bc76 --- /dev/null +++ b/cross/readarr/PLIST @@ -0,0 +1 @@ +rsc:usr/lib/readarr diff --git a/cross/readarr/digests b/cross/readarr/digests new file mode 100644 index 000000000..f6fb4dd2a --- /dev/null +++ b/cross/readarr/digests @@ -0,0 +1,9 @@ +Readarr.develop.0.1.0.1248.linux-core-x64.tar.gz SHA1 6df078b5c944cba556520858d6a18b2af34d035b +Readarr.develop.0.1.0.1248.linux-core-x64.tar.gz SHA256 182fe1c28424cea913390add3b8d02d742b530d9a5727f574f0c161e8f7a9784 +Readarr.develop.0.1.0.1248.linux-core-x64.tar.gz MD5 083d4205246461ec08915a75c9fa8993 +Readarr.develop.0.1.0.1248.linux-core-arm.tar.gz SHA1 dc85c8ed83b6bfcd2ee9ec6d866c386a14627d75 +Readarr.develop.0.1.0.1248.linux-core-arm.tar.gz SHA256 5e59249d71607d50f138800e58f353d43442189cd9d28402fcdf82a3837e8fa5 +Readarr.develop.0.1.0.1248.linux-core-arm.tar.gz MD5 bddb35798e1b6ccb980fa93ef5e24a6b +Readarr.develop.0.1.0.1248.linux-core-arm64.tar.gz SHA1 e636af9e59c1d92bae9dc332ccaddf8f4f17767b +Readarr.develop.0.1.0.1248.linux-core-arm64.tar.gz SHA256 c7c06702e0d6b9d6d22abb665e6e8f15e17136b7d5609a2dd6bed5c81e98b96b +Readarr.develop.0.1.0.1248.linux-core-arm64.tar.gz MD5 cb07dea6b85c667da4618c54711c1fba diff --git a/spk/readarr/Makefile b/spk/readarr/Makefile new file mode 100644 index 000000000..50fa02493 --- /dev/null +++ b/spk/readarr/Makefile @@ -0,0 +1,68 @@ +SPK_NAME = readarr_official +SPK_CONFLICT = readarr +SPK_VERS = 0.1.0.1248 +SPK_ICON = src/readarr.png + +REQUIRED_MIN_DSM = 6.0 + +# .NET is not supported on PPC, ARM5, ARM7L and x86 +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +DEPENDS = cross/readarr + +MAINTAINER = Team Readarr +MAINTAINER_URL = https://readarr.com/ +HELPURL = https://wiki.servarr.com/Readarr +SUPPORTURL = https://readarr.audio/\#support + +DESCRIPTION = Readarr is an ebook and audiobook collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will grab, sort, and rename them. Note that only one type of a given book is supported. If you want both an audiobook and ebook of a given book you will need multiple instances. +STARTABLE = yes +DISPLAY_NAME = Readarr +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" + +HOMEPAGE = $(MAINTAINER_URL) +LICENSE = GPLv3 + +SERVICE_USER = auto +SERVICE_SETUP = src/service-setup.sh +SERVICE_PORT = 8787 +SERVICE_PORT_TITLE = $(DISPLAY_NAME) + +# Admin link for in DSM UI +ADMIN_PORT = $(SERVICE_PORT) + +WIZARDS_DIR = src/wizard/ + +POST_STRIP_TARGET = app_extra_install + +# DSM prevents executing from /tmp in 7.1 +USE_ALTERNATE_TMPDIR = 1 + +include ../../mk/spksrc.common.mk + +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +DEPENDS += cross/bubblewrap cross/debian-buster +app_extra_install: rootfs_install +else ifeq ($(ARCH), comcerto2k) +DEPENDS += cross/debian-buster +SPK_DEPENDS = "bubblewrap>=0.6.1" +app_extra_install: rootfs_install +else +DEPENDS += cross/sqlite cross/readarr +endif + +include ../../mk/spksrc.spk.mk + +PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) +PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) + +.PHONY: app_extra_install rootfs_install + +rootfs_install: + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu63 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ + +app_extra_install: + @install -m 755 -d $(STAGING_DIR)/app + @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/usr/lib/readarr/package_info diff --git a/spk/readarr/src/readarr.png b/spk/readarr/src/readarr.png new file mode 100644 index 0000000000000000000000000000000000000000..a66d4e23e7284e385382d5f6ed3d060111ae4f60 GIT binary patch literal 39632 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 Eg5H9WLjV8( literal 0 HcmV?d00001 diff --git a/spk/readarr/src/service-setup.sh b/spk/readarr/src/service-setup.sh new file mode 100644 index 000000000..0867ca7c7 --- /dev/null +++ b/spk/readarr/src/service-setup.sh @@ -0,0 +1,55 @@ +APP_LOWER="readarr" +APP_UPPER="Readarr" + +GROUP="sc-download" + +USR_LIB="/usr/lib/${APP_LOWER}" +PID_FILE="${SYNOPKG_PKGVAR}/${APP_LOWER}.pid" + +# If the bwrap binary is in this package, use it, otherwise use from standalone package. +BWRAP="${SYNOPKG_PKGDEST}/bin/bwrap" +if [ ! -f "${BWRAP}" ]; then + BWRAP="/var/packages/bubblewrap/target/bin/bwrap" +fi + +# Some versions include a rootfs to create a chroot container with newer libraries. +ROOTFS="${SYNOPKG_PKGDEST}/rootfs" +if [ -d "${ROOTFS}" ]; then + APP="${USR_LIB}/bin/${APP_UPPER}" + CONFIG_DIR="/var/lib/${APP_LOWER}" + SERVICE_COMMAND="${BWRAP} --bind ${ROOTFS} / --proc /proc --dev /dev --bind ${SYNOPKG_PKGDEST}${USR_LIB} ${USR_LIB} --bind ${SYNOPKG_PKGVAR} ${CONFIG_DIR} --bind /volume1 /volume1 --setenv HOME ${SYNOPKG_PKGVAR} ${APP} --nobrowser --data=${CONFIG_DIR}" +else + APP="${SYNOPKG_PKGDEST}${USR_LIB}/bin/${APP_UPPER}" + SERVICE_COMMAND="env HOME=${SYNOPKG_PKGVAR} LD_LIBRARY_PATH=${SYNOPKG_PKGDEST}/lib ${APP} --nobrowser --data=${SYNOPKG_PKGVAR}" +fi + +SVC_BACKGROUND=y + +fix_permissions () +{ + if [ ${SYNOPKG_DSM_VERSION_MAJOR} -lt 7 ]; then + if [ -f "${BWRAP}" ]; then + chown root:root "${BWRAP}" + chmod u+s "${BWRAP}" + fi + + set_unix_permissions "${SYNOPKG_PKGVAR}" + fi +} + +service_postinst () +{ + # Move config.xml to .config + mv ${SYNOPKG_PKGDEST}/app/config.xml ${SYNOPKG_PKGVAR} + + fix_permissions +} + +service_postupgrade () +{ + # Do an update check on start to avoid possible + # downgrade when synocommunity package is updated + touch ${SYNOPKG_PKGVAR}/update_required + + fix_permissions +} diff --git a/spk/readarr/src/wizard/install_uifile b/spk/readarr/src/wizard/install_uifile new file mode 100644 index 000000000..c7af95050 --- /dev/null +++ b/spk/readarr/src/wizard/install_uifile @@ -0,0 +1,11 @@ +[{ + "step_title": "Starting and updating Readarr", + "items": [{ + "desc": "The first time Readarr is started it might take a few moments for the interface to become available!

Keep Readarr up-to-date by using Readarr's built-in updater.
Navigate to System>Updates in the Readarr UI." + }] +},{ + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + }] +}] diff --git a/spk/readarr/src/wizard/install_uifile_fre b/spk/readarr/src/wizard/install_uifile_fre new file mode 100644 index 000000000..98ff32f0a --- /dev/null +++ b/spk/readarr/src/wizard/install_uifile_fre @@ -0,0 +1,11 @@ +[{ + "step_title": "Mettre à jour Readarr", + "items": [{ + "desc": "Au premier démarrage de Readarr cela peut prendre un moment avant que l'interface ne soit disponible !

Garder Readarr à jour en utilisant System>Updates dans l'interface Readarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + }] +}] diff --git a/spk/readarr/src/wizard/upgrade_uifile b/spk/readarr/src/wizard/upgrade_uifile new file mode 100644 index 000000000..fa20a7908 --- /dev/null +++ b/spk/readarr/src/wizard/upgrade_uifile @@ -0,0 +1,13 @@ +[{ + "step_title": "Updating Readarr", + "items": [{ + "desc": "Keep Readarr up-to-date by using Readarr's built-in updater.
Navigate to System>Updates in the Readarr UI." + }] +}, { + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + },{ + "desc": "NOTE: The package upgrade will try to set the correct permissions on your folders. If you get permission errors within Radarr, manually set Read/Write permissions for the 'sc-download' group on the reported folders using File Station." + }] +}] diff --git a/spk/readarr/src/wizard/upgrade_uifile_fre b/spk/readarr/src/wizard/upgrade_uifile_fre new file mode 100644 index 000000000..0de5e38dc --- /dev/null +++ b/spk/readarr/src/wizard/upgrade_uifile_fre @@ -0,0 +1,13 @@ +[{ + "step_title": "Mettre à jour Readarr", + "items": [{ + "desc": "Garder Readarr à jour en utilisant System>Updates dans l'interface Readarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + },{ + "desc": "NOTE: La mise à jour de l'application va tenter de corriger les permissions des répertoires. En cas d'erreur de permission dans Radarr, donner les droits de Lecture/Ecriture au groupe 'sc-download' sur les répertoires mentionnés depuis File Station." + }] +}] From 966ba6488263463a9d16a090aa310e12dfa95d70 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sat, 7 May 2022 21:13:35 +0100 Subject: [PATCH 15/16] Add prowlarr --- cross/prowlarr/Makefile | 34 +++++++++++ cross/prowlarr/PLIST | 1 + cross/prowlarr/digests | 9 +++ spk/prowlarr/Makefile | 68 +++++++++++++++++++++ spk/prowlarr/src/prowlarr.png | Bin 0 -> 118408 bytes spk/prowlarr/src/service-setup.sh | 55 +++++++++++++++++ spk/prowlarr/src/wizard/install_uifile | 11 ++++ spk/prowlarr/src/wizard/install_uifile_fre | 11 ++++ spk/prowlarr/src/wizard/upgrade_uifile | 13 ++++ spk/prowlarr/src/wizard/upgrade_uifile_fre | 13 ++++ 10 files changed, 215 insertions(+) create mode 100644 cross/prowlarr/Makefile create mode 100644 cross/prowlarr/PLIST create mode 100644 cross/prowlarr/digests create mode 100644 spk/prowlarr/Makefile create mode 100644 spk/prowlarr/src/prowlarr.png create mode 100644 spk/prowlarr/src/service-setup.sh create mode 100644 spk/prowlarr/src/wizard/install_uifile create mode 100644 spk/prowlarr/src/wizard/install_uifile_fre create mode 100644 spk/prowlarr/src/wizard/upgrade_uifile create mode 100644 spk/prowlarr/src/wizard/upgrade_uifile_fre diff --git a/cross/prowlarr/Makefile b/cross/prowlarr/Makefile new file mode 100644 index 000000000..ecd3ba09f --- /dev/null +++ b/cross/prowlarr/Makefile @@ -0,0 +1,34 @@ +PKG_NAME = Prowlarr +PKG_VERS = 0.3.0.1730 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME).develop.$(PKG_VERS).linux-core-$(PKG_DIST_ARCH).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/Prowlarr/Prowlarr/releases/download/v$(PKG_VERS) +PKG_DIR = Prowlarr + +DEPENDS = + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +HOMEPAGE = https://prowlarr.com/ +COMMENT = Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required (we do it all). + +INSTALL_TARGET = prowlarr_install + +# use digests with multiple files +PKG_DIST_ARCH_LIST = x64 arm arm64 + +include ../../mk/spksrc.archs.mk +PKG_DIST_ARCH = x64 +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm +else ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = arm64 +endif + +include ../../mk/spksrc.install-resources.mk + +.PHONY: prowlarr_install +prowlarr_install: + rm -rf $(WORK_DIR)/$(PKG_DIR)/Prowlarr.Update + mkdir -p $(STAGING_INSTALL_PREFIX)/usr/lib/prowlarr/bin + tar -cf - -C $(WORK_DIR)/$(PKG_NAME) . | tar -xf - -C $(STAGING_INSTALL_PREFIX)/usr/lib/prowlarr/bin diff --git a/cross/prowlarr/PLIST b/cross/prowlarr/PLIST new file mode 100644 index 000000000..4d1ea8192 --- /dev/null +++ b/cross/prowlarr/PLIST @@ -0,0 +1 @@ +rsc:usr/lib/prowlarr diff --git a/cross/prowlarr/digests b/cross/prowlarr/digests new file mode 100644 index 000000000..05e299437 --- /dev/null +++ b/cross/prowlarr/digests @@ -0,0 +1,9 @@ +Prowlarr.develop.0.3.0.1730.linux-core-x64.tar.gz SHA1 e24ff8bc15ba8070350108b8dbfb46769fe5da08 +Prowlarr.develop.0.3.0.1730.linux-core-x64.tar.gz SHA256 7a264b8291dee49e8e9475da388a435e6f8896cfd0e5d2b9bb335f3dcde0555e +Prowlarr.develop.0.3.0.1730.linux-core-x64.tar.gz MD5 c45e15240c8a8e552677178dcff60d34 +Prowlarr.develop.0.3.0.1730.linux-core-arm.tar.gz SHA1 5c3ddbfd0d2a12c19a38d55f2d21a540dfa9870d +Prowlarr.develop.0.3.0.1730.linux-core-arm.tar.gz SHA256 8f758ee24db731f5156110bdabf400f01b715c7ab78c82def8bf1041e8d754bd +Prowlarr.develop.0.3.0.1730.linux-core-arm.tar.gz MD5 0a03f2f15b6b96716e1804a39fd9ce05 +Prowlarr.develop.0.3.0.1730.linux-core-arm64.tar.gz SHA1 c853a7f839c8828b6fcda8ef6de7819e729ce3d4 +Prowlarr.develop.0.3.0.1730.linux-core-arm64.tar.gz SHA256 52e54727d5c5160b93aa13adb88291b0d99bb35b95f60940d7b6b11bdee47633 +Prowlarr.develop.0.3.0.1730.linux-core-arm64.tar.gz MD5 82f923ac4852ed90206e7bd1223197ac diff --git a/spk/prowlarr/Makefile b/spk/prowlarr/Makefile new file mode 100644 index 000000000..9e33f1e03 --- /dev/null +++ b/spk/prowlarr/Makefile @@ -0,0 +1,68 @@ +SPK_NAME = prowlarr_official +SPK_CONFLICT = prowlarr +SPK_VERS = 0.3.0.1730 +SPK_ICON = src/prowlarr.png + +REQUIRED_MIN_DSM = 6.0 + +# .NET is not supported on PPC, ARM5, ARM7L and x86 +UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(ARMv7L_ARCHS) $(i686_ARCHS) + +DEPENDS = cross/prowlarr + +MAINTAINER = Team Prowlarr +MAINTAINER_URL = https://prowlarr.com/ +HELPURL = https://wiki.servarr.com/Prowlarr +SUPPORTURL = https://prowlarr.audio/\#support + +DESCRIPTION = Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required (we do it all). +STARTABLE = yes +DISPLAY_NAME = Prowlarr +CHANGELOG = "${DISPLAY_NAME} v$(SPK_VERS)" + +HOMEPAGE = $(MAINTAINER_URL) +LICENSE = GPLv3 + +SERVICE_USER = auto +SERVICE_SETUP = src/service-setup.sh +SERVICE_PORT = 9696 +SERVICE_PORT_TITLE = $(DISPLAY_NAME) + +# Admin link for in DSM UI +ADMIN_PORT = $(SERVICE_PORT) + +WIZARDS_DIR = src/wizard/ + +POST_STRIP_TARGET = app_extra_install + +# DSM prevents executing from /tmp in 7.1 +USE_ALTERNATE_TMPDIR = 1 + +include ../../mk/spksrc.common.mk + +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +DEPENDS += cross/bubblewrap cross/debian-buster +app_extra_install: rootfs_install +else ifeq ($(ARCH), comcerto2k) +DEPENDS += cross/debian-buster +SPK_DEPENDS = "bubblewrap>=0.6.1" +app_extra_install: rootfs_install +else +DEPENDS += cross/sqlite cross/prowlarr +endif + +include ../../mk/spksrc.spk.mk + +PACKAGE_VERSION = $(SPK_VERS)-spk$(SPK_REV)-$(SPK_NAME_ARCH)-$(SPK_TCVERS) +PACKAGE_AUTHOR = [$(MAINTAINER)]($(MAINTAINER_URL)) + +.PHONY: app_extra_install rootfs_install + +rootfs_install: + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs update; \ + sudo debuerreotype-apt-get $(STAGING_DIR)/rootfs install -y --no-install-recommends --no-install-suggests ca-certificates locales tzdata libicu63 libssl1.1 libstdc++6 zlib1g libsqlite3-0; \ + rm -rf $(STAGING_DIR)/tmp/* $(STAGING_DIR)/var/lib/apt/lists/* $(STAGING_DIR)/var/tmp/*; \ + +app_extra_install: + @install -m 755 -d $(STAGING_DIR)/app + @echo "PackageVersion=$(PACKAGE_VERSION)\nPackageAuthor=$(PACKAGE_AUTHOR)" > $(STAGING_DIR)/usr/lib/prowlarr/package_info diff --git a/spk/prowlarr/src/prowlarr.png b/spk/prowlarr/src/prowlarr.png new file mode 100644 index 0000000000000000000000000000000000000000..9a89541672d298317f4d239fdd71c71d08d07290 GIT binary patch literal 118408 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 f1XgBuhC{yHw*S%(H> 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
OvhJqMDLEg} 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
Keep Prowlarr up-to-date by using Prowlarr's built-in updater.
Navigate to System>Updates in the Prowlarr UI." + }] +},{ + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + }] +}] diff --git a/spk/prowlarr/src/wizard/install_uifile_fre b/spk/prowlarr/src/wizard/install_uifile_fre new file mode 100644 index 000000000..d88b9f57c --- /dev/null +++ b/spk/prowlarr/src/wizard/install_uifile_fre @@ -0,0 +1,11 @@ +[{ + "step_title": "Mettre à jour Prowlarr", + "items": [{ + "desc": "Au premier démarrage de Prowlarr cela peut prendre un moment avant que l'interface ne soit disponible !

Garder Prowlarr à jour en utilisant System>Updates dans l'interface Prowlarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + }] +}] diff --git a/spk/prowlarr/src/wizard/upgrade_uifile b/spk/prowlarr/src/wizard/upgrade_uifile new file mode 100644 index 000000000..bddeed405 --- /dev/null +++ b/spk/prowlarr/src/wizard/upgrade_uifile @@ -0,0 +1,13 @@ +[{ + "step_title": "Updating Prowlarr", + "items": [{ + "desc": "Keep Prowlarr up-to-date by using Prowlarr's built-in updater.
Navigate to System>Updates in the Prowlarr UI." + }] +}, { + "step_title": "DSM Permissions", + "items": [{ + "desc": "Permissions for all download-related packages are managed with the group 'sc-download' in DSM." + },{ + "desc": "NOTE: The package upgrade will try to set the correct permissions on your folders. If you get permission errors within Radarr, manually set Read/Write permissions for the 'sc-download' group on the reported folders using File Station." + }] +}] diff --git a/spk/prowlarr/src/wizard/upgrade_uifile_fre b/spk/prowlarr/src/wizard/upgrade_uifile_fre new file mode 100644 index 000000000..3980af955 --- /dev/null +++ b/spk/prowlarr/src/wizard/upgrade_uifile_fre @@ -0,0 +1,13 @@ +[{ + "step_title": "Mettre à jour Prowlarr", + "items": [{ + "desc": "Garder Prowlarr à jour en utilisant System>Updates dans l'interface Prowlarr." + }] +},{ + "step_title": "Permissions DSM", + "items": [{ + "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-download' dans DSM." + },{ + "desc": "NOTE: La mise à jour de l'application va tenter de corriger les permissions des répertoires. En cas d'erreur de permission dans Radarr, donner les droits de Lecture/Ecriture au groupe 'sc-download' sur les répertoires mentionnés depuis File Station." + }] +}] From 81228fc74b6bdae915285a9ac0473e6fd46179da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 May 2022 15:25:38 +0000 Subject: [PATCH 16/16] build(deps): bump docker/login-action from 1 to 2 Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v1...v2) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8d702616d..f1a39ae19 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -29,7 +29,7 @@ jobs: uses: docker/setup-buildx-action@v1 - name: Login to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.repository_owner }}