diff --git a/0000-disable-update-version-check.patch b/0000-disable-update-version-check.patch index 2d5828b..4a77733 100644 --- a/0000-disable-update-version-check.patch +++ b/0000-disable-update-version-check.patch @@ -2,7 +2,7 @@ diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 5a14bb17507..38dcb55db7f 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php -@@ -214,15 +214,17 @@ class Updater extends BasicEmitter { +@@ -174,10 +174,13 @@ $this->config->setAppValue('core', 'vendor', $currentVendor); } @@ -13,15 +13,9 @@ index 5a14bb17507..38dcb55db7f 100644 + */ if ($currentVendor === 'nextcloud') { - return isset($allowedPreviousVersions[$currentVendor][$majorMinor]) -- && (version_compare($oldVersion, $newVersion, '<=') || -- $this->config->getSystemValueBool('debug', false)); +- && (version_compare($oldVersion, $newVersion, '<=') +- || $this->config->getSystemValueBool('debug', false)); + return true; } // Check if the instance can be migrated -- return isset($allowedPreviousVersions[$currentVendor][$majorMinor]) || -- isset($allowedPreviousVersions[$currentVendor][$oldVersion]); -+ return true; - } - - /** diff --git a/README.md b/README.md index 9db76d6..e294b77 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Nextcloud requires some additional steps after installation/upgrade that are not ### Other versions -Nextcloud maintains multiple stable branches at the same time. To install those, check out the [modular nextcloud package](https://src.fedoraproject.org/modules/nextcloud). +[modular nextcloud package Fedora and CentOS/RHEL](https://src.fedoraproject.org/modules/nextcloud) is over -### CentOS/RHEL +https://fedoraproject.org/wiki/Changes/RetireModularity -For CentOS/RHEL 8+, nextcloud is available through the [modular repository](https://src.fedoraproject.org/modules/nextcloud). Due to incompatible PHP versions, nextcloud is no longer available for CentOS/RHEL 7 or older. +Once Fedora Linux 38 reaches end of life, we will retire the Fedora instance of Module Build Service. diff --git a/nextcloud-README.fedora b/nextcloud-README.fedora index b64fc8d..748b6cf 100644 --- a/nextcloud-README.fedora +++ b/nextcloud-README.fedora @@ -12,7 +12,7 @@ If not, make sure your webserver is running properly. Webserver --------- -Currently nextcloud in Fedora supports httpd (Apache) and nginx. You must install +Currently nextcloud in Fedora/EPEL supports httpd (Apache) and nginx. You must install at least one webserver subpackage (nextcloud-). These packages include additional configuration files for the webservers. Remote access is disabled by default on httpd. To enable access from any host for Apache **AFTER** you @@ -67,7 +67,7 @@ ownership and SELinux context attributes. Logging ------- As specified by the configuration file, nextcloud sends messages to the system -logger, which means in a standard Fedora configuration it will log to the +logger, which means in a standard Fedora/EPEL configuration it will log to the systemd journal: try "journalctl -b -t Nextcloud". You can also change the loglevel or switch to the built-in log mechanism of nextcloud. @@ -115,4 +115,4 @@ systemctl enable --now nextcloud-cron.timer Migration from owncloud ----------------------- -For detailed instructions on this please read MIGRATION.fedora +For detailed instructions on this please read MIGRATION.distro diff --git a/nextcloud-defaults.inc b/nextcloud-defaults.inc index c9ceec5..fef3ec6 100644 --- a/nextcloud-defaults.inc +++ b/nextcloud-defaults.inc @@ -1,76 +1,8 @@ -# These are based on the .htaccess file shipped by ownCloud, with -# appropriate adjustments for distribution packaging. Some directives -# that are irrelevant to the Fedora/EPEL ecosystem are omitted. This -# file contains directives that should be applied within the /nextcloud -# filesystem; directives that should be applied site-wide when -# ownCloud is installed are placed directly in nextcloud.conf. +# The contents of the default Nextcloud .htaccess file are appended to this +# file during build. Some directives may be irrelevant to the Fedora/EPEL +# ecosystem but are NOT omitted. # # DO NOT EDIT THIS FILE DIRECTLY. To override any element of the -# packaged ownCloud configuration, create a new /etc/httpd/conf.d/ -# file which will be read later than 'nextcloud.conf'. +# packaged Nextcloud configuration, create a new /etc/httpd/conf.d/ +# file which will be read later than this one. -AllowOverride None - -ErrorDocument 403 /nextcloud/core/templates/403.php -ErrorDocument 404 /nextcloud/core/templates/404.php - - - - - SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 - RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION - - - - SetHandler "proxy:unix:/run/php-fpm/nextcloud.sock|fcgi://localhost" - - - - - php_value upload_max_filesize 10G - php_value post_max_size 10G - php_value memory_limit 512M - php_value mbstring.func_overload 0 - php_value always_populate_raw_post_data -1 - php_value default_charset 'UTF-8' - php_value output_buffering off - - SetEnv htaccessWorking true - - - - - php_value upload_max_filesize 10G - php_value post_max_size 10G - php_value memory_limit 512M - php_value mbstring.func_overload 0 - php_value always_populate_raw_post_data -1 - php_value default_charset 'UTF-8' - php_value output_buffering off - - SetEnv htaccessWorking true - - - -# The rewrites for legacy caldav and carddav URLs are omitted here -# because they do not work with Fedora's ownCloud directory layout. -# See https://github.com/nextcloud/core/issues/243#issuecomment-75426453 - - RewriteEngine on - RewriteBase /nextcloud/ - RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - RewriteRule ^remote/(.*) remote.php [QSA,L] - - -AddDefaultCharset utf-8 -Options -Indexes - - - ModPagespeed Off - - - - - Header set Cache-Control "max-age=7200, public" - - diff --git a/nextcloud-fedora-autoloader.php b/nextcloud-fedora-autoloader.php deleted file mode 100644 index a125728..0000000 --- a/nextcloud-fedora-autoloader.php +++ /dev/null @@ -1,70 +0,0 @@ -register(); -} - -// For PEAR components -$fedoraClassLoader->setUseIncludePath(true); - -// Dependencies from 3rdparty composer.json -// "guzzlehttp/guzzle" -require_once $vendor . '/GuzzleHttp/autoload.php'; -// "sabre/dav" -require_once $vendor . '/Sabre/DAV/autoload.php'; -// "doctrine/dbal" -require_once $vendor . '/Doctrine/DBAL/autoload.php'; -// mcnetic/zipstreamer" -require_once $vendor . '/ZipStreamer/autoload.php'; -// "phpeclib/phpseclib" -require_once $vendor . '/phpseclib/autoload.php'; -// "rackspace/php-opencloud" -require_once $vendor . '/OpenCloud/autoload.php'; -// "jeremeamia/superclosure" -require_once $vendor . '/SuperClosure/autoload.php'; -// "bantu/ini-get-wrapper" -require_once $vendor . '/bantu/IniGetWrapper/IniGetWrapper.php'; -// "natxet/CssMin" -require_once $vendor . '/natxet/CssMin/autoload.php'; -// "punic/punic" -require_once $vendor . '/Punic/autoload.php'; -// "patchwork/utf8" -require_once $vendor . '/Patchwork/autoload.php'; -// "symfony/console" -require_once $vendor . '/Symfony/Component/Console/autoload.php'; -// "symfony/event-dispatcher" -require_once $vendor . '/Symfony/Component/EventDispatcher/autoload.php'; -// "symfony/routing" -require_once $vendor . '/Symfony/Component/Routing/autoload.php'; -// "symfony/process" -require_once $vendor . '/Symfony/Component/Process/autoload.php'; -// "pimple/pimple" -require_once $vendor . '/Pimple/autoload.php'; -// "ircmaxell/password-compat" -if (file_exists($vendor . '/password_compat/password.php')) { - require_once $vendor . '/password_compat/password.php'; -} -// "nikic/php-parser" -require_once $vendor . '/PhpParser/autoload.php'; -// "icewind/Streams" -require_once $vendor . '/Icewind/Streams/autoload.php'; -// "swiftmailer/swiftmailer -require_once $vendor . '/Swift/swift_required.php'; -// "league/flysystem" -require_once $vendor . '/League/Flysystem/autoload.php'; -// "interfasys/lognormalizer" -require_once $vendor . '/InterfaSys/LogNormalizer/autoload.php'; -// "deepdiver1975/TarSTreamer" -require_once $vendor . '/ownCloud/TarStreamer/autoload.php'; -// "patchwork/jsqueeze" -require_once $vendor . '/Patchwork/JSqueeze.php'; -// "symfony/polyfill-php{55,56,70}" -require_once $vendor . '/Symfony/Polyfill/autoload.php'; -// "lukasreschke/id3parser": "^0.0.1" -require_once $vendor . '/ID3Parser/autoload.php'; diff --git a/nextcloud-httpd.conf b/nextcloud-httpd.conf index f9ac85d..12c121e 100644 --- a/nextcloud-httpd.conf +++ b/nextcloud-httpd.conf @@ -16,9 +16,12 @@ Alias /nextcloud /usr/share/nextcloud # Allows compliant CalDAV / CardDAV clients to be configured using only # the domain name. For more details see # http://tools.ietf.org/html/rfc6764 -Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav -Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav -Redirect 301 /.well-known/webdav /nextcloud/remote.php/dav +# Nextcloud 29 checks specifically for trailing slash in dav 301 redirects +# https://github.com/nextcloud/server/issues/45033#issuecomment-2079306503 + +Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav/ +Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav/ +Redirect 301 /.well-known/webdav /nextcloud/remote.php/dav/ Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo diff --git a/nextcloud-integritycheck-exclusion.patch b/nextcloud-integritycheck-exclusion.patch new file mode 100644 index 0000000..eeb7ee5 --- /dev/null +++ b/nextcloud-integritycheck-exclusion.patch @@ -0,0 +1,34 @@ +From 9f38c6300712a23ccdc75e140143a1c461e15705 Mon Sep 17 00:00:00 2001 +From: Andrew Bauer +Date: Mon, 24 Jun 2024 10:11:23 -0500 +Subject: [PATCH] silence integrity check for excluded files + +--- + lib/private/IntegrityCheck/Checker.php | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php +index a6de3cf6030d7..3974483601b08 100644 +--- a/lib/private/IntegrityCheck/Checker.php ++++ b/lib/private/IntegrityCheck/Checker.php +@@ -337,7 +337,20 @@ private function verify(string $signaturePath, string $basePath, string $certifi + $differencesB = array_diff_assoc($currentInstanceHashes, $expectedHashes); + $differences = array_unique(array_merge($differencesA, $differencesB)); + $differenceArray = []; ++ ++ # Nasty hack to silence the integrity checker for files patched during the build process or files we simply don't care about ++ $excludedFilenames = [ ++//sedplaceholder ]; ++ + foreach ($differences as $filename => $hash) { ++ ++ # Skip if the file in question matches our exclusion list ++ foreach ($excludedFilenames as $excludedFilename) { ++ if (strpos($filename, $excludedFilename)!==false) { ++ break 2; ++ } ++ } ++ + // Check if file should not exist in the new signature table + if (!array_key_exists($filename, $expectedHashes)) { + $differenceArray['EXTRA_FILE'][$filename]['expected'] = ''; diff --git a/nextcloud-php.ini b/nextcloud-php.ini new file mode 100644 index 0000000..008bcab --- /dev/null +++ b/nextcloud-php.ini @@ -0,0 +1 @@ +apc.enable_cli=1 diff --git a/nextcloud-systemd-timer.service b/nextcloud-systemd-timer.service index ccff38f..a7efaae 100644 --- a/nextcloud-systemd-timer.service +++ b/nextcloud-systemd-timer.service @@ -2,7 +2,10 @@ Description=Cron for nextcloud background jobs [Service] +# https://docs.nextcloud.com/server/25/admin_manual/configuration_server/background_jobs_configuration.html#systemd Type=oneshot -ExecStart=/usr/bin/php -f /usr/share/nextcloud/cron.php User=apache +KillMode=process +ExecStart=/usr/bin/php -f /usr/share/nextcloud/cron.php + diff --git a/nextcloud.spec b/nextcloud.spec index f3a4498..2b4260b 100644 --- a/nextcloud.spec +++ b/nextcloud.spec @@ -1,8 +1,15 @@ +%if 0%{?fedora} +%global distro fedora +%else +%global distro epel +%endif + Name: nextcloud -Version: 27.0.2 +Version: 34.0.3 Release: %autorelease Summary: Private file sync and share server -License: AGPLv3+ and MIT and BSD and ASL 2.0 and WTFPL and CC-BY-SA and GPLv3+ and Adobe +# Automatically converted from old format: AGPLv3+ and MIT and BSD and ASL 2.0 and WTFPL and CC-BY-SA and GPLv3+ and Adobe - review is highly recommended. +License: AGPL-3.0-or-later AND LicenseRef-Callaway-MIT AND LicenseRef-Callaway-BSD AND Apache-2.0 AND WTFPL AND LicenseRef-Callaway-CC-BY-SA AND GPL-3.0-or-later AND Adobe-2006 URL: http://nextcloud.com Source0: https://download.nextcloud.com/server/releases/%{name}-%{version}.tar.bz2 @@ -23,6 +30,7 @@ Source105: %{name}-defaults.inc Source200: %{name}-default-nginx.conf Source201: %{name}-conf-nginx.conf Source202: %{name}-php-fpm.conf +Source203: %{name}-php.ini # packaging notes and doc Source300: %{name}-README.fedora Source301: %{name}-mysql.txt @@ -32,22 +40,27 @@ Source303: %{name}-MIGRATION.fedora # Remove updater version check, we know that updates across more than one # version are possible Patch0: 0000-disable-update-version-check.patch -# Change occ shebang to /usr/bin/php -Patch1: 0001-mangle-shebang.patch +# Add the ability to exclude files we specify from the nextcloud integrity checker +Patch1: nextcloud-integritycheck-exclusion.patch BuildArch: noarch -# For the systemd macros -%if 0%{?fedora} > 29 + +# Set this to the minimum supported php version Nextcloud will run on +# Exists to prevent accidental building on distros with outdated php's +BuildRequires: php(language) >= 8.2 BuildRequires: systemd-rpm-macros -%else -BuildRequires: systemd -%endif +BuildRequires: sed + +# Auto-generate Provides from bundled php-composer libraries +BuildRequires: composer-generators + # expand pear macros on install BuildRequires: php-pear # Require one webserver and database backend Requires: %{name}-webserver = %{version}-%{release} Requires: %{name}-database = %{version}-%{release} +Requires: php-bcmath # Require php CLI for occ command Requires: php-cli # Core PHP libs/extensions required by OC core @@ -55,161 +68,38 @@ Requires: php-curl Requires: php-dom Requires: php-exif Requires: php-fileinfo +Requires: php-filter Requires: php-gd +Requires: php-gmp Requires: php-iconv +Requires: php-intl Requires: php-json Requires: php-ldap Requires: php-mbstring Requires: php-openssl Requires: php-pcre Requires: php-pdo -Requires: php-session -Requires: php-simplexml -Requires: php-xmlwriter -Requires: php-spl -Requires: php-zip -Requires: php-filter -Requires: php-ldap -Requires: php-smbclient -Requires: php-gmp -Requires: php-process +Requires: php-pecl-apcu Requires: php-pecl-imagick Requires: php-pecl-memcached -Requires: php-pecl-apcu -Requires: php-pecl-redis5 +Requires: (php-pecl-redis6 or php-pecl-redis5) +Requires: php-process +Requires: php-session +Requires: php-simplexml +Requires: php-smbclient +Requires: php-spl +Recommends: php-sodium +Requires: php-opcache +Requires: php-xmlwriter +Requires: php-zip # For systemd support during install/uninstall %{?systemd_requires} -# the CA cert bundle is linked to from the config dir -Requires: %{_sysconfdir}/pki/tls/certs/ca-bundle.crt +# Fedora dropped legacy CA cert bundle symlinks +# See https://fedoraproject.org/wiki/Changes/dropingOfCertPemFile +Requires: %{_sysconfdir}/pki/ca-trust/extracted/pem/tls-ca-bundle.pem -# Bundled composer libraries -# many of these can be unbundled -Provides: bundled(php-composer(amphp/amp)) = 2.6.2 -Provides: bundled(php-composer(amphp/byte-stream)) = 1.8.1 -Provides: bundled(php-composer(amphp/parallel)) = 1.4.3 -Provides: bundled(php-composer(amphp/parser)) = 1.1.0 -Provides: bundled(php-composer(amphp/process)) = 1.1.4 -Provides: bundled(php-composer(amphp/serialization)) = 1.0.0 -Provides: bundled(php-composer(amphp/sync)) = 1.4.2 -Provides: bundled(php-composer(darsyn/ip)) = 4.1.0 -Provides: bundled(php-composer(league/flysystem)) = 2.5.0 -Provides: bundled(php-composer(league/mime-type-detection)) = 1.11.0 -Provides: bundled(php-composer(psr/log)) = 1.1.4 -Provides: bundled(php-composer(rubix/ml)) = 20 -Provides: bundled(php-composer(rubix/tensor)) = 2.2.3 -Provides: bundled(php-composer(symfony/polyfill-mbstring)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-php73)) = 1.26.0 -Provides: bundled(php-composer(symfony/polyfill-php80)) = 1.27.0 -Provides: bundled(php-composer(hexogen/kdtree)) = 0.2.5 -Provides: bundled(php-composer(christian-riesen/base32)) = 1.6.0 -Provides: bundled(php-composer(rullzer/easytotp)) = 0.1.4 -Provides: bundled(php-composer(icewind/smb)) = 3.5.4 -Provides: bundled(php-composer(icewind/streams)) = 0.7.7 -Provides: bundled(php-composer(aws/aws-crt-php)) = 1.0.2 -Provides: bundled(php-composer(aws/aws-sdk-php)) = 3.240.8 -Provides: bundled(php-composer(bantu/ini-get-wrapper)) = 1.0.1 -Provides: bundled(php-composer(beberlei/assert)) = 3.3.1 -Provides: bundled(php-composer(brick/math)) = 0.9.2 -Provides: bundled(php-composer(christophwurst/id3parser)) = 0.1.4 -Provides: bundled(php-composer(cweagans/composer-patches)) = 1.7.1 -Provides: bundled(php-composer(deepdiver/zipstreamer)) = 2.0.0 -Provides: bundled(php-composer(deepdiver1975/tarstreamer)) = 2.0.0 -Provides: bundled(php-composer(doctrine/cache)) = 2.2.0 -Provides: bundled(php-composer(doctrine/dbal)) = 3.3.8 -Provides: bundled(php-composer(doctrine/deprecations)) = 1.0.0 -Provides: bundled(php-composer(doctrine/event-manager)) = 1.2.0 -Provides: bundled(php-composer(doctrine/lexer)) = 1.2.3 -Provides: bundled(php-composer(egulias/email-validator)) = 3.2.5 -Provides: bundled(php-composer(fgrosse/phpasn1)) = 2.3.0 -Provides: bundled(php-composer(fusonic/linq)) = 1.1.0 -Provides: bundled(php-composer(fusonic/opengraph)) = 2.2.0 -Provides: bundled(php-composer(giggsey/libphonenumber-for-php)) = 8.13.7 -Provides: bundled(php-composer(giggsey/locale)) = 2.3 -Provides: bundled(php-composer(guzzlehttp/guzzle)) = 7.5.0 -Provides: bundled(php-composer(guzzlehttp/promises)) = 1.5.2 -Provides: bundled(php-composer(guzzlehttp/psr7)) = 2.4.5 -Provides: bundled(php-composer(guzzlehttp/uri-template)) = 0.2.0 -Provides: bundled(php-composer(icewind/searchdav)) = 3.0.1 -Provides: bundled(php-composer(icewind/streams)) = 0.7.7 -Provides: bundled(php-composer(justinrainbow/json-schema)) = 5.2.10 -Provides: bundled(php-composer(laravel/serializable-closure)) = 1.2.2 -Provides: bundled(php-composer(league/uri)) = 6.4.0 -Provides: bundled(php-composer(league/uri-interfaces)) = 2.2.0 -Provides: bundled(php-composer(mexitek/phpcolors)) = 1.0.4 -Provides: bundled(php-composer(microsoft/azure-storage-blob)) = 1.5.4 -Provides: bundled(php-composer(microsoft/azure-storage-common)) = 1.5.2 -Provides: bundled(php-composer(mlocati/ip-lib)) = 1.18.0 -Provides: bundled(php-composer(mtdowling/jmespath.php)) = 2.6.1 -Provides: bundled(php-composer(nextcloud/lognormalizer)) = 1.0.0 -Provides: bundled(php-composer(opis/closure)) = 3.6.3 -Provides: bundled(php-composer(pear/archive_tar)) = 1.4.14 -Provides: bundled(php-composer(pear/console_getopt)) = 1.4.3 -Provides: bundled(php-composer(pear/pear-core-minimal)) = 1.10.10 -Provides: bundled(php-composer(pear/pear_exception)) = 1.0.2 -Provides: bundled(php-composer(php-http/guzzle7-adapter)) = 1.0.0 -Provides: bundled(php-composer(php-http/httplug)) = 2.2.0 -Provides: bundled(php-composer(php-http/promise)) = 1.1.0 -Provides: bundled(php-composer(php-opencloud/openstack)) = 3.2.1 -Provides: bundled(php-composer(phpseclib/phpseclib)) = 2.0.40 -Provides: bundled(php-composer(pimple/pimple)) = 3.5.0 -Provides: bundled(php-composer(psr/cache)) = 1.0.1 -Provides: bundled(php-composer(psr/clock)) = 1.0.0 -Provides: bundled(php-composer(psr/container)) = 2.0.2 -Provides: bundled(php-composer(psr/event-dispatcher)) = 1.0.0 -Provides: bundled(php-composer(psr/http-client)) = 1.0.1 -Provides: bundled(php-composer(psr/http-factory)) = 1.0.1 -Provides: bundled(php-composer(psr/http-message)) = 1.0.1 -Provides: bundled(php-composer(psr/log)) = 1.1.4 -Provides: bundled(php-composer(punic/punic)) = 1.6.5 -Provides: bundled(php-composer(ralouphie/getallheaders)) = 3.0.3 -Provides: bundled(php-composer(ramsey/collection)) = 1.1.3 -Provides: bundled(php-composer(ramsey/uuid)) = 4.1.1 -Provides: bundled(php-composer(sabre/dav)) = 4.4.0 -Provides: bundled(php-composer(sabre/event)) = 5.1.4 -Provides: bundled(php-composer(sabre/http)) = 5.1.5 -Provides: bundled(php-composer(sabre/uri)) = 2.2.2 -Provides: bundled(php-composer(sabre/vobject)) = 4.4.2 -Provides: bundled(php-composer(sabre/xml)) = 2.2.5 -Provides: bundled(php-composer(scssphp/scssphp)) = 1.11.0 -Provides: bundled(php-composer(spomky-labs/base64url)) = 2.0.4 -Provides: bundled(php-composer(spomky-labs/cbor-php)) = 2.0.1 -Provides: bundled(php-composer(stecman/symfony-console-completion)) = 0.11.0 -Provides: bundled(php-composer(swiftmailer/swiftmailer)) = 6.3.0 -Provides: bundled(php-composer(symfony/console)) = 5.4.19 -Provides: bundled(php-composer(symfony/css-selector)) = 5.4.11 -Provides: bundled(php-composer(symfony/deprecation-contracts)) = 2.5.2 -Provides: bundled(php-composer(symfony/dom-crawler)) = 5.4.11 -Provides: bundled(php-composer(symfony/event-dispatcher)) = 4.4.30 -Provides: bundled(php-composer(symfony/event-dispatcher-contracts)) = 1.1.9 -Provides: bundled(php-composer(symfony/http-foundation)) = 5.4.10 -Provides: bundled(php-composer(symfony/mailer)) = 5.4.19 -Provides: bundled(php-composer(symfony/mime)) = 5.4.19 -Provides: bundled(php-composer(symfony/polyfill-ctype)) = 1.23.0 -Provides: bundled(php-composer(symfony/polyfill-iconv)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-intl-grapheme)) = 1.23.1 -Provides: bundled(php-composer(symfony/polyfill-intl-idn)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-intl-normalizer)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-mbstring)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-php72)) = 1.27.0 -Provides: bundled(php-composer(symfony/polyfill-php73)) = 1.23.0 -Provides: bundled(php-composer(symfony/polyfill-php80)) = 1.26.0 -Provides: bundled(php-composer(symfony/process)) = 4.4.30 -Provides: bundled(php-composer(symfony/routing)) = 4.4.30 -Provides: bundled(php-composer(symfony/service-contracts)) = 3.0.2 -Provides: bundled(php-composer(symfony/string)) = 6.0.19 -Provides: bundled(php-composer(symfony/translation)) = 4.4.41 -Provides: bundled(php-composer(symfony/translation-contracts)) = 2.4.0 -Provides: bundled(php-composer(thecodingmachine/safe)) = 1.3.3 -Provides: bundled(php-composer(web-auth/cose-lib)) = 3.3.9 -Provides: bundled(php-composer(web-auth/metadata-service)) = 3.3.9 -Provides: bundled(php-composer(web-auth/webauthn-lib)) = 3.3.9 - -# OpenIconic icons bundled via sabre-dav -Provides: bundled(openiconic-fonts) = 1.0.0 -# jscolor bundled via themeing app -Provides: bundled(jscolor) = 2.0.4 # jquery-ui-multiselect bundled via user_ldap app -Provides: bundled(jquery-ui-multiselect) = 0.3.1 +Provides: bundled(jquery-ui-multiselect) = 1.13 # zxcvbn bundled via core Provides: bundled(zxcvbn) = 4.4.2 @@ -260,6 +150,7 @@ If you want the database to be on the same system as NextCloud itself, you must also install and enable a MySQL / MariaDB server package. See README.mysql for more details. + %package postgresql Summary: PostgreSQL database support for NextCloud Provides: %{name}-database = %{version}-%{release} @@ -288,20 +179,33 @@ Requires: %{name} = %{version}-%{release} This package ensures the necessary dependencies are in place for NextCloud to work with an SQLite 3 database stored on the local system. - %prep %autosetup -n %{name} -p1 +# Fix php shebang in occ +sed -ri 's\^#!/usr/bin/env php$\#!%{_bindir}/php\' occ + # patch backup files and .git stuff -find . -name \*.orig -type f -exec rm {} \; -print -find . -name .gitignore -type f -exec rm {} \; -print +find . -name \*.orig -type f -delete -print +find . -name .gitignore -type f -delete -print find . -name .github -type d -prune -exec rm -r {} \; -print +# fix CLI upgrade advice on splash screen +if ! file=$(grep -l 'occ upgrade' dist/*.map); then + echo "Could not find the occ upgrade instructions in dist/*.map" + exit 1 +fi +echo "Updating occ upgrade instructions in $file" +sed -i -e 's#\./\(occ upgrade\)#sudo -u apache php /usr/share/nextcloud/\1#' $file + # prepare package doc -cp %{SOURCE300} README.fedora +cp %{SOURCE300} README.%{distro} cp %{SOURCE301} README.mysql cp %{SOURCE302} README.postgresql -cp %{SOURCE303} MIGRATION.fedora +cp %{SOURCE303} MIGRATION.%{distro} + +# point the reader to the correct README filename +sed -i 's/distro/%{distro}/g' README.%{distro} # Locate license files and put them sensibly in place # get rid of all composer licenses @@ -311,6 +215,42 @@ find -wholename "*/composer/LICENSE" -exec mv {} composer-LICENSE \; find . -mindepth 2 \( -name '*LICENSE*' -o -name '*LICENCE*' \) | { while read a ; do mv "$a" $(echo $a | sed "s_^./__" | tr "/ " "__" )-LICENSE ; done ; } find . -mindepth 2 -name '*COPYING*' | { while read a ; do mv "$a" $(echo $a | sed "s_^./__" | tr "/ " "__" )-COPYING ; done ; } +# case-sensitive list of partial matches to exclude from the nextcloud integrity checker +# include readme, license, other docs, and any files we move or patch during the build +excludedFilenames=" +README +readme +LICENSE +LICENCE +license +copying +COPYING +AUTHORS +htaccess +gitignore +user.ini +update.admin.php +Updater.php +occ +Checker.php +" + +# nextcloud source files use tabs rather than spaces, ew +tabs=" " +cr=" +" + +# Add quotes, commas, and escaped newlines +for f in $excludedFilenames; do + formattedlist="$formattedlist$tabs'$f',\\$cr" +done + +# look for our sed placeholder we patched in earlier, then insert our formatted list of keywords +sed -i "s|//sedplaceholder|${formattedlist}|" lib/private/IntegrityCheck/Checker.php + +# Build nextcloud-defaults.inc from upstream .htaccess. We will install it later. +cat .htaccess >> %{SOURCE105} + %check # Make sure there are no license files left over : Check for leftover license files @@ -348,10 +288,10 @@ done install -pm 755 occ %{buildroot}%{_datadir}/%{name} # symlink config dir -ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config +ln -s ../../../%{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config # nextcloud looks for ca-bundle.crt in config dir -ln -sf %{_sysconfdir}/pki/tls/certs/ca-bundle.crt %{buildroot}%{_sysconfdir}/%{name}/ca-bundle.crt +ln -s ../pki/ca-trust/extracted/pem/tls-ca-bundle.pem %{buildroot}%{_sysconfdir}/%{name}/ca-bundle.crt # set default config install -pm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/config.php @@ -374,6 +314,10 @@ install -Dpm 644 %{SOURCE201} \ install -Dpm 644 %{SOURCE202} \ %{buildroot}%{_sysconfdir}/php-fpm.d/%{name}.conf +# php.ini config +install -Dpm 644 %{SOURCE203} \ + %{buildroot}%{_sysconfdir}/php.d/60-%{name}.ini + # Install the systemd timer install -Dpm 644 %{SOURCE2} %{buildroot}%{_unitdir}/nextcloud-cron.service install -Dpm 644 %{SOURCE3} %{buildroot}%{_unitdir}/nextcloud-cron.timer @@ -410,11 +354,12 @@ if [ $1 -eq 0 ]; then fi %files -%doc AUTHORS README.fedora MIGRATION.fedora config/config.sample.php +%doc AUTHORS README.%{distro} MIGRATION.%{distro} config/config.sample.php %license *-LICENSE %dir %attr(-,apache,apache) %{_sysconfdir}/%{name} # contains sensitive data (dbpassword, passwordsalt) %config(noreplace) %attr(0600,apache,apache) %{_sysconfdir}/%{name}/config.php +%config(noreplace) %{_sysconfdir}/php.d/60-%{name}.ini # need the symlink in confdir but it's not config %{_sysconfdir}/%{name}/ca-bundle.crt %{_datadir}/%{name} @@ -445,4 +390,3 @@ fi %changelog %autochangelog - diff --git a/sources b/sources index d791486..95997de 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (nextcloud-27.0.2.tar.bz2) = e64f4590512d0b23534bcd29344e8ff6c859121db78912789ea22fba73ea5cc6f3e44f70652ffb536efe350714156285078b3ecd56e493a75860052dafbec4c9 +SHA512 (nextcloud-34.0.3.tar.bz2) = 3463dbbdeae5275a0791b115cf86aed41c5a138fdd19bb32ec12837a6698106b6f172e24fb1264a2d4e20b2b805bcf7841b2338e4e02f1fd5394fbed830cc695