aboutsummaryrefslogtreecommitdiffstats
path: root/community/nextcloud/APKBUILD
blob: 3fd929da2249bba6c07df61906b9c7e073ee8ff0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
pkgname=nextcloud
pkgver=28.0.3
pkgrel=0
_replaced_ver=27
pkgdesc="A safe home for all your data"
url="https://nextcloud.com/"
arch="noarch"
license="AGPL-3.0-only"
_php=php82
_php_mods="-bcmath -ctype -curl -dom -gd -fileinfo -gmp -iconv -intl
	-mbstring -opcache -openssl -pcntl -posix -session
	-simplexml -xml -xmlreader -xmlwriter -zip"
depends="ca-certificates $_php ${_php_mods//-/$_php-}"
makedepends="xmlstarlet"
provides="$pkgname-accessibility=$pkgver-r$pkgrel
	$pkgname-bruteforcesettings=$pkgver-r$pkgrel
	$pkgname-contactsinteraction=$pkgver-r$pkgrel
	$pkgname-cloud_federation_api=$pkgver-r$pkgrel
	$pkgname-dav=$pkgver-r$pkgrel
	$pkgname-files=$pkgver-r$pkgrel
	$pkgname-files_videoplayer=$pkgver-r$pkgrel
	$pkgname-federatedfilesharing=$pkgver-r$pkgrel
	$pkgname-lookup_server_connector=$pkgver-r$pkgrel
	$pkgname-oauth2=$pkgver-r$pkgrel
	$pkgname-provisioning_api=$pkgver-r$pkgrel
	$pkgname-related_resources=$pkgver-r$pkgrel
	$pkgname-settings=$pkgver-r$pkgrel
	$pkgname-theming=$pkgver-r$pkgrel
	$pkgname-twofactor_totp=$pkgver-r$pkgrel
	$pkgname-twofactor_backupcodes=$pkgver-r$pkgrel
	$pkgname-viewer=$pkgver-r$pkgrel
	$pkgname-workflowengine=$pkgver-r$pkgrel
	"
replaces="nextcloud$_replaced_ver"
install="$pkgname.pre-install $pkgname.pre-upgrade $pkgname.post-upgrade
	$pkgname-initscript.post-install"
subpackages="$pkgname-doc $pkgname-initscript $pkgname-mysql $pkgname-pgsql $pkgname-sqlite
	$pkgname-default-apps:_default_apps"
source="https://download.nextcloud.com/server/releases/nextcloud-$pkgver.tar.bz2
	nextcloud-dont-chmod.patch
	dont-update-htaccess.patch
	disable-integrity-check-as-default.patch
	use-external-docs-if-local-not-avail.patch

	$pkgname-config.php
	$pkgname.logrotate
	$pkgname.confd
	$pkgname.cron
	$pkgname-mysql.cnf
	fpm-pool.conf
	occ
	"
options="!check"
pkgusers="nextcloud"
pkggroups="www-data"
builddir="$srcdir"/$pkgname

# List of bundled apps to separate into subpackages. Keep it in sync!
# Note: Don't add "bruteforcesettings", "contactsinteraction",
# "cloud_federation_api", "files", "dav",
# "federatedfilesharing", "lookup_server_connector", "provisioning_api",
# "oauth2", "settings", "twofactor_backupcodes", "twofactor_totp",
# "theming", "viewer", "workflowengine", "related_resources"
# here, these should be always installed.
_apps="activity
	admin_audit
	circles
	comments
	dashboard
	encryption
	federation
	files_external
	files_pdfviewer
	files_reminders
	files_sharing
	files_trashbin
	files_versions
	firstrunwizard
	logreader
	nextcloud_announcements
	notifications
	password_policy
	photos
	privacy
	recommendations
	serverinfo
	support
	sharebymail
	survey_client
	suspicious_login
	systemtags
	text
	user_ldap
	user_status
	weather_status
	"
for _i in $_apps; do
	subpackages="$subpackages $pkgname-$_i:_package_app"
done

# Directory for apps shipped with Nextcloud.
_appsdir="usr/share/webapps/$pkgname/apps"

package() {
	local basedir="var/lib/$pkgname"
	local datadir="$basedir/data"
	local wwwdir="usr/share/webapps/$pkgname"
	local confdir="etc/$pkgname"

	mkdir -p "$pkgdir"
	cd "$pkgdir"

	mkdir -p ./${wwwdir%/*}
	cp -a "$builddir" ./$wwwdir

	chmod +x ./$wwwdir/occ
	chmod 664 ./$wwwdir/.htaccess \
		./$wwwdir/.user.ini

	# Let's not ship upstream's 'updatenotification' app and updater, which
	# has zero chance of working and a big chance of blowing things up.
	rm -r ./$wwwdir/apps/updatenotification \
		./$wwwdir/lib/private/Updater/VersionCheck.php

	# Replace bundled CA bundle with ours.
	ln -sf /etc/ssl/certs/ca-certificates.crt ./$wwwdir/resources/config/ca-bundle.crt

	install -d -m 770 -o nextcloud -g www-data \
		./$confdir ./$datadir ./$basedir/apps
	install -d -m 775 -o nextcloud -g www-data \
		./var/log/$pkgname

	# Create symlink from web root to site-apps, so web server can find
	# assets w/o explicit configuration for this layout.
	ln -s /$basedir/apps ./$wwwdir/apps-appstore

	mv ./$wwwdir/config/* ./$confdir/
	rm -r ./$wwwdir/config
	ln -s /$confdir ./$wwwdir/config

	mkdir -p ./usr/share/doc/$pkgname
	mv ./$wwwdir/core/doc ./usr/share/doc/$pkgname/core

	install -m 660 -o nextcloud -g www-data \
		"$srcdir"/$pkgname-config.php ./$confdir/config.php

	install -m 644 -D "$srcdir"/$pkgname.logrotate ./etc/logrotate.d/$pkgname

	install -m 755 -D "$srcdir"/occ ./usr/bin/occ

	# Clean some unnecessary files.
	find . -name .gitignore -delete \
		-o -name .bower.json -delete \
		-o -name 'README*' -delete \
		-o -name 'CHANGELOG*' -delete \
		-o -name 'CONTRIBUTING*' -delete
	find . -name .github -type d -prune -exec rm -r {} \;
}

doc() {
	replaces="nextcloud$_replaced_ver-doc"
	default_doc

	local target="$subpkgdir"/usr/share/webapps/$pkgname/core/doc
	mkdir -p "${target%/*}"
	ln -s ../../../doc/$pkgname/core "$target"
	install -m644 README.alpine "$subpkgdir"/usr/share/webapps/$pkgname/README.alpine
}

initscript() {
	pkgdesc="Init script that runs Nextcloud with php-fpm"
	depends="$pkgname $_php-fpm"
	replaces="nextcloud$_replaced_ver-initscript"

	local confdir="$subpkgdir/etc/$_php/php-fpm.d"
	local fpm_name="php-fpm${_php#php}"

	install -m 644 -D "$srcdir"/fpm-pool.conf "$confdir"/$pkgname.conf
	install -m 644 -D "$srcdir"/$pkgname.confd "$subpkgdir"/etc/conf.d/$pkgname
	install -m 755 -D "$srcdir"/$pkgname.cron "$subpkgdir"/etc/periodic/15min/$pkgname

	mkdir -p "$subpkgdir"/etc/init.d
	ln -s $fpm_name "$subpkgdir"/etc/init.d/$pkgname
}

pgsql() {
	pkgdesc="Nextcloud PostgreSQL support"
	depends="$pkgname $_php-pgsql $_php-pdo_pgsql"
	replaces="nextcloud$_replaced_ver-pgsql"
	mkdir -p "$subpkgdir"
}

sqlite() {
	pkgdesc="Nextcloud SQLite support"
	depends="$pkgname $_php-sqlite3 $_php-pdo_sqlite"
	replaces="nextcloud$_replaced_ver-sqlite"
	mkdir -p "$subpkgdir"
}

mysql() {
	pkgdesc="Nextcloud MySQL support"
	depends="$pkgname $_php-pdo_mysql"
	replaces="nextcloud$_replaced_ver-mysql"

	mkdir -p "$subpkgdir"
	install -m 644 -D "$srcdir"/$pkgname-mysql.cnf "$subpkgdir"/etc/my.cnf.d/$pkgname.cnf
}

_default_apps() {
	pkgdesc="Nextcloud default apps"
	depends="$pkgname"
	replaces="nextcloud$_replaced_ver-default-apps"

	local path; for path in "$pkgdir"/"$_appsdir"/*; do
		if grep -q '<default_enable\s*/>' "$path"/appinfo/info.xml; then
			depends="$depends $pkgname-${path##*/}"
		fi
	done

	mkdir -p "$subpkgdir"
}

_package_app() {
	local appname="${subpkgname#"$pkgname"-}"
	local appinfo="$pkgdir/$_appsdir/$appname/appinfo/info.xml"

	local name=$(xmlstarlet sel -t -v 'info/name/text()' "$appinfo")
	pkgdesc="Nextcloud ${name:-$appname} app"
	replaces="nextcloud$_replaced_ver-$appname"

	local php_deps=$(xmlstarlet sel -t -v 'info/dependencies/lib/text()' "$appinfo" \
		| xargs -r -n1 printf "$_php-%s\n")
	local app_deps=""

	case "$appname" in
		dashboard) app_deps="-accessibility"
		;;
		files_sharing)	app_deps="-federatedfilesharing"
		;;
		photos)
				app_deps="-viewer"
				provides="$pkgname-gallery=$pkgver-r$pkgrel"
				replaces="$replaces nextcloud$_replaced_ver-gallery"
		;;
		serverinfo) app_deps="-files_sharing"
	esac

	depends="$pkgname $php_deps ${app_deps//-/$pkgname-}"

	mkdir -p "$subpkgdir"/$_appsdir
	mv "$pkgdir"/$_appsdir/$appname "$subpkgdir"/$_appsdir/
}

sha512sums="
32945947bce96e8f8a7f75660b51f667bec0f9205ee5c3d0b76b1f002f68442f5e235d4f2841fc25d03a2ba06bf0862e3fe24c6d2aad8e6b53fc9599644ab6f8  nextcloud-28.0.3.tar.bz2
aea0adb2c3a48ec6af2958c6ccfe13adff86316a56084e763b7e6df9e21aa3435b13305b7c15cc2b795e83c9388b05006862f6465c29e3dc2c1fbd8eb8befcb9  nextcloud-dont-chmod.patch
aef3c92497d738d6968e0f0b0d415b4953500db24ae14af41ef972665cf7eff00cb6c53dc953845fdbb389c3c965a75b8b14b9247513c05cf4130fe1cfc61731  dont-update-htaccess.patch
ccee7b4d2520653dc4584e364f082c7d2c2ebce12642db47ad31bba3aa13fabeb0954876640f6a2854fdf8395b0a305b64b7ef668887a9326a8be0611ebfe008  disable-integrity-check-as-default.patch
c0a9b7c31c8beaca711f8e97d98441007b3dca7fb3d316d2eacd28a73b5233def6f846c02d98202f75efb9cb248b8787a80e20b07c32d1c7534a0e54bb20feab  use-external-docs-if-local-not-avail.patch
5f73cd9399fa484ef15bd47e803c93381deffbc7699eceadbb5c27e43b20156806d74e5021a64d28f0165ef87b519e962780651711a37bceb9f0b04455dfdce1  nextcloud-config.php
7388458a9e8b7afd3d3269718306410ffa59c3c23da4bef367a4d7f6d2570136fae9dd421b19c1441e7ffb15a5405e18bb5da67b1a15f9f45e8b98d3fda532ba  nextcloud.logrotate
dcc57735d7d4af4a7ebbdd1186d301e51d2ae4675022aea6bf1111222dfa188a3a490ebd6e7c8a7ac30046cb7d93f81cec72a51acbc60d0c10b7fb64630c637a  nextcloud.confd
ffbdd91841dc3b62a3d5e1b936408310c1c7d2cdf6a4893894e7748825e538b9201608c2eb0401b0ca4adb05ed9ea0bb06c614ecf57689434faa51a5002ec8be  nextcloud.cron
b9ad5434c384c96608f00d65c45f782e279c6756da8fb706f62ecaf7b7aa420077cb6989da5e85becc47418884ec0672e7db874174454ca679fdca84a50f537f  nextcloud-mysql.cnf
78ef204ee7c12b228c0b7b04333514e561c1c8e19153f5507224fa4fdd112aaaa6331747014f3b72181298f52ecd4223bcff4bd963b49b49153265254b07e79b  fpm-pool.conf
bd23b7581a3d0a27da8e33e1f756a4150ad145ea014cb10bb04df078180d862a6c9b0a404395c081b9adb5e44ddec086d4c6256eae553381e3e3918db07624f3  occ
"