feat: initial commit, split off nextcloud packages from s3lph/package-pipeline
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
s3lph 2023-11-11 07:05:59 +01:00
commit f02435f2fa
Signed by: s3lph
GPG key ID: 0AA29A52FB33CFB5
41 changed files with 826 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
**/build/
*.deb

9
.skel/helpers.sh Normal file
View file

@ -0,0 +1,9 @@
#!/bin/bash
function github_changelog() {
curl https://api.github.com/repos/$1/releases | jq -r 'reverse | .[] | select(.draft==false and .prerelease==false) | "'"${PKGNAME}"' (\(.name)); urgency=medium\n \(.body // empty | gsub("\n";"\n "))\n -- '"${MAINTAINER}"' \(.created_at | fromdate | strftime("%a, %d %b %Y %T %z"))\n"' | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz"
}
function gitlab_changelog() {
curl https://gitlab.com/api/v4/$1/releases | jq -r 'reverse | .[] | select(.upcoming_release==false) | "'"${PKGNAME}"' (\(.name)); urgency=medium\n \(.description // empty | gsub("\n";"\n "))\n -- '"${MAINTAINER}"' \(.created_at | fromdate | strftime("%a, %d %b %Y %T %z"))\n"' | gzip -9n > "${PKGDIR}/usr/share/doc/${PKGNAME}/changelog.gz"
}

View file

@ -0,0 +1,158 @@
#!/bin/bash
set -exo pipefail
. $(dirname ${BASH_SOURCE[0]})/../helpers.sh
export ARCHS=(all)
function postinst_configure_pre() { :; }
function postinst_configure_post() { :; }
function _vcompare() {
for V in $@; do
if [[ "$V" =~ ^\<[0-9.]*$ ]]; then [[ $(echo -e "$NCMAJOR_OVERRIDE\n${V:1}" | sort -V | head -1) -eq "$NCMAJOR_OVERRIDE" ]] || return 1;
elif [[ "$V" =~ ^\<=[0-9.]*$ ]]; then [[ $(echo -e "$NCMAJOR_OVERRIDE\n${V:2}" | sort -V | head -1) -eq "$NCMAJOR_OVERRIDE" ]] || return 1;
elif [[ "$V" =~ ^\>[0-9.]*$ ]]; then [[ $(echo -e "$NCMAJOR_OVERRIDE\n${V:1}" | sort -rV | head -1) -eq "$NCMAJOR_OVERRIDE" ]] || return 1;
elif [[ "$V" =~ ^\>=[0-9.]*$ ]]; then [[ $(echo -e "$NCMAJOR_OVERRIDE\n${V:2}" | sort -rV | head -1) -eq "$NCMAJOR_OVERRIDE" ]] || return 1;
elif [[ "$V" =~ ^=[0-9.]*$ ]]; then [[ "$NCMAJOR_OVERRIDE" -eq "${V:1}" ]] || return 1;
elif [[ "$V" =~ ^==[0-9.]*$ ]]; then [[ "$NCMAJOR_OVERRIDE" -eq "${V:1}" ]] || return 1;
else
echo "Unknown version string '${V}'"
return 1
fi
done
return 0
}
function pre_fetch() { :; }
function _fetch() {
cd "${SRCDIR}"
VERSIONS=$(curl -H 'Accept: application/json' "${_NCAPPS_URL}" | jq --arg app "${APP}" -r "${_NCAPPS_JQ}")
while read -r VERSION URL COMPAT; do
if _vcompare $COMPAT; then
echo "Fetching version ${VERSION}"
wget "${URL}" --output-document "app.tar.gz"
tar -xf "app.tar.gz"
return
fi
done <<<$VERSIONS
echo "No compatible app version is available"
exit 1
}
function post_fetch() { :; }
function pre_prepare() { :; }
function _prepare() {
mkdir -p \
"${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)
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"')
PHP_MAX=$(cat "${SRCDIR}/${APP}/appinfo/info.xml" | xq-python -r '.info.dependencies.php."@max-version"')
PHP_DEP=""
# #f [[ "${PHP_MIN}" != "null" ]]; then
# PHP_DEP="${PHP_DEP}, php (>= ${PHP_MIN})"
# fi
# if [[ "${PHP_MAX}" != "null" ]]; then
# # awk increments the last version component, from https://stackoverflow.com/a/69489163
# PHP_MAX=$(echo "${PHP_MAX}" | awk -F. -v OFS=. '{$NF=$NF+1;print}')
# PHP_DEP="${PHP_DEP}, php (<< ${PHP_MAX})"
# fi
cp -r "${SRCDIR}/${APP}" "${PKGDIR}/usr/lib/nextcloud/nextcloud-apps/${APP}"
cat > "${PKGDIR}/DEBIAN/control" <<EOF
Package: ${PKGNAME}
Version: ${VERSION}
Maintainer: ${MAINTAINER}
Section: web
Priority: optional
Architecture: ${ARCH}
Depends: nextcloud-${NCMAJOR}${PHP_DEP}${ADDITIONAL_DEPS}
Provides: nextcloud-app-${APP//_/-}
Conflicts: nextcloud-app-${APP//_/-}
Description: ${SUMMARY}
$(echo ${DESCRIPTION} | fold --width=71 --spaces | sed -re 's/^([^ ])/ \1/g')
EOF
cat > "${PKGDIR}/DEBIAN/postinst" <<EOF
#!/bin/bash
set -exo pipefail
if [[ "\$1" == "configure" ]]; then
$(declare -f postinst_configure_pre | sed -e '1,2d' -e '$d')
# Only run migrations if nextcloud is installed and the app is enabled
if [[ -z "\$(grep installed /var/lib/nextcloud/webroot/config/config.php | grep false)" && \\
-n \$(sudo -u www-data php /var/lib/nextcloud/webroot/occ app:list | grep -B 10000 '^Disabled:' | grep -- "- ${APP}:") ]]; 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
$(declare -f postinst_configure_post | sed -e '1,2d' -e '$d')
fi
EOF
}
function post_prepare() { :; }
function pre_chown() { :; }
function _chown() {
find "${PKGDIR}" -type f -exec chmod 0644 {} \;
find "${PKGDIR}" -type d -exec chmod 0755 {} \;
# root:www-data
chown 0:0 -R "${PKGDIR}"
chown 0:33 -R "${PKGDIR}/usr/lib/nextcloud"
find "${PKGDIR}/DEBIAN" -type f -exec chmod 0644 {} \;
find "${PKGDIR}/DEBIAN" -type d -exec chmod 0755 {} \;
chmod -f 0755 "${PKGDIR}/DEBIAN/preinst" "${PKGDIR}/DEBIAN/postinst" "${PKGDIR}/DEBIAN/prerm" "${PKGDIR}/DEBIAN/postrm" || true
find "${PKGDIR}" -exec touch -m --reference "${SRCDIR}/${APP}/appinfo/info.xml" {} \;
}
function post_chown() { :; }
function pre_package() { :; }
function _package() {
cd "${BUILDDIR}"
dpkg-deb --build "${PKGDIR}" "${BUILDDIR}"
}
function post_package() { :; }
function build_nextcloud_app() {
export APP=$1
export NCMAJOR=$2
export NCMAJOR_OVERRIDE=${3:-$2}
export PKGNAME="nextcloud-${NCMAJOR}-app-${APP//_/-}"
export ROOT=${PWD}
export SKELDIR=$(dirname ${BASH_SOURCE[0]})
export BUILDDIR=${ROOT}/build
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)"'
pre_fetch
_fetch
post_fetch
for ARCH in ${ARCHS[@]}; do
export ARCH
if [[ "${ARCH}" == "all" ]]; then
export PKGDIR=${ROOT}/build/pkgdir
else
export PKGDIR=${ROOT}/build/pkgdir-${ARCH}
fi
mkdir -p ${PKGDIR}
pre_prepare
_prepare
post_prepare
pre_chown
_chown
post_chown
pre_package
_package
post_package
done
}

View file

@ -0,0 +1,24 @@
#!/bin/bash
if [[ "$#" -ne 1 ]]; then
echo "Usage: $0 <major version>"
exit 1
fi
if [[ -z "${GITEA_TOKEN}" ]]; then
echo "Missing env: GITEA_TOKEN"
exit 1
fi
packages=$(curl -s -H "Authorization: Bearer ${GITEA_TOKEN}" "https://git.kabelsalat.ch/api/v1/packages/s3lph?type=debian&q=nextcloud-$1" | jq -r '.[] | "\(.name)/\(.version)"')
nextgen=$(curl -s -H "Authorization: Bearer ${GITEA_TOKEN}" "https://git.kabelsalat.ch/api/v1/packages/s3lph?type=debian&q=nextcloud-$(($1+1))" | jq -r length)
if [[ "${nextgen}" -le 0 ]]; then
echo "No packages matching nextcloud-$(($1+1)); refusing deletion of nextcloud-$1"
exit 2
fi
for package in $packages; do
echo "$package"
curl -s -H "Authorization: Bearer ${GITEA_TOKEN}" -X DELETE "https://git.kabelsalat.ch/api/v1/packages/s3lph/debian/$package"
done

55
.woodpecker.yml Normal file
View file

@ -0,0 +1,55 @@
---
steps:
# One step per package
nextcloud-27: &job
image: git.kabelsalat.ch/s3lph/package-pipeline-builder/builder:latest
group: build
failure: ignore
secrets:
- GITEA_API_REPOSITORY_DEB
- GITEA_API_USERNAME
- GITEA_API_PASSWORD
- MAINTAINER
commands:
# woodpecker for some reason sets CI_STEP_NAME to something autogenerated like wp_01h7nk44xbs0kgqabpatbq2qkv_0_step_0
- |
if echo "$${CI_STEP_NAME}" | grep -Eq '^wp_'; then
export N=$(echo $${CI_STEP_NAME} | cut -d_ -f5)
cd "$(cat .woodpecker.yml | yq -r '.steps | keys[env.N]')"
else
cd "$${CI_STEP_NAME}"
fi
- '[ -x build.sh ] && ./build.sh'
- '[ -x package.sh ] && fakeroot ./package.sh'
- cd build
- lintian *.deb || true
# Upload to the repo
- |
for file in *deb; do
curl --user "$${GITEA_API_USERNAME}:$${GITEA_API_PASSWORD}" \
--upload-file "$${file}" \
"$${GITEA_API_REPOSITORY_DEB}"
done
#nextcloud-27-app-calendar: *job
#nextcloud-27-app-contacts: *job
#nextcloud-27-app-deck: *job
#nextcloud-27-app-forms: *job
#nextcloud-27-app-gpoddersync: *job
#nextcloud-27-app-gpxpod: *job
#nextcloud-27-app-groupfolders: *job
#nextcloud-27-app-polls: *job
#nextcloud-27-app-previewgenerator: *job
#nextcloud-27-app-mail: *job
#nextcloud-27-app-news: *job
#nextcloud-27-app-nextpod: *job
#nextcloud-27-app-notes: *job
#nextcloud-27-app-notify-push: *job
#nextcloud-27-app-richdocuments: *job
#nextcloud-27-app-richdocumentscode: *job
#nextcloud-27-app-talk: *job
#nextcloud-27-app-tasks: *job
#nextcloud-27-app-twofactor-webauthn: *job
#nextcloud-27-app-user-oidc: *job

20
LICENSE Normal file
View file

@ -0,0 +1,20 @@
Copyright 2023 s3lph
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

34
README.md Normal file
View file

@ -0,0 +1,34 @@
# Nextcloud Debian Packages
[![status-badge](https://woodpecker.kabelsalat.ch/api/badges/87/status.svg)](https://woodpecker.kabelsalat.ch/repos/87)
This project automatically builds Debian packages for Nextcloud and
some of its apps for my personal use (and sometimes adapted to my
needs) .
There is a daily Gitlab-CI run which builds the latest stable version
of each package and pushes them to my private repository. For more
information, please see [https://repo.s3lph.me/].
## Packages
- [nextcloud-27](https://github.com/nextcloud/server) (Code integrity check fails due to patches applied during build process!)
- [nextcloud-27-app-calendar](https://apps.nextcloud.com/apps/calendar)
- [nextcloud-27-app-contacts](https://apps.nextcloud.com/apps/contacts)
- [nextcloud-27-app-deck](https://apps.nextcloud.com/apps/deck)
- [nextcloud-27-app-forms](https://apps.nextcloud.com/apps/forms)
- [nextcloud-27-app-gpoddersync](https://apps.nextcloud.com/apps/gpoddersync)
- [nextcloud-27-app-gpxpod](https://apps.nextcloud.com/apps/gpxpod)
- [nextcloud-27-app-groupfolders](https://apps.nextcloud.com/apps/groupfolders)
- [nextcloud-27-app-polls](https://apps.nextcloud.com/apps/polls)
- [nextcloud-27-app-previewgenerator](https://apps.nextcloud.com/apps/previewgenerator)
- [nextcloud-27-app-mail](https://apps.nextcloud.com/apps/mail)
- [nextcloud-27-app-news](https://apps.nextcloud.com/apps/news)
- [nextcloud-27-app-nextpod](https://apps.nextcloud.com/apps/nextpod)
- [nextcloud-27-app-notes](https://apps.nextcloud.com/apps/notes)
- [nextcloud-27-app-notify-push](https://apps.nextcloud.com/apps/notify_push)
- [nextcloud-27-app-richdocuments](https://apps.nextcloud.com/apps/richdocuments)
- [nextcloud-27-app-richdocumentscode](https://apps.nextcloud.com/apps/richdocumentscode)
- [nextcloud-27-app-tasks](https://apps.nextcloud.com/apps/tasks)
- [nextcloud-27-app-twofactor-webauthn](https://apps.nextcloud.com/apps/twofactor_webauthn)
- [nextcloud-27-app-user-oidc](https://apps.nextcloud.com/apps/user_oidc)

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/calendar
}
build_nextcloud_app calendar 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/contacts
}
build_nextcloud_app contacts 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/deck
}
build_nextcloud_app deck 27

View file

@ -0,0 +1,9 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/forms
}
build_nextcloud_app forms 27

View file

@ -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 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog julien-nc/gpxpod
}
build_nextcloud_app gpxpod 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/groupfolders
}
build_nextcloud_app groupfolders 27

View file

@ -0,0 +1,9 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/mail
}
build_nextcloud_app mail 27

View file

@ -0,0 +1,9 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/news
}
build_nextcloud_app news 27

View file

@ -0,0 +1,8 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
export ADDITIONAL_DEPS=", nextcloud-27-app-gpoddersync"
build_nextcloud_app nextpod 27

View file

@ -0,0 +1,9 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/notes
}
build_nextcloud_app notes 27

View file

@ -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

View file

@ -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

View file

@ -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 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/polls
}
build_nextcloud_app polls 27

View file

@ -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

View file

@ -0,0 +1,9 @@
[Unit]
Description=Pre-Generate Nextcloud preview thumbnails
[Timer]
OnCalendar=*:0/15
Persistent=true
[Install]
WantedBy=timers.target

View file

@ -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 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/richdocuments
}
build_nextcloud_app richdocuments 27

View file

@ -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 27 25

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/spreed
}
build_nextcloud_app spreed 27

View file

@ -0,0 +1,10 @@
#!/bin/bash
. ../.skel/nextcloud-app/build-nextcloud-app
post_prepare() {
github_changelog nextcloud/tasks
}
build_nextcloud_app tasks 27

View file

@ -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 27

View file

@ -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 27

26
nextcloud-27/config.php Normal file
View file

@ -0,0 +1,26 @@
<?php
$CONFIG = array (
'installed' => 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,
]
],
);

View file

@ -0,0 +1,2 @@
/var/lib/nextcloud/webroot/config/config.php
/etc/apache2/sites-available/nextcloud.site.conf

View file

@ -0,0 +1,16 @@
Package: nextcloud-27
Version: __VERSION__
Maintainer: __MAINTAINER__
Section: web
Priority: optional
Architecture: all
Depends: php-cli (>=8.0), 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.

15
nextcloud-27/debian.postinst Executable file
View file

@ -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

View file

@ -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

View file

@ -0,0 +1,9 @@
[Unit]
Description=Nextcloud Cronjob
[Timer]
OnCalendar=*:0/5
Persistent=true
[Install]
WantedBy=timers.target

View file

@ -0,0 +1,33 @@
<VirtualHost *:80>
ServerName nextcloud.example.com
DocumentRoot /var/lib/nextcloud/webroot
Alias /dist-apps /usr/lib/nextcloud/nextcloud-apps
<Directory /var/lib/nextcloud/webroot>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
<Directory /usr/lib/nextcloud>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
<IfModule mod_dav.c>
Dav off
</IfModule>
<IfModule mod_rewrite.c>
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]
</IfModule>
</VirtualHost>

4
nextcloud-27/occ.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
/usr/bin/sudo -u www-data -- /usr/bin/php /var/lib/nextcloud/webroot/occ $@

79
nextcloud-27/package.sh Executable file
View file

@ -0,0 +1,79 @@
#!/bin/bash
set -exo pipefail
. ../.skel/helpers.sh
VERSION=27
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

View file

@ -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',
]);
?>
-<?php if (!$_['isFairUseOfFreePushService']) : ?>
- <div class="section">
- <div class="warning">
- <?php p($l->t('This community release of Nextcloud is unsupported and instant notifications are unavailable.')); ?>
- </div>
- </div>
-<?php endif; ?>
<div id="personal-settings" data-federation-enabled="<?php p($_['federationEnabled'] ? 'true' : 'false') ?>"
data-lookup-server-upload-enabled="<?php p($_['lookupServerUploadEnabled'] ? 'true' : 'false') ?>">
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);