diff --git a/.forgejo/workflows/package.yml b/.forgejo/workflows/package.yml index 0964c94..3387f37 100644 --- a/.forgejo/workflows/package.yml +++ b/.forgejo/workflows/package.yml @@ -55,4 +55,25 @@ jobs: nextcloud-29-app-tasks: *job nextcloud-29-app-twofactor-webauthn: *job nextcloud-29-app-user-oidc: *job - + nextcloud-30: *job + nextcloud-30-app-calendar: *job + nextcloud-30-app-contacts: *job + nextcloud-30-app-deck: *job + nextcloud-30-app-forms: *job + nextcloud-30-app-gpoddersync: *job + nextcloud-30-app-gpxpod: *job + nextcloud-30-app-groupfolders: *job + nextcloud-30-app-polls: *job + nextcloud-30-app-previewgenerator: *job + nextcloud-30-app-mail: *job + nextcloud-30-app-memories: *job + nextcloud-30-app-news: *job + nextcloud-30-app-nextpod: *job + nextcloud-30-app-notes: *job + nextcloud-30-app-notify-push: *job + nextcloud-30-app-richdocuments: *job + nextcloud-30-app-richdocumentscode: *job + nextcloud-30-app-talk: *job + nextcloud-30-app-tasks: *job + nextcloud-30-app-twofactor-webauthn: *job + nextcloud-30-app-user-oidc: *job diff --git a/.skel/nextcloud-app/build-nextcloud-app b/.skel/nextcloud-app/build-nextcloud-app index a0aff8c..1561d2d 100644 --- a/.skel/nextcloud-app/build-nextcloud-app +++ b/.skel/nextcloud-app/build-nextcloud-app @@ -51,7 +51,7 @@ function _prepare() { "${PKGDIR}/DEBIAN" \ "${PKGDIR}/usr/share/doc/${PKGNAME}" \ "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps" - VERSION=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r .info.version) + VERSION=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r .info.version | sed -re 's/-/~/g') SUMMARY=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r '.info.summary | if type == "array" then (.[] | select(.["@lang"]=="en") | .["#text"]) else (.) end') DESCRIPTION=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r '.info.description | if type == "array" then (.[] | select(.["@lang"]=="en") | .["#text"]) else (.) end') PHP_MIN=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r '.info.dependencies.php."@min-version"') @@ -126,6 +126,7 @@ function build_nextcloud_app() { export APP=$1 export NCMAJOR=$2 export NCMAJOR_OVERRIDE=${3:-$2} + export ALLOW_ALPHA=${4:-false} export PKGNAME="nextcloud-${NCMAJOR}-app-${APP//_/-}" export ROOT=${PWD} export SKELDIR=$(dirname ${BASH_SOURCE[0]}) @@ -133,7 +134,7 @@ function build_nextcloud_app() { export SRCDIR=${ROOT}/build/srcdir mkdir -p ${SRCDIR} export _NCAPPS_URL=https://apps.nextcloud.com/api/v1/apps.json - export _NCAPPS_JQ='.[] | select(.id == $app) | .releases[] | select(.isNightly == false) | select(.version | contains("-") == false) | "\(.version) \(.download) \(.rawPlatformVersionSpec)"' + export _NCAPPS_JQ='.[] | select(.id == $app) | .releases[] | select(.isNightly == '"${ALLOW_ALPHA}"') | select(.version | contains("-") == false) | "\(.version) \(.download) \(.rawPlatformVersionSpec)"' pre_fetch _fetch post_fetch diff --git a/README.md b/README.md index f3b9269..eeeab25 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ information, please see [https://repo.s3lph.me/](https://repo.s3lph.me/). - [nextcloud-29-app-contacts](https://apps.nextcloud.com/apps/contacts) - [nextcloud-29-app-deck](https://apps.nextcloud.com/apps/deck) - [nextcloud-29-app-forms](https://apps.nextcloud.com/apps/forms) -- [nextcloud-29-app-gpoddersync](https://apps.nextcloud.com/apps/gpoddersync) !!! +- [nextcloud-29-app-gpoddersync](https://apps.nextcloud.com/apps/gpoddersync) - [nextcloud-29-app-gpxpod](https://apps.nextcloud.com/apps/gpxpod) -- [nextcloud-29-app-groupfolders](https://apps.nextcloud.com/apps/groupfolders) !!! +- [nextcloud-29-app-groupfolders](https://apps.nextcloud.com/apps/groupfolders) - [nextcloud-29-app-polls](https://apps.nextcloud.com/apps/polls) - [nextcloud-29-app-previewgenerator](https://apps.nextcloud.com/apps/previewgenerator) - [nextcloud-29-app-mail](https://apps.nextcloud.com/apps/mail) @@ -28,6 +28,27 @@ information, please see [https://repo.s3lph.me/](https://repo.s3lph.me/). - [nextcloud-29-app-notify-push](https://apps.nextcloud.com/apps/notify_push) - [nextcloud-29-app-richdocuments](https://apps.nextcloud.com/apps/richdocuments) - [nextcloud-29-app-richdocumentscode](https://apps.nextcloud.com/apps/richdocumentscode) -- [nextcloud-29-app-tasks](https://apps.nextcloud.com/apps/tasks) !!! +- [nextcloud-29-app-tasks](https://apps.nextcloud.com/apps/tasks) - [nextcloud-29-app-twofactor-webauthn](https://apps.nextcloud.com/apps/twofactor_webauthn) - [nextcloud-29-app-user-oidc](https://apps.nextcloud.com/apps/user_oidc) +- [nextcloud-30](https://github.com/nextcloud/server) (Code integrity check fails due to patches applied during build process!) +- [nextcloud-30-app-calendar](https://apps.nextcloud.com/apps/calendar) +- [nextcloud-30-app-contacts](https://apps.nextcloud.com/apps/contacts) +- [nextcloud-30-app-deck](https://apps.nextcloud.com/apps/deck) +- [nextcloud-30-app-forms](https://apps.nextcloud.com/apps/forms) +- [nextcloud-30-app-gpoddersync](https://apps.nextcloud.com/apps/gpoddersync) +- [nextcloud-30-app-gpxpod](https://apps.nextcloud.com/apps/gpxpod) +- [nextcloud-30-app-groupfolders](https://apps.nextcloud.com/apps/groupfolders) +- [nextcloud-30-app-polls](https://apps.nextcloud.com/apps/polls) +- [nextcloud-30-app-previewgenerator](https://apps.nextcloud.com/apps/previewgenerator) +- [nextcloud-30-app-mail](https://apps.nextcloud.com/apps/mail) +- [nextcloud-30-app-memories](https://apps.nextcloud.com/apps/memories) +- [nextcloud-30-app-news](https://apps.nextcloud.com/apps/news) (Currently a prerelease intended for NC29) +- [nextcloud-30-app-nextpod](https://apps.nextcloud.com/apps/nextpod) +- [nextcloud-30-app-notes](https://apps.nextcloud.com/apps/notes) +- [nextcloud-30-app-notify-push](https://apps.nextcloud.com/apps/notify_push) +- [nextcloud-30-app-richdocuments](https://apps.nextcloud.com/apps/richdocuments) +- [nextcloud-30-app-richdocumentscode](https://apps.nextcloud.com/apps/richdocumentscode) +- [nextcloud-30-app-tasks](https://apps.nextcloud.com/apps/tasks) +- [nextcloud-30-app-twofactor-webauthn](https://apps.nextcloud.com/apps/twofactor_webauthn) +- [nextcloud-30-app-user-oidc](https://apps.nextcloud.com/apps/user_oidc) diff --git a/nextcloud-30-app-calendar/package.sh b/nextcloud-30-app-calendar/package.sh new file mode 100755 index 0000000..18ca618 --- /dev/null +++ b/nextcloud-30-app-calendar/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/calendar +} + +build_nextcloud_app calendar 30 + diff --git a/nextcloud-30-app-contacts/package.sh b/nextcloud-30-app-contacts/package.sh new file mode 100755 index 0000000..5cdcdcb --- /dev/null +++ b/nextcloud-30-app-contacts/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/contacts +} + +build_nextcloud_app contacts 30 + diff --git a/nextcloud-30-app-deck/package.sh b/nextcloud-30-app-deck/package.sh new file mode 100755 index 0000000..79add54 --- /dev/null +++ b/nextcloud-30-app-deck/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/deck +} + +build_nextcloud_app deck 30 + diff --git a/nextcloud-30-app-forms/package.sh b/nextcloud-30-app-forms/package.sh new file mode 100755 index 0000000..8d3fe9a --- /dev/null +++ b/nextcloud-30-app-forms/package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/forms +} + +build_nextcloud_app forms 30 diff --git a/nextcloud-30-app-gpoddersync/package.sh b/nextcloud-30-app-gpoddersync/package.sh new file mode 100755 index 0000000..5705d52 --- /dev/null +++ b/nextcloud-30-app-gpoddersync/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz" +} + +build_nextcloud_app gpoddersync 30 + diff --git a/nextcloud-30-app-gpxpod/package.sh b/nextcloud-30-app-gpxpod/package.sh new file mode 100755 index 0000000..c6ea062 --- /dev/null +++ b/nextcloud-30-app-gpxpod/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog julien-nc/gpxpod +} + +build_nextcloud_app gpxpod 30 + diff --git a/nextcloud-30-app-groupfolders/package.sh b/nextcloud-30-app-groupfolders/package.sh new file mode 100755 index 0000000..cea20d2 --- /dev/null +++ b/nextcloud-30-app-groupfolders/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/groupfolders +} + +build_nextcloud_app groupfolders 30 + diff --git a/nextcloud-30-app-mail/package.sh b/nextcloud-30-app-mail/package.sh new file mode 100755 index 0000000..d41239c --- /dev/null +++ b/nextcloud-30-app-mail/package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/mail +} + +build_nextcloud_app mail 30 diff --git a/nextcloud-30-app-memories/package.sh b/nextcloud-30-app-memories/package.sh new file mode 100755 index 0000000..2955433 --- /dev/null +++ b/nextcloud-30-app-memories/package.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +export ARCHS=(amd64 arm64) + +function _ncarch() { + case "$1" in + amd64) + echo x86_64 + ;; + arm64) + echo aarch64 + ;; + *) + echo no such architecture + exit 1 + esac +} + +function _binarch() { + case "$1" in + amd64) + echo amd64 + ;; + arm64) + echo aarch64 + ;; + *) + echo no such architecture + exit 1 + esac +} + +function post_chown() { + chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/memories/bin-ext/exiftool/build_tag_lookup" + chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/memories/bin-ext/exiftool/exiftool" + chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/memories/bin-ext/exiftool/validate" +} + +post_prepare() { + NCARCH=$(_ncarch $ARCH) + for oarch in ${ARCHS[@]}; do + if [[ "$(_ncarch $oarch)" == "${NCARCH}" ]]; then + continue + fi + binarch=$(_binarch $oarch) + rm -f ${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/memories/bin-ext/*-${binarch}* + rm -f ${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/memories/bin-ext/exiftool/*-${binarch}* + done + github_changelog pulsejet/memories +} + +export ADDITIONAL_DEPS=", sensible-utils" + +build_nextcloud_app memories 30 + diff --git a/nextcloud-30-app-news/package.sh b/nextcloud-30-app-news/package.sh new file mode 100755 index 0000000..53bf9b3 --- /dev/null +++ b/nextcloud-30-app-news/package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/news +} + +build_nextcloud_app news 30 29 true diff --git a/nextcloud-30-app-nextpod/package.sh b/nextcloud-30-app-nextpod/package.sh new file mode 100755 index 0000000..deef865 --- /dev/null +++ b/nextcloud-30-app-nextpod/package.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +export ADDITIONAL_DEPS=", nextcloud-30-app-gpoddersync" + +build_nextcloud_app nextpod 30 + diff --git a/nextcloud-30-app-notes/package.sh b/nextcloud-30-app-notes/package.sh new file mode 100755 index 0000000..7c65dd1 --- /dev/null +++ b/nextcloud-30-app-notes/package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/notes +} + +build_nextcloud_app notes 30 diff --git a/nextcloud-30-app-notify-push/nextcloud-notify-push.default b/nextcloud-30-app-notify-push/nextcloud-notify-push.default new file mode 100644 index 0000000..f22165e --- /dev/null +++ b/nextcloud-30-app-notify-push/nextcloud-notify-push.default @@ -0,0 +1,25 @@ +# Mandatory: TCP port to listen on +PORT=7867 + +# The push server can be configured either by loading the config from +# the nextcloud config.php or by setting all options through +# environment variables. +# +# Re-using the configuration from nextcloud is the recommended way, as +# it ensures that the configuration remains in sync. +CONFIG=/var/lib/nextcloud/webroot/config/config.php + +# If using the config.php isn't possible, you can configure the push +# server by setting the following environment variables: + +# connection url for the Nextcloud database +#DATABASE_URL=postgres://user:password@db_host/db_name + +# database prefix configured in Nextcloud +#DATABASE_PREFIX=oc_ + +# connection url for redis +#REDIS_URL=redis://localhost + +# url for the nextcloud instance +#NEXTCLOUD_URL=https://cloud.example.com \ No newline at end of file diff --git a/nextcloud-30-app-notify-push/nextcloud-notify-push.service b/nextcloud-30-app-notify-push/nextcloud-notify-push.service new file mode 100644 index 0000000..df4c955 --- /dev/null +++ b/nextcloud-30-app-notify-push/nextcloud-notify-push.service @@ -0,0 +1,12 @@ +[Unit] +Description=Push daemon for Nextcloud clients + +[Service] +EnvironmentFile=-/etc/default/nextcloud-notify-push +ExecStart=/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push $CONFIG +User=www-data +Group=www-data +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/nextcloud-30-app-notify-push/package.sh b/nextcloud-30-app-notify-push/package.sh new file mode 100755 index 0000000..8b896c2 --- /dev/null +++ b/nextcloud-30-app-notify-push/package.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +export ARCHS=(amd64 arm64 armhf) + +function _ncarch() { + case "$1" in + amd64) + echo x86_64 + ;; + arm64) + echo aarch64 + ;; + armhf) + echo armv7 + ;; + *) + echo no such architecture + exit 1 + esac +} + +function post_prepare() { + NCARCH=$(_ncarch $ARCH) + mkdir -p \ + "${PKGDIR}/lib/systemd/system" \ + "${PKGDIR}/etc/default" + mv "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/${NCARCH}/notify_push" \ + "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push" + find "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/" -type d -mindepth 1 -maxdepth 1 -exec rm -rf {} \; + cp "${ROOT}/nextcloud-notify-push.service" "${PKGDIR}/lib/systemd/system/nextcloud-notify-push.service" + cp "${ROOT}/nextcloud-notify-push.default" "${PKGDIR}/etc/default/nextcloud-notify-push" + cp "${SRCDIR}/notify_push/LICENSE" "${PKGDIR}/usr/share/doc/nextcloud-${NCMAJOR}-app-${APP//_/-}/copyright" + echo '/etc/default/nextcloud-notify-push' > "${PKGDIR}/DEBIAN/conffiles" + github_changelog nextcloud/notify_push +} + +function post_chown() { + chmod 0600 "${PKGDIR}/etc/default/nextcloud-notify-push" + chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/notify_push/bin/notify_push" +} + +function postinst_configure_post() { + deb-systemd-helper enable nextcloud-notify-push.service + deb-systemd-invoke restart nextcloud-notify-push.service +} + +build_nextcloud_app notify_push 30 diff --git a/nextcloud-30-app-polls/package.sh b/nextcloud-30-app-polls/package.sh new file mode 100755 index 0000000..34ad880 --- /dev/null +++ b/nextcloud-30-app-polls/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/polls +} + +build_nextcloud_app polls 30 + diff --git a/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.service b/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.service new file mode 100644 index 0000000..e9f36bc --- /dev/null +++ b/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.service @@ -0,0 +1,8 @@ +[Unit] +Description=Pre-Generate Nextcloud preview thumbnails + +[Service] +Type=oneshot +ExecStart=/usr/bin/php /var/lib/nextcloud/webroot/occ preview:pre-generate +User=www-data +Group=www-data diff --git a/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.timer b/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.timer new file mode 100644 index 0000000..b718e19 --- /dev/null +++ b/nextcloud-30-app-previewgenerator/nextcloud-preview-generator.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Pre-Generate Nextcloud preview thumbnails + +[Timer] +OnCalendar=*:0/15 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/nextcloud-30-app-previewgenerator/package.sh b/nextcloud-30-app-previewgenerator/package.sh new file mode 100755 index 0000000..e777b2f --- /dev/null +++ b/nextcloud-30-app-previewgenerator/package.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + mkdir -p "${PKGDIR}/lib/systemd/system/" + cp "${ROOT}/nextcloud-preview-generator.service" "${PKGDIR}/lib/systemd/system/nextcloud-preview-generator.service" + cp "${ROOT}/nextcloud-preview-generator.timer" "${PKGDIR}/lib/systemd/system/nextcloud-preview-generator.timer" + github_changelog nextcloud/previewgenerator +} + +postinst_configure_post() { + deb-systemd-helper enable nextcloud-preview-generator.timer +} + +build_nextcloud_app previewgenerator 30 + diff --git a/nextcloud-30-app-richdocuments/package.sh b/nextcloud-30-app-richdocuments/package.sh new file mode 100755 index 0000000..99c3206 --- /dev/null +++ b/nextcloud-30-app-richdocuments/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/richdocuments +} + +build_nextcloud_app richdocuments 30 + diff --git a/nextcloud-30-app-richdocumentscode/package.sh b/nextcloud-30-app-richdocumentscode/package.sh new file mode 100755 index 0000000..8329dd8 --- /dev/null +++ b/nextcloud-30-app-richdocumentscode/package.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +export ARCHS=(amd64) + +post_prepare() { + github_changelog CollaboraOnline/richdocumentscode +} + +post_chown() { + chmod 0755 "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/collabora/Collabora_Online.AppImage" +} + +build_nextcloud_app richdocumentscode 30 diff --git a/nextcloud-30-app-talk/package.sh b/nextcloud-30-app-talk/package.sh new file mode 100755 index 0000000..c6a8eca --- /dev/null +++ b/nextcloud-30-app-talk/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/spreed +} + +build_nextcloud_app spreed 30 + diff --git a/nextcloud-30-app-tasks/package.sh b/nextcloud-30-app-tasks/package.sh new file mode 100755 index 0000000..0e8581c --- /dev/null +++ b/nextcloud-30-app-tasks/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + github_changelog nextcloud/tasks +} + +build_nextcloud_app tasks 30 + diff --git a/nextcloud-30-app-twofactor-webauthn/package.sh b/nextcloud-30-app-twofactor-webauthn/package.sh new file mode 100755 index 0000000..f17cd45 --- /dev/null +++ b/nextcloud-30-app-twofactor-webauthn/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz" +} + +build_nextcloud_app twofactor_webauthn 30 + diff --git a/nextcloud-30-app-user-oidc/package.sh b/nextcloud-30-app-user-oidc/package.sh new file mode 100755 index 0000000..073acae --- /dev/null +++ b/nextcloud-30-app-user-oidc/package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../.skel/nextcloud-app/build-nextcloud-app + +post_prepare() { + cat "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}/CHANGELOG.md" | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz" +} + +build_nextcloud_app user_oidc 30 + diff --git a/nextcloud-30/config.php b/nextcloud-30/config.php new file mode 100644 index 0000000..863fdba --- /dev/null +++ b/nextcloud-30/config.php @@ -0,0 +1,26 @@ + false, + + 'trusted_domains' => [ + 'nextcloud.example.com' + ], + 'overwrite.cli.url' => 'http://nextcloud.example.com', + 'datadirectory' => '/var/lib/nextcloud/data', + 'logfile' => '/var/log/nextcloud/nextcloud.log', + + 'mysql.utf8mb4' => true, + + 'connectivity_check_domains' => ['localhost'], + + 'appstoreenabled' => false, + 'apps_paths' => [ + [ + 'path'=> '/usr/lib/nextcloud/nextcloud-apps', + 'url' => '/dist-apps', + 'writable' => false, + ] + ], + +); diff --git a/nextcloud-30/debian.conffiles b/nextcloud-30/debian.conffiles new file mode 100644 index 0000000..167e38d --- /dev/null +++ b/nextcloud-30/debian.conffiles @@ -0,0 +1,2 @@ +/var/lib/nextcloud/webroot/config/config.php +/etc/apache2/sites-available/nextcloud.site.conf diff --git a/nextcloud-30/debian.control b/nextcloud-30/debian.control new file mode 100644 index 0000000..063bcbc --- /dev/null +++ b/nextcloud-30/debian.control @@ -0,0 +1,16 @@ +Package: nextcloud-30 +Version: __VERSION__ +Maintainer: __MAINTAINER__ +Section: web +Priority: optional +Architecture: all +Depends: php-cli (>=8.1), php-curl, php-gd, php-mbstring, php-xml, php-zip, php-bz2, php-intl +Suggests: apache2, mariadb-server, php-mysql, php-redis +Provides: nextcloud, nextcloud-app-twofactor-totp +Conflicts: nextcloud, nextcloud-app-twofactor-totp +Replaces: nextcloud-app-twofactor-totp +Description: A safe home for all your data. + Nextcloud Hub is the first completely integrated on-premises content + collaboration platform on the market, ready for a new generation of + users who expect seamless online collaboration capabilities out of + the box. diff --git a/nextcloud-30/debian.postinst b/nextcloud-30/debian.postinst new file mode 100755 index 0000000..b4c6f07 --- /dev/null +++ b/nextcloud-30/debian.postinst @@ -0,0 +1,15 @@ +#!/bin/bash + +set -e + +if [[ "$1" == "configure" ]]; then + + deb-systemd-helper enable nextcloud-cron.timer + + # Only run occ upgrade if nextcloud has been configured + if [[ -z "$(grep installed /var/lib/nextcloud/webroot/config/config.php | grep false)" ]]; then + sudo -u www-data php /var/lib/nextcloud/webroot/occ upgrade + sudo -u www-data php /var/lib/nextcloud/webroot/occ maintenance:mode --off + fi + +fi diff --git a/nextcloud-30/nextcloud-cron.service b/nextcloud-30/nextcloud-cron.service new file mode 100644 index 0000000..0b689ca --- /dev/null +++ b/nextcloud-30/nextcloud-cron.service @@ -0,0 +1,8 @@ +[Unit] +Description=Nextcloud Cronjob + +[Service] +Type=oneshot +ExecStart=/usr/bin/php /var/lib/nextcloud/webroot/cron.php +User=www-data +Group=www-data diff --git a/nextcloud-30/nextcloud-cron.timer b/nextcloud-30/nextcloud-cron.timer new file mode 100644 index 0000000..9295c86 --- /dev/null +++ b/nextcloud-30/nextcloud-cron.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Nextcloud Cronjob + +[Timer] +OnCalendar=*:0/5 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/nextcloud-30/nextcloud.site.conf b/nextcloud-30/nextcloud.site.conf new file mode 100644 index 0000000..0aa033d --- /dev/null +++ b/nextcloud-30/nextcloud.site.conf @@ -0,0 +1,33 @@ + + + ServerName nextcloud.example.com + + DocumentRoot /var/lib/nextcloud/webroot + Alias /dist-apps /usr/lib/nextcloud/nextcloud-apps + + + Require all granted + AllowOverride All + Options FollowSymLinks MultiViews + + + + Require all granted + AllowOverride All + Options FollowSymLinks MultiViews + + + + Dav off + + + + RewriteEngine on + RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L] + RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L] + RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L] + RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L] + RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L] + + + \ No newline at end of file diff --git a/nextcloud-30/occ.sh b/nextcloud-30/occ.sh new file mode 100755 index 0000000..541b5ed --- /dev/null +++ b/nextcloud-30/occ.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +/usr/bin/sudo -u www-data -- /usr/bin/php /var/lib/nextcloud/webroot/occ $@ + diff --git a/nextcloud-30/package.sh b/nextcloud-30/package.sh new file mode 100755 index 0000000..a083f85 --- /dev/null +++ b/nextcloud-30/package.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -exo pipefail + +. ../.skel/helpers.sh + +VERSION=30 + +URL="https://download.nextcloud.com/server/releases/latest-${VERSION}.tar.bz2" + +ROOT=$(pwd) +function fetch() { + cd "${SRCDIR}" + wget "${URL}" --output-document "nextcloud-${VERSION}.tar.bz2" + tar -xf "nextcloud-${VERSION}.tar.bz2" + patch --strip=1 --directory="${SRCDIR}" --ignore-whitespace < "${ROOT}/patches/01_isfairuse_userfacing_ui.patch" +} + +function prepare() { + mkdir -p \ + "${PKGDIR}/DEBIAN" \ + "${PKGDIR}/var/lib/nextcloud" \ + "${PKGDIR}/usr/lib/nextcloud" \ + "${PKGDIR}/var/lib/nextcloud/data" \ + "${PKGDIR}/lib/systemd/system" \ + "${PKGDIR}/var/log/nextcloud" \ + "${PKGDIR}/usr/local/bin" \ + "${PKGDIR}/etc/apache2/sites-available" \ + "${PKGDIR}/usr/share/doc/${PKGNAME}" + VERSION=$(cat "${SRCDIR}/nextcloud/version.php" | grep "OC_VersionString" | cut -d"'" -f2) + cp -r "${SRCDIR}/nextcloud" "${PKGDIR}/var/lib/nextcloud/webroot" + mv "${PKGDIR}/var/lib/nextcloud/webroot/apps" "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps" + cp "${ROOT}/config.php" "${PKGDIR}/var/lib/nextcloud/webroot/config/config.php" + cp "${ROOT}/debian.control" "${PKGDIR}/DEBIAN/control" + cp "${ROOT}/debian.conffiles" "${PKGDIR}/DEBIAN/conffiles" + cp "${ROOT}/debian.postinst" "${PKGDIR}/DEBIAN/postinst" + cp "${ROOT}/nextcloud-cron.service" "${ROOT}/nextcloud-cron.timer" "${PKGDIR}/lib/systemd/system/" + cp "${ROOT}/nextcloud.site.conf" "${PKGDIR}/etc/apache2/sites-available/" + cp "${ROOT}/occ.sh" "${PKGDIR}/usr/local/bin/occ" + sed -re "s/__VERSION__/${VERSION}/g" -i "${PKGDIR}/DEBIAN/control" + sed -re "s/__MAINTAINER__/${MAINTAINER}/g" -i "${PKGDIR}/DEBIAN/control" + cp "${SRCDIR}/nextcloud/COPYING" "${PKGDIR}/usr/share/doc/${PKGNAME}/copyright" + github_changelog nextcloud/server + find "${PKGDIR}" -exec touch -m --reference "${SRCDIR}/nextcloud/version.php" {} \; +} + +function _chown() { + chown 0:0 -R "${PKGDIR}/" + # www-data:www-data + chown 33:33 -R \ + "${PKGDIR}/var/lib/nextcloud" \ + "${PKGDIR}/var/log/nextcloud" \ + "${PKGDIR}/usr/lib/nextcloud" + find "${PKGDIR}/var/lib/nextcloud/webroot" "${PKGDIR}/var/log/nextcloud" -type f -exec chmod 0640 {} \; + find "${PKGDIR}/var/lib/nextcloud/webroot" "${PKGDIR}/var/log/nextcloud" -type d -exec chmod 0750 {} \; + find "${PKGDIR}/usr/lib/nextcloud" -type f -exec chmod 0644 {} \; + find "${PKGDIR}/usr/lib/nextcloud" -type d -exec chmod 0755 {} \; + ln -sf "/var/lib/nextcloud/webroot/core" "${PKGDIR}/usr/lib/nextcloud/core" +} + +function package() { + cd "${BUILDDIR}" + dpkg-deb --build "${PKGDIR}" "${BUILDDIR}" +} + +function build() { + export PKGNAME="nextcloud-${VERSION}" + export BUILDDIR=${ROOT}/build + export SRCDIR=${ROOT}/build/srcdir + export PKGDIR=${ROOT}/build/pkgdir + mkdir -p ${SRCDIR} ${PKGDIR} + fetch + prepare + _chown + package +} + + +build diff --git a/nextcloud-30/patches/01_isfairuse_userfacing_ui.patch b/nextcloud-30/patches/01_isfairuse_userfacing_ui.patch new file mode 100644 index 0000000..a983b8f --- /dev/null +++ b/nextcloud-30/patches/01_isfairuse_userfacing_ui.patch @@ -0,0 +1,33 @@ +diff -3ur a/nextcloud/apps/settings/templates/settings/personal/personal.info.php b/nextcloud/apps/settings/templates/settings/personal/personal.info.php +--- a/nextcloud/apps/settings/templates/settings/personal/personal.info.php 2022-10-21 16:18:20.730871392 +0200 ++++ b/nextcloud/apps/settings/templates/settings/personal/personal.info.php 2022-10-21 16:23:38.133437330 +0200 +@@ -35,13 +35,6 @@ + 'vue-settings-personal-info', + ]); + ?> +- +-
+-
+- t('This community release of Nextcloud is unsupported and instant notifications are unavailable.')); ?> +-
+-
+- + +
+diff -3ur a/nextcloud/core/Controller/LoginController.php b/nextcloud/core/Controller/LoginController.php +--- a/nextcloud/core/Controller/LoginController.php 2022-10-21 16:18:20.610870426 +0200 ++++ b/nextcloud/core/Controller/LoginController.php 2022-10-21 16:19:52.921615072 +0200 +@@ -147,12 +147,6 @@ + } + + $loginMessages = $this->session->get('loginMessages'); +- if (!$this->manager->isFairUseOfFreePushService()) { +- if (!is_array($loginMessages)) { +- $loginMessages = [[], []]; +- } +- $loginMessages[1][] = $this->l10n->t('This community release of Nextcloud is unsupported and push notifications are limited.'); +- } + if (is_array($loginMessages)) { + [$errors, $messages] = $loginMessages; + $this->initialStateService->provideInitialState('core', 'loginMessages', $messages);