diff --git a/0000-disable-update-version-check.patch b/0000-disable-update-version-check.patch index 4a77733..fa63f39 100644 --- a/0000-disable-update-version-check.patch +++ b/0000-disable-update-version-check.patch @@ -1,21 +1,20 @@ -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 -@@ -174,10 +174,13 @@ - $this->config->setAppValue('core', 'vendor', $currentVendor); +diff -Naur a/lib/private/Updater.php b/lib/private/Updater.php +--- a/lib/private/Updater.php 2020-10-24 10:37:44.000000000 +0200 ++++ b/lib/private/Updater.php 2020-11-10 10:51:10.511861549 +0100 +@@ -197,14 +197,11 @@ } -+ /* -+ Fedora package: -+ Remove updater version check, we know that updates across more than one -+ version are possible -+ */ if ($currentVendor === 'nextcloud') { - return isset($allowedPreviousVersions[$currentVendor][$majorMinor]) -- && (version_compare($oldVersion, $newVersion, '<=') -- || $this->config->getSystemValueBool('debug', false)); +- && (version_compare($oldVersion, $newVersion, '<=') || +- $this->config->getSystemValue('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-PACKAGING.md b/README-PACKAGING.md deleted file mode 100644 index 4dfa735..0000000 --- a/README-PACKAGING.md +++ /dev/null @@ -1,16 +0,0 @@ -# Packaging Notes - -Nextcloud has a fairly quick release cadence. Luckily they follow a strick system of alph-beta-rc-final releases and differences between major versions aren't huge so this rarely causes problems. -## Versions/Branches/Modules/Releases -### Upstream versioning -Upstream uses semantic versioning `major.minor.bugfix` for their version numbers. Contrary to what one might expect, they generally only push releases to their `stable` release channel after the first bugfix release `x.y.1`. -### In Fedora -`rawhide` generally contains whatever the latest non-rc release upstream is, including the `x.y.0` initial releases of a new major version. -Fedora releases stay on whatever major version they inherited from `rawhide` at branching as much as possible. Since nextcloud's and Fedora's release schedule don't entirely sync up, this means that occasionally a Fedora release might ship a `x.y.0` or EOL'd version of nextcloud for a brief time, but this is the best tradeoff between keeping Fedora in sync with upstream and minimizing disruptions within one Fedora release. Users who are unhappy with that can choose modules to work around that. -Module streams `nextcloud-X` ship the current release of major version `X`. Module stream `nextcloud-stable` should be rebased to a new major version only after the `x.y.1` bugfix release, in keeping with what upstream considers it's stable branch. -### Security fixes -Upstream is very conscientious with publishing and fixing CVEs discovered in their code. They generally backport fixes to all but very minor vulnerabilities to all supported versions, so it is generally safe not to change major versions within one Fedora release, even if a vulnerability has been discovered. Impacted users can always choose to upgrade via modules. -## Tarballs -Release tarballs are located at https://download.nextcloud.com/server/releases while prerelease tarballs are located ata https://download.nextcloud.com/server/prereleases/ . It generally takes about a day after the release annoucement for tarballs to actually appear in those directories. -## Bundled dependencies -Nextcloud ships a lot of bundled composer libraries, but these are easy to unbundle. The repos `utils` directory contains a script `get-composer-requires.py` that will output all required libraries/versions as well as if they're already available in the Fedora repositories or need to be added, by scanning the `composer.json` files shipped with the nextcloud sources. diff --git a/README.md b/README.md index e294b77..9db76d6 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Nextcloud requires some additional steps after installation/upgrade that are not ### Other versions -[modular nextcloud package Fedora and CentOS/RHEL](https://src.fedoraproject.org/modules/nextcloud) is over +Nextcloud maintains multiple stable branches at the same time. To install those, check out the [modular nextcloud package](https://src.fedoraproject.org/modules/nextcloud). -https://fedoraproject.org/wiki/Changes/RetireModularity +### CentOS/RHEL -Once Fedora Linux 38 reaches end of life, we will retire the Fedora instance of Module Build Service. +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. diff --git a/changelog b/changelog deleted file mode 100644 index 554cf42..0000000 --- a/changelog +++ /dev/null @@ -1,126 +0,0 @@ -* Tue Jul 6 2021 Christopher Engelhard - 22.0.0-1 -- Update to 22.0.0 - -* Wed Jun 30 2021 Christopher Engelhard - 21.0.2-1 -- Update to 21.0.2, fixes RHBZ 1977202 / CVE-2021-22915 -- Include php-fpm config in httpd subpackage -- Set php memory limit to 512MB (RHBZ 1933529) -- Add Referrer-policy no-referrer to nginx config (RHBZ 1933530) - -* Wed Feb 24 2021 Christopher Engelhard - 21.0.0-2 -- Drop dependency on php-imap. Fixes RHBZ #1933023 - -* Wed Feb 24 2021 Christopher Engelhard - 21.0.0-1 -- Update to 21.0.0 - -* Sat Feb 20 2021 Christopher Engelhard - 20.0.7-1 -- Update to 20.0.7 - -* Tue Jan 26 2021 Fedora Release Engineering - 20.0.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Sat Jan 16 2021 Christopher Engelhard - 20.0.5-1 -- Update to 20.0.5 - -* Mon Dec 28 2020 Christopher Engelhard - 20.0.4-2 -- Remove duplicate dependencies on database drivers -- Remove syslinux related stuff, as these are included in - the syslinux policy -- Add Provides: for bundled libraries - -* Thu Dec 17 2020 Christopher Engelhard - 20.0.4-1 -- Update to 20.0.4 - -* Thu Dec 10 2020 Christopher Engelhard - 20.0.3-1 -- Update to 20.0.3 - -* Thu Nov 19 2020 Christopher Engelhard - 20.0.2-1 -- Update to 20.0.2 - -* Sat Nov 14 2020 Christopher Engelhard - 20.0.2-0.1.rc1 -- Update to 20.0.2RC1 - -* Wed Nov 11 2020 Christopher Engelhard - 20.0.1-3 -- Remove CentOS/RHEL 7 support from spec file - -* Tue Nov 10 2020 Christopher Engelhard - 20.0.1-2 -- Add dependencies on php-cli (for occ) and php-process (for posix) -- Remove unneeded BR on php-cli -- Add patch to allow updates across more than one major version - -* Mon Oct 26 2020 Christopher Engelhard - 20.0.1-1 -- Update to Nextcloud 20.0.1 - -* Sun Oct 11 2020 Christopher Engelhard - 20.0.0-1 -- Update to Nextcloud 20.0.0 - -* Tue Jul 28 2020 Fedora Release Engineering - 19.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Sun Jun 28 2020 Ivan Chavero - 19.0.0-1 -- Update to Nextcloud 19.0.0 -- Update licenses - -* Thu Apr 30 2020 Ivan Chavero - 18.0.4-1 -- Update to Nextcloud 18.0.4 - -* Sat Feb 08 2020 Ivan Chavero - 18.0.0-1 -- Refactor spec file -- Update to Nextcoud 18.0.0 - -* Wed Jan 29 2020 Fedora Release Engineering - 10.0.4-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jul 25 2019 Fedora Release Engineering - 10.0.4-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Feb 01 2019 Fedora Release Engineering - 10.0.4-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Wed Jan 9 2019 Remi Collet - 10.0.4-6 -- drop dependency on php-password-compat #1658730 -- allow php-smbclient 1.0.0 #1663672 -- allow doctrine/dbal 2.x - -* Fri Jul 13 2018 Fedora Release Engineering - 10.0.4-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu Feb 08 2018 Fedora Release Engineering - 10.0.4-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 10.0.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Mar 25 2017 Shawn Iwinski - 10.0.4-2 -- Add max versions to dependencies to limit each to 1 major version -- Update some dependencies to use php-composer(*) instead of package names -- Prepare for php-composer(google/apiclient) version 2 and new version 1 package - -* Tue Feb 28 2017 James Hogarth - 10.0.4-1 -- update to 10.0.4 -- Add migration from owncloud documentation -- Add systemd timer for background jobs - -* Wed Feb 08 2017 James Hogarth - 10.0.3-1 -- update to 10.0.3 - -* Thu Oct 06 2016 James Hogarth - 10.0.1-1 -- update to 10.0.1 - -* Mon Aug 01 2016 James Hogarth - 9.0.53-5 -- Use lua to have a common srpm between epel7 and fedora - -* Fri Jul 29 2016 James Hogarth - 9.0.53-4 -- Don't unbundle javascript on EPEL7 due to versioning issues - -* Fri Jul 29 2016 James Hogarth - 9.0.53-3 -- Unbundle javascript libraries from core where possible - -* Tue Jul 26 2016 James Hogarth - 9.0.53-2 -- Update the autoloader to use the path from the approved package - -* Tue Jul 19 2016 James Hogarth - 9.0.53-1 -- New release 9.0.53 - -* Thu Jul 14 2016 James Hogarth - 9.0.52-1 -- Initial nextcloud build diff --git a/gating.yml b/gating.yml index 47751e9..dfb0041 100644 --- a/gating.yml +++ b/gating.yml @@ -1,17 +1,9 @@ --- !Policy product_versions: - fedora-* - decision_context: bodhi_update_push_testing + decision_context: + - bodhi_update_push_testing + - bodhi_update_push_stable subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} ---- !Policy -product_versions: - - fedora-* - decision_context: bodhi_update_push_stable - subject_type: koji_build - rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpmdeplint.functional} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional} diff --git a/utils/get-bundled-versions.py b/get-bundled-versions.py similarity index 100% rename from utils/get-bundled-versions.py rename to get-bundled-versions.py diff --git a/nextcloud-README.fedora b/nextcloud-README.fedora index 748b6cf..b64fc8d 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/EPEL supports httpd (Apache) and nginx. You must install +Currently nextcloud in Fedora 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/EPEL configuration it will log to the +logger, which means in a standard Fedora 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.distro +For detailed instructions on this please read MIGRATION.fedora diff --git a/nextcloud-config.php b/nextcloud-config.php index 3bec0f6..96aa36e 100644 --- a/nextcloud-config.php +++ b/nextcloud-config.php @@ -1,5 +1,5 @@ "syslog", "datadirectory" => "/var/lib/nextcloud/data", "updatechecker" => false, @@ -9,15 +9,18 @@ $CONFIG = [ "preview_libreoffice_path" => '/usr/bin/libreoffice', - "apps_paths" => [ - [ 'path'=> '/usr/share/nextcloud/apps', + "apps_paths" => array( + 0 => + array ( + 'path'=> '/usr/share/nextcloud/apps', 'url' => '/apps', 'writable' => false, - ], - [ + ), + 1 => + array ( 'path' => '/var/lib/nextcloud/apps', 'url' => '/apps-appstore', 'writable' => true, - ], - ], -]; + ), + ), +); diff --git a/nextcloud-default-nginx.conf b/nextcloud-default-nginx.conf index 7151521..77d3efe 100644 --- a/nextcloud-default-nginx.conf +++ b/nextcloud-default-nginx.conf @@ -12,7 +12,6 @@ add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; - add_header Referrer-Policy no-referrer always; # set max upload size diff --git a/nextcloud-defaults.inc b/nextcloud-defaults.inc index fef3ec6..c5d4478 100644 --- a/nextcloud-defaults.inc +++ b/nextcloud-defaults.inc @@ -1,8 +1,73 @@ -# 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. +# 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. # # DO NOT EDIT THIS FILE DIRECTLY. To override any element of the -# packaged Nextcloud configuration, create a new /etc/httpd/conf.d/ -# file which will be read later than this one. +# packaged ownCloud configuration, create a new /etc/httpd/conf.d/ +# file which will be read later than 'nextcloud.conf'. +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 + + + + + + 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 new file mode 100644 index 0000000..a125728 --- /dev/null +++ b/nextcloud-fedora-autoloader.php @@ -0,0 +1,70 @@ +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 12c121e..5a4ce55 100644 --- a/nextcloud-httpd.conf +++ b/nextcloud-httpd.conf @@ -16,14 +16,9 @@ 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 -# 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 +Redirect 301 /.well-known/carddav /nextcloud/remote.php/carddav +Redirect 301 /.well-known/caldav /nextcloud/remote.php/caldav +Redirect 301 /.well-known/webdav /nextcloud/remote.php/webdav Include conf.d/nextcloud-auth-local.inc diff --git a/nextcloud-integritycheck-exclusion.patch b/nextcloud-integritycheck-exclusion.patch deleted file mode 100644 index eeb7ee5..0000000 --- a/nextcloud-integritycheck-exclusion.patch +++ /dev/null @@ -1,34 +0,0 @@ -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-fpm.conf b/nextcloud-php-fpm.conf index a551def..8314e6c 100644 --- a/nextcloud-php-fpm.conf +++ b/nextcloud-php-fpm.conf @@ -15,10 +15,8 @@ php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache -php_value[memory_limit] = 512M php_value[upload_max_filesize] = 10G php_value[post_max_size] = 10G -php_value[output_buffering] = false env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp diff --git a/nextcloud-php.ini b/nextcloud-php.ini deleted file mode 100644 index 008bcab..0000000 --- a/nextcloud-php.ini +++ /dev/null @@ -1 +0,0 @@ -apc.enable_cli=1 diff --git a/nextcloud-systemd-timer.service b/nextcloud-systemd-timer.service index a7efaae..ccff38f 100644 --- a/nextcloud-systemd-timer.service +++ b/nextcloud-systemd-timer.service @@ -2,10 +2,7 @@ Description=Cron for nextcloud background jobs [Service] -# https://docs.nextcloud.com/server/25/admin_manual/configuration_server/background_jobs_configuration.html#systemd Type=oneshot -User=apache -KillMode=process ExecStart=/usr/bin/php -f /usr/share/nextcloud/cron.php - +User=apache diff --git a/nextcloud.spec b/nextcloud.spec index 2b4260b..aed8612 100644 --- a/nextcloud.spec +++ b/nextcloud.spec @@ -1,15 +1,8 @@ -%if 0%{?fedora} -%global distro fedora -%else -%global distro epel -%endif - Name: nextcloud -Version: 34.0.3 -Release: %autorelease +Version: 18.0.13 +Release: 1%{?dist} Summary: Private file sync and share server -# 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 +License: AGPLv3+ and MIT and BSD and ASL 2.0 and WTFPL and CC-BY-SA and GPLv3+ and Adobe URL: http://nextcloud.com Source0: https://download.nextcloud.com/server/releases/%{name}-%{version}.tar.bz2 @@ -17,8 +10,8 @@ Source0: https://download.nextcloud.com/server/releases/%{name}-%{version # initial setup will fill out other settings appropriately Source1: %{name}-config.php # Systemd timer for background jobs -Source2: %{name}-systemd-timer.service -Source3: %{name}-systemd-timer.timer +Source2: %{name}-systemd-timer.service +Source3: %{name}-systemd-timer.timer # httpd config files Source100: %{name}-httpd.conf Source101: %{name}-access-httpd.conf.avail @@ -26,11 +19,10 @@ Source102: %{name}-auth-any.inc Source103: %{name}-auth-local.inc Source104: %{name}-auth-none.inc Source105: %{name}-defaults.inc -# nginx/php-fpm config files +# nginx/php-fpm config files 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 @@ -40,27 +32,22 @@ 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 -# Add the ability to exclude files we specify from the nextcloud integrity checker -Patch1: nextcloud-integritycheck-exclusion.patch +# Change occ shebang to /usr/bin/php +Patch1: 0001-mangle-shebang.patch BuildArch: noarch - -# 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 +# For the systemd macros +%if 0%{?fedora} > 29 BuildRequires: systemd-rpm-macros -BuildRequires: sed - -# Auto-generate Provides from bundled php-composer libraries -BuildRequires: composer-generators - +%else +BuildRequires: systemd +%endif # 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 @@ -68,41 +55,118 @@ 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-pecl-apcu -Requires: php-pecl-imagick -Requires: php-pecl-memcached -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-spl Requires: php-zip +Requires: php-filter +Requires: php-ldap +Requires: php-smbclient +Requires: php-imap +Requires: php-gmp +Requires: php-process +Requires: php-pecl-imagick +Requires: php-pecl-memcached +Requires: php-pecl-apcu +Requires: php-pecl-redis5 # For systemd support during install/uninstall %{?systemd_requires} -# 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 +# the CA cert bundle is linked to from the config dir +Requires: %{_sysconfdir}/pki/tls/certs/ca-bundle.crt +# Bundled composer libraries +# many of these can be unbundled +Provides: bundled(php-composer(icewind/smb)) = 3.2.7 +Provides: bundled(php-composer(icewind/streams)) = 0.7.1 +Provides: bundled(php-composer(aws/aws-sdk-php)) = 3.93.9 +Provides: bundled(php-composer(bantu/ini-get-wrapper)) = 1.0.1 +Provides: bundled(php-composer(christophwurst/id3parser)) = 0.1.1 +Provides: bundled(php-composer(deepdiver/zipstreamer)) = 1.1.1 +Provides: bundled(php-composer(deepdiver1975/tarstreamer)) = 0.1.0 +Provides: bundled(php-composer(doctrine/annotations)) = 1.6.0 +Provides: bundled(php-composer(doctrine/cache)) = 1.8.0 +Provides: bundled(php-composer(doctrine/collections)) = 1.5.0 +Provides: bundled(php-composer(doctrine/common)) = 2.10.0 +Provides: bundled(php-composer(doctrine/dbal)) = 2.9.2 +Provides: bundled(php-composer(doctrine/event-manager)) = 1.0.0 +Provides: bundled(php-composer(doctrine/inflector)) = 1.3.0 +Provides: bundled(php-composer(doctrine/lexer)) = 1.2.0 +Provides: bundled(php-composer(doctrine/persistence)) = 1.1.0 +Provides: bundled(php-composer(doctrine/reflection)) = 1.0.0 +Provides: bundled(php-composer(egulias/email-validator)) = 2.1.11 +Provides: bundled(php-composer(guzzlehttp/guzzle)) = 6.3.3 +Provides: bundled(php-composer(guzzlehttp/promises)) = 1.3.1 +Provides: bundled(php-composer(guzzlehttp/psr7)) = 1.5.2 +Provides: bundled(php-composer(guzzlehttp/ringphp)) = 1.1.0 +Provides: bundled(php-composer(guzzlehttp/streams)) = 3.0.0 +Provides: bundled(php-composer(icewind/searchdav)) = 1.0.2 +Provides: bundled(php-composer(icewind/streams)) = 0.7.1 +Provides: bundled(php-composer(interfasys/lognormalizer)) = 1.0 +Provides: bundled(php-composer(jeremeamia/SuperClosure)) = 2.4.0 +Provides: bundled(php-composer(justinrainbow/json-schema)) = 5.2.8 +Provides: bundled(php-composer(leafo/scssphp)) = 0.7.7 +Provides: bundled(php-composer(league/flysystem)) = 1.0.37 +Provides: bundled(php-composer(microsoft/azure-storage-blob)) = 1.2.0 +Provides: bundled(php-composer(microsoft/azure-storage-common)) = 1.2.0 +Provides: bundled(php-composer(mtdowling/jmespath.php)) = 2.4.0 +Provides: bundled(php-composer(nikic/php-parser)) = 4.2.1 +Provides: bundled(php-composer(patchwork/jsqueeze)) = 2.0.5 +Provides: bundled(php-composer(patchwork/utf8)) = 1.3.1 +Provides: bundled(php-composer(pear/archive_tar)) = 1.4.8 +Provides: bundled(php-composer(pear/console_getopt)) = 1.4.1 +Provides: bundled(php-composer(pear/pear-core-minimal)) = 1.10.3 +Provides: bundled(php-composer(pear/pear_exception)) = 1.0.0 +Provides: bundled(php-composer(php-opencloud/openstack)) = 3.0.6 +Provides: bundled(php-composer(phpseclib/phpseclib)) = 2.0.23 +Provides: bundled(php-composer(pimple/pimple)) = 3.2.3 +Provides: bundled(php-composer(psr/container)) = 1.0.0 +Provides: bundled(php-composer(psr/http-message)) = 1.0.1 +Provides: bundled(php-composer(psr/log)) = 1.1.0 +Provides: bundled(php-composer(punic/punic)) = 1.6.5 +Provides: bundled(php-composer(ralouphie/getallheaders)) = 2.0.5 +Provides: bundled(php-composer(react/promise)) = 2.2.1 +Provides: bundled(php-composer(sabre/dav)) = 3.2.3 +Provides: bundled(php-composer(sabre/event)) = 3.0.0 +Provides: bundled(php-composer(sabre/http)) = 4.2.4 +Provides: bundled(php-composer(sabre/uri)) = 1.2.1 +Provides: bundled(php-composer(sabre/vobject)) = 4.1.6 +Provides: bundled(php-composer(sabre/xml)) = 1.5.0 +Provides: bundled(php-composer(stecman/symfony-console-completion)) = 0.8.0 +Provides: bundled(php-composer(swiftmailer/swiftmailer)) = 6.2.3 +Provides: bundled(php-composer(symfony/console)) = 4.3.4 +Provides: bundled(php-composer(symfony/event-dispatcher)) = 4.3.4 +Provides: bundled(php-composer(symfony/event-dispatcher-contracts)) = 1.1.5 +Provides: bundled(php-composer(symfony/polyfill-iconv)) = 1.12.0 +Provides: bundled(php-composer(symfony/polyfill-intl-idn)) = 1.12.0 +Provides: bundled(php-composer(symfony/polyfill-mbstring)) = 1.12.0 +Provides: bundled(php-composer(symfony/polyfill-php56)) = 1.10.0 +Provides: bundled(php-composer(symfony/polyfill-php72)) = 1.12.0 +Provides: bundled(php-composer(symfony/polyfill-php73)) = 1.12.0 +Provides: bundled(php-composer(symfony/polyfill-util)) = 1.10.0 +Provides: bundled(php-composer(symfony/process)) = 4.3.4 +Provides: bundled(php-composer(symfony/routing)) = 4.3.4 +Provides: bundled(php-composer(symfony/service-contracts)) = 1.1.6 +Provides: bundled(php-composer(symfony/translation)) = 4.3.4 +Provides: bundled(php-composer(symfony/translation-contracts)) = 1.1.6 +Provides: bundled(php-composer(doctrine/cache)) = 1.7.1 +Provides: bundled(php-composer(doctrine/event-manager)) = 1.0.0 +# 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) = 1.13 +Provides: bundled(jquery-ui-multiselect) = 0.3.1 # zxcvbn bundled via core Provides: bundled(zxcvbn) = 4.4.2 - %description NextCloud gives you universal access to your files through a web interface or WebDAV. It also provides a platform to easily view & sync your contacts, @@ -116,7 +180,7 @@ Summary: Httpd integration for NextCloud Provides: %{name}-webserver = %{version}-%{release} Requires: %{name} = %{version}-%{release} # PHP dependencies -Requires: php-fpm httpd +Requires: php %description httpd %{summary}. @@ -150,7 +214,6 @@ 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} @@ -174,91 +237,151 @@ Summary: SQLite 3 database support for NextCloud Provides: %{name}-database = %{version}-%{release} Requires: %{name} = %{version}-%{release} # From getSupportedDatabases, pgsql => class, SQLite3 - %description sqlite 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 -delete -print -find . -name .gitignore -type f -delete -print +find . -name \*.orig -type f -exec rm {} \; -print +find . -name .gitignore -type f -exec rm {} \; -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.%{distro} +cp %{SOURCE300} README.fedora cp %{SOURCE301} README.mysql cp %{SOURCE302} README.postgresql -cp %{SOURCE303} MIGRATION.%{distro} - -# point the reader to the correct README filename -sed -i 's/distro/%{distro}/g' README.%{distro} +cp %{SOURCE303} MIGRATION.fedora # Locate license files and put them sensibly in place -# get rid of all composer licenses -find -wholename "*/composer/LICENSE" -exec mv {} composer-LICENSE \; +# find all using "find -name '*LICENSE*' -o -name '*COPYING*' | sort" +mv 3rdparty/aws/aws-sdk-php/LICENSE.md aws-LICENSE.md +mv 3rdparty/bantu/ini-get-wrapper/LICENSE bantu-LICENSE +mv 3rdparty/christophwurst/id3parser/LICENSE christophwurst-LICENSE +mv 3rdparty/composer/LICENSE composer-LICENSE +mv 3rdparty/deepdiver1975/tarstreamer/LICENSE deepdiver1975-LICENSE +mv 3rdparty/deepdiver/zipstreamer/COPYING deepdiver-COPYING +mv 3rdparty/doctrine/annotations/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/cache/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/collections/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/common/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/dbal/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/event-manager/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/inflector/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/persistence/LICENSE doctrine-LICENSE +mv 3rdparty/doctrine/reflection/LICENSE doctrine-LICENSE +mv 3rdparty/egulias/email-validator/LICENSE egulias-LICENSE +mv 3rdparty/guzzlehttp/guzzle/LICENSE guzzlehttp-LICENSE +mv 3rdparty/guzzlehttp/promises/LICENSE guzzlehttp-LICENSE +mv 3rdparty/guzzlehttp/psr7/LICENSE guzzlehttp-LICENSE +mv 3rdparty/guzzlehttp/ringphp/LICENSE guzzlehttp-LICENSE +mv 3rdparty/guzzlehttp/streams/LICENSE guzzlehttp-LICENSE +mv 3rdparty/icewind/searchdav/LICENSE icewind-LICENSE +mv 3rdparty/interfasys/lognormalizer/COPYING interfasys-COPYING +mv 3rdparty/jeremeamia/SuperClosure/LICENSE.md jeremeamia-LICENSE +mv 3rdparty/justinrainbow/json-schema/LICENSE justinrainbow-LICENSE +mv 3rdparty/leafo/scssphp/LICENSE.md leafo-LICENSE +mv 3rdparty/league/flysystem/LICENSE league-LICENSE +mv '3rdparty/LICENSE INFO' 3rdparty-LICENSE_INFO +mv 3rdparty/microsoft/azure-storage-blob/LICENSE microsoft-LICENSE +mv 3rdparty/microsoft/azure-storage-common/LICENSE microsoft-LICENSE +mv 3rdparty/mtdowling/jmespath.php/LICENSE mtdowling-LICENSE +mv 3rdparty/nikic/php-parser/LICENSE nikic-LICENSE +mv 3rdparty/patchwork/jsqueeze/LICENSE.ASL20 patchwork-LICENSE-APACHE +mv 3rdparty/patchwork/jsqueeze/LICENSE.GPLv2 patchwork-LICENSE-GPL +mv 3rdparty/patchwork/utf8/LICENSE-APACHE patchwork-LICENSE-APACHE +mv 3rdparty/patchwork/utf8/LICENSE-GPL patchwork-LICENSE-GPL +mv 3rdparty/pear/console_getopt/LICENSE pear-LICENSE +mv 3rdparty/pear/pear_exception/LICENSE pear-LICENSE +mv 3rdparty/php-opencloud/openstack/LICENSE php-opencloud-LICENSE +mv 3rdparty/phpseclib/phpseclib/LICENSE phpseclib-LICENSE +mv 3rdparty/psr/container/LICENSE psr-LICENSE +mv 3rdparty/psr/http-message/LICENSE psr-LICENSE +mv 3rdparty/psr/log/LICENSE psr-LICENSE +mv 3rdparty/punic/punic/LICENSE.txt punic-LICENSE.txt +mv 3rdparty/punic/punic/UNICODE-LICENSE.txt punic-UNICODE-LICENSE +mv 3rdparty/ralouphie/getallheaders/LICENSE ralouphie-LICENSE +mv 3rdparty/react/promise/LICENSE react-LICENSE +mv 3rdparty/sabre/dav/lib/DAV/Browser/assets/openiconic/ICON-LICENSE sabre-ICON-LICENSE +mv 3rdparty/sabre/dav/LICENSE sabre-LICENSE +mv 3rdparty/sabre/event/LICENSE sabre-LICENSE +mv 3rdparty/sabre/http/LICENSE sabre-LICENSE +mv 3rdparty/sabre/uri/LICENSE sabre-LICENSE +mv 3rdparty/sabre/vobject/LICENSE sabre-LICENSE +mv 3rdparty/sabre/xml/LICENSE sabre-LICENSE +mv 3rdparty/stecman/symfony-console-completion/LICENCE stecman-LICENSE +mv 3rdparty/symfony/console/LICENSE symfony-LICENSE +mv 3rdparty/symfony/event-dispatcher-contracts/LICENSE symfony-LICENSE +mv 3rdparty/symfony/event-dispatcher/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-iconv/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-intl-idn/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-mbstring/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-php56/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-php72/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-php73/LICENSE symfony-LICENSE +mv 3rdparty/symfony/polyfill-util/LICENSE symfony-LICENSE +mv 3rdparty/symfony/process/LICENSE symfony-LICENSE +mv 3rdparty/symfony/routing/LICENSE symfony-LICENSE +mv 3rdparty/symfony/service-contracts/LICENSE symfony-LICENSE +mv 3rdparty/symfony/translation-contracts/LICENSE symfony-LICENSE +mv 3rdparty/symfony/translation/LICENSE symfony-LICENSE +mv apps/accessibility/composer/composer/LICENSE accessibility-LICENSE +mv apps/admin_audit/composer/composer/LICENSE admin_audit-LICENSE +mv apps/cloud_federation_api/composer/composer/LICENSE cloud_federation_api-LICENSE +mv apps/cloud_federation_api/LICENSE cloud_federation_api-LICENSE +mv apps/comments/composer/composer/LICENSE comments-LICENSE +mv apps/dav/composer/composer/LICENSE dav-LICENSE +mv apps/encryption/composer/composer/LICENSE encryption-LICENSE +mv apps/federatedfilesharing/composer/composer/LICENSE federatedfilesharing-LICENSE +mv apps/federation/composer/composer/LICENSE federation-LICENSE +mv apps/files/composer/composer/LICENSE files-LICENSE +mv apps/files_external/3rdparty/composer/LICENSE files_external-LICENSE +mv apps/files_external/3rdparty/icewind/smb/LICENSE.txt icewind-smb-LICENSE +mv apps/files_external/3rdparty/icewind/streams/LICENCE icewind-streams-LICENSE +mv apps/files_pdfviewer/vendor/pdfjs/LICENSE js-pdfjs-LICENSE +mv apps/files_pdfviewer/vendor/pdfjs/web/cmaps/LICENSE js-pdfjs-cmaps-LICENSE +mv apps/files_rightclick/COPYING files_rightclick-COPYING +mv apps/files_rightclick/LICENSE files_rightclick-LICENSE +mv apps/files_sharing/composer/composer/LICENSE files_sharing-LICENSE +mv apps/files_trashbin/composer/composer/LICENSE files_trashbin-LICENSE +mv apps/files_versions/composer/composer/LICENSE files_versions-LICENSE +mv apps/lookup_server_connector/composer/composer/LICENSE lookup_server_connector-LICENSE +mv apps/nextcloud_announcements/COPYING nextcloud_announcements-COPYING +mv apps/notifications/COPYING notifications-LICENSE +mv apps/oauth2/composer/composer/LICENSE oauth2-LICENSE +mv apps/password_policy/LICENSE password_policy-LICENSE +mv apps/photos/COPYING photos-COPYING +mv apps/privacy/COPYING privacy-COPYING +mv apps/provisioning_api/composer/composer/LICENSE provisioning_api-LICENSE +mv apps/recommendations/LICENSE recommendations-LICENSE +mv apps/serverinfo/COPYING serverinfo-LICENSE +mv apps/settings/composer/composer/LICENSE settings-LICENSE +mv apps/sharebymail/composer/composer/LICENSE sharebymail-LICENSE +mv apps/survey_client/COPYING survey_client-LICENSE +mv apps/systemtags/composer/composer/LICENSE systemtags-LICENSE +mv apps/text/COPYING text-COPYING +mv apps/theming/js/3rdparty/jscolor/LICENSE.txt jscolor-LICENSE +mv apps/twofactor_backupcodes/composer/composer/LICENSE twofactor_backupcodes-LICENSE +mv apps/updatenotification/composer/composer/LICENSE updatenotification-LICENSE +mv apps/user_ldap/composer/composer/LICENSE user_ldap-LICENSE +mv apps/user_ldap/vendor/ui-multiselect/MIT-LICENSE js-jqueryui-multiselect-LICENSE +mv apps/viewer/COPYING viewer-COPYING +mv apps/workflowengine/composer/composer/LICENSE workflowengine-LICENSE +mv COPYING nextcloud-LICENSE +mv core/fonts/LICENSE_OFL.txt fonts-LICENSE +mv core/vendor/zxcvbn/LICENSE.txt zxcvbn-LICENSE +mv lib/composer/composer/LICENSE composer-LICENSE -# Deal with licenses automatically -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 -find . -mindepth 2 \( -name '*LICENSE*' -o -name '*LICENCE*' -o -name '*COPYING*' \) nb=$( find . -mindepth 2 \( -name '*LICENSE*' -o -name '*LICENCE*' -o -name '*COPYING*' \) | wc -l ) if [ $nb -gt 0 ] then - false Found unexpected licenses to verify + false found unexpected licenses to verify fi @@ -288,10 +411,10 @@ done install -pm 755 occ %{buildroot}%{_datadir}/%{name} # symlink config dir -ln -s ../../../%{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config +ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config # nextcloud looks for ca-bundle.crt in config dir -ln -s ../pki/ca-trust/extracted/pem/tls-ca-bundle.pem %{buildroot}%{_sysconfdir}/%{name}/ca-bundle.crt +ln -sf %{_sysconfdir}/pki/tls/certs/ca-bundle.crt %{buildroot}%{_sysconfdir}/%{name}/ca-bundle.crt # set default config install -pm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/config.php @@ -309,38 +432,19 @@ install -Dpm 644 %{SOURCE200} \ %{buildroot}%{_sysconfdir}/nginx/default.d/%{name}.conf install -Dpm 644 %{SOURCE201} \ %{buildroot}%{_sysconfdir}/nginx/conf.d/%{name}.conf - -# php-fpm config 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 -# If there's a new installation activate the installation wizard -%post -INSTALLED=$(grep -c secret /etc/nextcloud/config.php) -if [ "${INSTALLED}" -eq "0" ]; then - echo "First time installation, enabling installation wizard" - touch %{_sysconfdir}/%{name}/CAN_INSTALL - chown apache:apache %{_sysconfdir}/%{name}/CAN_INSTALL -fi - -/usr/bin/systemctl restart php-fpm.service > /dev/null 2>&1 || : - %post httpd /usr/bin/systemctl reload httpd.service > /dev/null 2>&1 || : -/usr/bin/systemctl reload php-fpm.service > /dev/null 2>&1 || : %postun httpd if [ $1 -eq 0 ]; then /usr/bin/systemctl reload httpd.service > /dev/null 2>&1 || : - /usr/bin/systemctl reload php-fpm.service > /dev/null 2>&1 || : fi %post nginx @@ -354,12 +458,11 @@ if [ $1 -eq 0 ]; then fi %files -%doc AUTHORS README.%{distro} MIGRATION.%{distro} config/config.sample.php +%doc AUTHORS README.fedora MIGRATION.fedora 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} @@ -374,7 +477,6 @@ fi %config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf %{_sysconfdir}/httpd/conf.d/%{name}-access.conf.avail %{_sysconfdir}/httpd/conf.d/%{name}*.inc -%config(noreplace) %{_sysconfdir}/php-fpm.d/%{name}.conf %files nginx %config(noreplace) %{_sysconfdir}/nginx/default.d/%{name}.conf @@ -389,4 +491,88 @@ fi %changelog -%autochangelog +* Sat Jan 16 2021 Christopher Engelhard - 18.0.13-1 +- Update to Nextcloud 18.0.13 +- This is the final upstream release of the 18.x branch + +* Mon Dec 28 2020 Christopher Engelhard - 18.0.12-2 +- Remove syslinux labeling +- Remove duplicate dependencies +- Add missing dependency on CA certs bundle +- Add Provides: for bundled libraries + +* Thu Dec 10 2020 Christopher Engelhard - 18.0.12-1 +- Update to Nextcloud 18.0.12 + +* Thu Nov 19 2020 Christopher Engelhard - 18.0.11-1 +- Update to Nextcloud 18.0.11 + +* Wed Nov 11 2020 Christopher Engelhard - 18.0.9-2 +- Add dependencies on php-cli (for occ) and php-process (for posix) +- Remove unneeded BR on php-cli +- Add patch to allow updates across more than one major version +- Remove CentOS/RHEL 7 support from spec file + +* Sun Oct 11 2020 Christopher Engelhard - 18.0.9-1 +- Update to Nextcloud 18.0.9 + +* Sat Feb 08 2020 Ivan Chavero - 18.0.0-1 +- Refactor spec file +- Update to Nextcoud 18.0.0 + +* Wed Jan 29 2020 Fedora Release Engineering - 10.0.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 10.0.4-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 10.0.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 9 2019 Remi Collet - 10.0.4-6 +- drop dependency on php-password-compat #1658730 +- allow php-smbclient 1.0.0 #1663672 +- allow doctrine/dbal 2.x + +* Fri Jul 13 2018 Fedora Release Engineering - 10.0.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 10.0.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 10.0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Mar 25 2017 Shawn Iwinski - 10.0.4-2 +- Add max versions to dependencies to limit each to 1 major version +- Update some dependencies to use php-composer(*) instead of package names +- Prepare for php-composer(google/apiclient) version 2 and new version 1 package + +* Tue Feb 28 2017 James Hogarth - 10.0.4-1 +- update to 10.0.4 +- Add migration from owncloud documentation +- Add systemd timer for background jobs + +* Wed Feb 08 2017 James Hogarth - 10.0.3-1 +- update to 10.0.3 + +* Thu Oct 06 2016 James Hogarth - 10.0.1-1 +- update to 10.0.1 + +* Mon Aug 01 2016 James Hogarth - 9.0.53-5 +- Use lua to have a common srpm between epel7 and fedora + +* Fri Jul 29 2016 James Hogarth - 9.0.53-4 +- Don't unbundle javascript on EPEL7 due to versioning issues + +* Fri Jul 29 2016 James Hogarth - 9.0.53-3 +- Unbundle javascript libraries from core where possible + +* Tue Jul 26 2016 James Hogarth - 9.0.53-2 +- Update the autoloader to use the path from the approved package + +* Tue Jul 19 2016 James Hogarth - 9.0.53-1 +- New release 9.0.53 + +* Thu Jul 14 2016 James Hogarth - 9.0.52-1 +- Initial nextcloud build diff --git a/plans/base.fmf b/plans/base.fmf index 58299cc..fc3dea5 100644 --- a/plans/base.fmf +++ b/plans/base.fmf @@ -7,6 +7,5 @@ prepare: package: nextcloud environment: PACKAGES: nextcloud - VERSION: 20.0.2 RC1 execute: how: tmt diff --git a/sources b/sources index 95997de..f73c275 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (nextcloud-34.0.3.tar.bz2) = 3463dbbdeae5275a0791b115cf86aed41c5a138fdd19bb32ec12837a6698106b6f172e24fb1264a2d4e20b2b805bcf7841b2338e4e02f1fd5394fbed830cc695 +SHA512 (nextcloud-18.0.13.tar.bz2) = 8040dece29a2de2ac0e5c02aa26f899c05c936312c7e8a5f1b0d2f97fa12150f0c66ec9f08764ce81e92fc90ecc9bde45fa43da3293437d40ec4a3b16b6a744e diff --git a/utils/get-composer-requires.py b/utils/get-composer-requires.py deleted file mode 100755 index da48e8a..0000000 --- a/utils/get-composer-requires.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/env python - -import os -import json -import re -import subprocess -from colorama import Fore, Style - -defaultconstraint = 2 -excludes = ('php') -basedir = '..' -srcdir = os.path.join(basedir, 'nextcloud') -outdir = basedir -jsonfiles = ('3rdparty/composer.json', 'apps/files_external/3rdparty/composer.json') - -constraintmap = ('any', 'loose', 'strict', 'exact') - -def eval_version(version, constraint=3): - version = version.replace('v', '') - if version == '*': - constraint = 0 - version = '0' - elif version.startswith('^'): - constraint = 1 - version = version.strip('^') - elif version.startswith('~'): - constraint = 2 - version = version.strip('~') - - if re.search('[^.0-9]', version): - print('Unparseable version:', version) - version = '0.0.0' - constraint = 3 - - return version, constraint - -def get_requires(name, version, constraint): - splitver = version.split('.') - - if constraint == 0: - requires = 'php-composer(' + name + ')' - elif constraint == 1: - wipe = False - for i in range(0, len(splitver)): - if splitver[i] == '0' or wipe: - splitver[i] = '0' - else: - splitver[i] = str(int(splitver[i]) + 1) - wipe = True - requires = '(php-composer(' + name + ') >= ' + version + ' with php-composer(' + name + ') < ' + '.'.join(splitver) + ')' - elif constraint == 2: - splitver[-1] = '0' - splitver[-2] = str(int(splitver[-2]) + 1) - requires = '(php-composer(' + name + ') >= ' + version + ' with php-composer(' + name + ') < ' + '.'.join(splitver) + ')' - else: - requires = 'php-composer(' + name + ') = ' + version - return requires - -def repoquery(query): - stdout = subprocess.run(['dnf', 'repoquery', '-q', '--whatprovides', requires], stdout=subprocess.PIPE, universal_newlines=True, check = True).stdout - return stdout - -requirefile = open(os.path.join(outdir, 'require.pkgtmp'), 'w') -requirefile.write('# PHP composer dependencies\n') - -providefile = open(os.path.join(outdir, 'provide.pkgtmp'), 'w') -providefile.write('# Bundled libraries\n') - - -for file in jsonfiles: - requirefile.write(f"# From {file}\n") - providefile.write(f"# From {file}\n") - - with open(os.path.join(srcdir, file)) as f: - jsondata = json.load(f) - packages = jsondata['require'].items() - - print(f"\n{Style.BRIGHT}Parsing '{file}'...{Style.RESET_ALL}") - for name, verrange in packages: - if name in excludes: - print(f"{name} {verrange} -> in exclude list, skipping.") - continue - - version, constraint = eval_version(verrange, defaultconstraint) - - requires = get_requires(name, version, constraint) - package = repoquery(requires) - - color = Fore.GREEN - found = True - while len(package) == 0: - color = Fore.YELLOW - constraint -= 1 - if constraint < 0: - constraint = 0 - color = Fore.RED - package = 'none\n' - found = False - break - requires = get_requires(name, version, constraint) - package = repoquery(requires) - - print(f"{name} {verrange} -> {Style.BRIGHT}{color}{package.rstrip()}{Style.RESET_ALL} ({constraintmap[constraint]})") - - if found: - requirefile.write(f"Requires: {requires}\n") - else: - providefile.write(f"Provides: bundled(php-composer({name})) = {version}\n") -