260614d
Name:           nextcloud
ff74a2f
Version:        10.0.4
373171f
Release:        2%{?dist}
260614d
Summary:        Private file sync and share server
260614d
260614d
License:        AGPLv3+ and MIT and BSD and ASL 2.0 and WTFPL and CC-BY-SA and GPLv3+ and Adobe
260614d
URL:            http://nextcloud.com
260614d
260614d
Source0:        https://download.nextcloud.com/server/releases/%{name}-%{version}.tar.bz2
260614d
260614d
Source1:        %{name}-httpd.conf
260614d
Source2:        %{name}-access-httpd.conf.avail
260614d
260614d
Source200:        %{name}-default-nginx.conf
260614d
Source201:        %{name}-conf-nginx.conf
260614d
Source202:        %{name}-php-fpm.conf
260614d
Source203:        %{name}-el7-php-fpm.conf
260614d
260614d
# Config snippets
260614d
Source100:      %{name}-auth-any.inc
260614d
Source101:      %{name}-auth-local.inc
260614d
Source102:      %{name}-auth-none.inc
260614d
Source103:      %{name}-defaults.inc
260614d
# packaging notes and doc
260614d
Source3:        %{name}-README.fedora
260614d
Source4:        %{name}-mysql.txt
260614d
Source5:        %{name}-postgresql.txt
ff74a2f
Source6:        %{name}-MIGRATION.fedora
260614d
# config.php containing just settings we want to specify, nextcloud's
260614d
# initial setup will fill out other settings appropriately
260614d
Source7:        %{name}-config.php
260614d
260614d
# Our autoloader for core
260614d
Source8:        %{name}-fedora-autoloader.php
260614d
ff74a2f
# Systemd timer for background jobs
ff74a2f
Source10:       %{name}-systemd-timer.service
ff74a2f
Source11:       %{name}-systemd-timer.timer
ff74a2f
260614d
# Stop OC from trying to do stuff to .htaccess files. Just calm down, OC.
260614d
# Distributors are on the case.
260614d
Patch1:         %{name}-9.1.0-dont_update_htacess.patch
260614d
260614d
# Remove explicit load of dropbox
260614d
Patch2:         %{name}-9.1.0-dropbox-autoloader.patch
260614d
260614d
# Remove explicit load of google
260614d
Patch3:         %{name}-9.1.0-google-autoloader.patch
260614d
260614d
# Remove explicit load of aws
260614d
Patch4:         %{name}-9.1.0-amazon-autoloader.patch
260614d
260614d
# Disable the integrity checking whilst a better way to deal with it is found
260614d
Patch5:         %{name}-9.1.0-default_integrity_check_disabled.patch
260614d
260614d
# Apply the backport patches to support PHP7.1 and don't complain
260614d
Patch6:         %{name}-463e2ea-php71-backport.patch
260614d
Patch7:         %{name}-b129d5d-php71-backport.patch
260614d
Patch8:         %{name}-10.0.3-dont-check-php-version.patch
260614d
ff74a2f
# Direct the admin to the correct cli command for upgrades
ff74a2f
Patch9:         %{name}-10.0.4-correct-cli-upgrade.patch
ff74a2f
260614d
BuildArch:      noarch
260614d
ff74a2f
# For the systemd macros
ff74a2f
%{?systemd_requires}
ff74a2f
BuildRequires:  systemd
260614d
260614d
# expand pear macros on install
260614d
BuildRequires:  php-pear
260614d
260614d
# For sanity %%check
260614d
BuildRequires:       php-cli
260614d
BuildRequires:       php-composer(sabre/dav)  >= 3.0.9
260614d
BuildRequires:       php-composer(sabre/dav)  < 4.0
260614d
BuildRequires:       php-composer(doctrine/dbal) >= 2.5.4
260614d
BuildRequires:       php-composer(doctrine/dbal) < 2.6
260614d
BuildRequires:       php-composer(mcnetic/zipstreamer) >= 1.0
260614d
BuildRequires:       php-composer(mcnetic/zipstreamer) < 2.0
260614d
BuildRequires:       php-composer(phpseclib/phpseclib) >= 2.0
260614d
BuildRequires:       php-composer(phpseclib/phpseclib) < 3.0
373171f
BuildRequires:       php-composer(rackspace/php-opencloud) >= 1.9.2
373171f
BuildRequires:       php-composer(rackspace/php-opencloud) < 2.0
260614d
BuildRequires:       php-composer(jeremeamia/superclosure) >= 2.1.0
373171f
BuildRequires:       php-composer(jeremeamia/superclosure) < 3.0
260614d
BuildRequires:       php-composer(bantu/ini-get-wrapper) >= 1.0.1
373171f
BuildRequires:       php-composer(bantu/ini-get-wrapper) < 2.0
260614d
BuildRequires:       php-composer(natxet/CssMin) >= 3.0.4
373171f
BuildRequires:       php-composer(natxet/CssMin) < 4.0
260614d
BuildRequires:       php-composer(punic/punic) >= 1.6.3
373171f
BuildRequires:       php-composer(punic/punic) < 2.0
260614d
%if 0%{?el7}
260614d
BuildRequires:       php-pear(Archive_Tar) >= 1.3
260614d
BuildRequires:       php-pear(Archive_Tar) < 2.0
260614d
%else
260614d
BuildRequires:       php-composer(pear/archive_tar) >= 1.4.1
260614d
BuildRequires:       php-composer(pear/archive_tar) < 2.0
260614d
%endif
260614d
BuildRequires:       php-composer(patchwork/utf8) >= 1.2.6
260614d
BuildRequires:       php-composer(patchwork/utf8) < 2.0
260614d
BuildRequires:       php-composer(symfony/console) >= 2.8.3
260614d
BuildRequires:       php-composer(symfony/console) < 3.0.0
260614d
BuildRequires:       php-composer(symfony/event-dispatcher) >= 2.8.3
260614d
BuildRequires:       php-composer(symfony/event-dispatcher) < 3.0.0
260614d
BuildRequires:       php-composer(symfony/routing) >= 2.8.1
260614d
BuildRequires:       php-composer(symfony/routing) < 3.0.0
260614d
BuildRequires:       php-composer(symfony/process) >= 2.8.1
260614d
BuildRequires:       php-composer(symfony/process) < 3.0.0
260614d
BuildRequires:       php-composer(pimple/pimple) >= 3.0.2
260614d
BuildRequires:       php-composer(pimple/pimple) < 4.0
260614d
BuildRequires:       php-composer(ircmaxell/password-compat) >= 1.0.0
373171f
BuildRequires:       php-composer(ircmaxell/password-compat) < 2.0
260614d
BuildRequires:       php-composer(nikic/php-parser) >= 1.4.1
260614d
BuildRequires:       php-composer(nikic/php-parser) < 2.0
260614d
BuildRequires:       php-composer(icewind/streams) >= 0.4.1
373171f
BuildRequires:       php-composer(icewind/streams) < 1.0
260614d
BuildRequires:       php-composer(swiftmailer/swiftmailer) >= 5.4.1
373171f
BuildRequires:       php-composer(swiftmailer/swiftmailer) < 6.0
260614d
BuildRequires:       php-composer(guzzlehttp/guzzle) >= 5.3.0
260614d
BuildRequires:       php-composer(guzzlehttp/guzzle) < 6.0
260614d
BuildRequires:       php-composer(league/flysystem) >= 1.0.20
373171f
BuildRequires:       php-composer(league/flysystem) < 2.0
260614d
%if 0%{?el7}
260614d
BuildRequires:       php-pear(Console_Getopt) > 1.3
373171f
BuildRequires:       php-pear(Console_Getopt) < 2.0
260614d
BuildRequires:       php-pear(PEAR) > 1.9
260614d
%else
260614d
BuildRequires:       php-composer(pear/pear-core-minimal) >= 1.10.1
260614d
%endif
260614d
BuildRequires:       php-composer(interfasys/lognormalizer) >= 1.0
373171f
BuildRequires:       php-composer(interfasys/lognormalizer) < 2.0
260614d
BuildRequires:       php-composer(owncloud/tarstreamer) >= 0.1
373171f
BuildRequires:       php-composer(owncloud/tarstreamer) < 1.0
260614d
BuildRequires:       php-composer(patchwork/jsqueeze) >= 2.0
260614d
BuildRequires:       php-composer(patchwork/jsqueeze) < 3.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php70) >= 1.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php70) < 2.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php55) >= 1.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php55) < 2.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php56) >= 1.0
260614d
BuildRequires:       php-composer(symfony/polyfill-php56) < 2.0
260614d
BuildRequires:       php-composer(lukasreschke/id3parser) >= 0.0.1
260614d
BuildRequires:       php-composer(lukasreschke/id3parser) < 1.0.0
373171f
BuildRequires:       php-composer(icewind/smb) >= 1.1.0
373171f
BuildRequires:       php-composer(icewind/smb) < 2.0
260614d
BuildRequires:       php-pecl(smbclient) >= 0.8.0
373171f
BuildRequires:       php-pecl(smbclient) < 1.0
260614d
BuildRequires:       php-composer(google/apiclient) >= 1.1.7
373171f
# Note: 1.1.8 has BC breaks
373171f
BuildRequires:       php-composer(google/apiclient) < 1.1.8
260614d
BuildRequires:       php-composer(aws/aws-sdk-php) >= 2.7.5
260614d
BuildRequires:       php-composer(aws/aws-sdk-php) < 3.0.0
260614d
BuildRequires:       php-composer(symfony/yaml) >= 2.6.0
260614d
BuildRequires:       php-composer(symfony/yaml) < 3.0.0
260614d
BuildRequires:       php-pear(pear.dropbox-php.com/Dropbox)
260614d
BuildRequires:       php-composer(onelogin/php-saml) >= 2.9.0
373171f
BuildRequires:       php-composer(onelogin/php-saml) < 3.0
260614d
260614d
Requires:       %{name}-webserver = %{version}-%{release}
260614d
Requires:       %{name}-database = %{version}-%{release}
260614d
260614d
# Core PHP libs/extensions required by OC core
260614d
Requires:       php-curl
260614d
Requires:       php-dom
260614d
Requires:       php-exif
260614d
Requires:       php-fileinfo
260614d
Requires:       php-gd
260614d
Requires:       php-iconv
260614d
Requires:       php-json
260614d
Requires:       php-ldap
260614d
Requires:       php-mbstring
260614d
Requires:       php-openssl
260614d
Requires:       php-pcre
260614d
Requires:       php-pdo
260614d
Requires:       php-session
260614d
Requires:       php-simplexml
260614d
Requires:       php-xmlwriter
260614d
Requires:       php-spl
260614d
Requires:       php-zip
260614d
Requires:       php-filter
260614d
260614d
### External PHP libs required by OC core
260614d
260614d
260614d
# "doctrine/dbal": "2.5.4"
260614d
# pulls in doctrine/common as a strict requires
260614d
# which pulls in doctrine/{annotations,inflector,cache,collections,lexer} as strict requires
260614d
Requires:       php-composer(doctrine/dbal) >= 2.5.4
260614d
Requires:       php-composer(doctrine/dbal) < 2.6
260614d
260614d
#"mcnetic/zipstreamer": "^1.0"
260614d
Requires:       php-composer(mcnetic/zipstreamer) >= 1.0
260614d
Requires:       php-composer(mcnetic/zipstreamer) < 2.0
260614d
260614d
# "phpseclib/phpseclib": "2.0.0"
260614d
Requires:       php-composer(phpseclib/phpseclib) >= 2.0
260614d
Requires:       php-composer(phpseclib/phpseclib) < 3.0
260614d
260614d
#Requires:       php-composer(rackspace/php-opencloud) >= 1.9.2
260614d
# pulls in guzzle/http as a strict requires
260614d
# guzzle/http package include common, parser and stream too
373171f
Requires:       php-composer(rackspace/php-opencloud) >= 1.9.2
373171f
Requires:       php-composer(rackspace/php-opencloud) < 2.0
260614d
260614d
# "jeremeamia/superclosure": "2.1.0"
260614d
Requires:       php-composer(jeremeamia/superclosure) >= 2.1.0
373171f
Requires:       php-composer(jeremeamia/superclosure) < 3.0
260614d
260614d
# "bantu/ini-get-wrapper": "v1.0.1"
260614d
Requires:       php-composer(bantu/ini-get-wrapper) >= 1.0.1
373171f
Requires:       php-composer(bantu/ini-get-wrapper) < 2.0
260614d
260614d
# "natxet/CssMin": "dev-master"
260614d
Requires:       php-composer(natxet/CssMin) >= 3.0.4
373171f
Requires:       php-composer(natxet/CssMin) < 4.0
260614d
260614d
# "punic/punic": "1.6.3"
260614d
Requires:       php-composer(punic/punic) >= 1.6.3
373171f
Requires:       php-composer(punic/punic) < 2.0
260614d
260614d
# "pear/archive_tar": "1.4.1"
260614d
# archive_tar is in base el7 and doesn't have the fedora php-composer provides
260614d
%if 0%{?el7}
260614d
Requires:       php-pear(Archive_Tar) >= 1.3
260614d
Requires:       php-pear(Archive_Tar) < 2.0
260614d
%else
260614d
Requires:       php-composer(pear/archive_tar) >= 1.4.1
260614d
Requires:       php-composer(pear/archive_tar) < 2.0
260614d
%endif
260614d
260614d
# "patchwork/utf8": "1.2.6"
260614d
Requires:       php-composer(patchwork/utf8) >= 1.2.6
260614d
Requires:       php-composer(patchwork/utf8) < 2.0
260614d
260614d
# "symfony/console": "2.8.3"
260614d
Requires:       php-composer(symfony/console) >= 2.8.3
373171f
Requires:       php-composer(symfony/console) < 3.0.0
260614d
# "symfony/event-dispatcher": "2.8.3"
260614d
Requires:       php-composer(symfony/event-dispatcher) >= 2.8.3
260614d
Requires:       php-composer(symfony/event-dispatcher) < 3.0.0
260614d
# "symfony/routing": "2.8.1"
260614d
Requires:       php-composer(symfony/routing) >= 2.8.1
260614d
Requires:       php-composer(symfony/routing) < 3.0.0
260614d
# "symfony/process": "2.8.1"
260614d
Requires:       php-composer(symfony/process) >= 2.8.1
260614d
Requires:       php-composer(symfony/process) < 3.0.0
260614d
260614d
# "pimple/pimple": "3.0.2"
260614d
Requires:       php-composer(pimple/pimple) >= 3.0.2
260614d
Requires:       php-composer(pimple/pimple) < 4.0
260614d
260614d
# "ircmaxell/password-compat": "1.0.*"
260614d
Requires:       php-composer(ircmaxell/password-compat) >= 1.0.0
373171f
Requires:       php-composer(ircmaxell/password-compat) < 2.0
260614d
260614d
# "nikic/php-parser": "1.4.1"
260614d
Requires:       php-composer(nikic/php-parser) >= 1.4.1
260614d
Requires:       php-composer(nikic/php-parser) < 2.0
260614d
260614d
# "icewind/Streams": "0.4.1"
260614d
Requires:       php-composer(icewind/streams) >= 0.4.1
373171f
Requires:       php-composer(icewind/streams) < 1.0
260614d
260614d
# "swiftmailer/swiftmailer": "@stable"
260614d
# Version 5.4.1 for autoloader in /usr/share/php
260614d
Requires:       php-composer(swiftmailer/swiftmailer) >= 5.4.1
373171f
Requires:       php-composer(swiftmailer/swiftmailer) < 6.0
260614d
260614d
# "guzzlehttp/guzzle": "5.3.0"
260614d
# pulls in guzzlehttp/ringphp as strict requires
260614d
# ringphp pulls in guzzlehttp/streams and react/promise as strict requires
260614d
Requires:       php-composer(guzzlehttp/guzzle) >= 5.3.0
260614d
Requires:       php-composer(guzzlehttp/guzzle) < 6.0
260614d
260614d
# "league/flysystem": "1.0.20"
260614d
Requires:       php-composer(league/flysystem) >= 1.0.20
373171f
Requires:       php-composer(league/flysystem) < 2.0
260614d
260614d
260614d
# "pear/pear-core-minimal": "v1.10.1"
260614d
# this includes pear/console_getopt and pear/PEAR
260614d
%if 0%{?el7}
260614d
Requires:       php-pear(Console_Getopt) > 1.3
373171f
Requires:       php-pear(Console_Getopt) < 2.0
260614d
Requires:       php-pear(PEAR) > 1.9
260614d
%else
260614d
Requires:       php-composer(pear/pear-core-minimal) >= 1.10.1
260614d
%endif
260614d
260614d
# "interfasys/lognormalizer": "v1.0"
260614d
Requires:       php-composer(interfasys/lognormalizer) >= 1.0
373171f
Requires:       php-composer(interfasys/lognormalizer) < 2.0
260614d
260614d
# "deepdiver1975/TarStreamer": "v0.1.0"
260614d
# Despite the difference in name this is correct
260614d
# https://github.com/owncloud/3rdparty/tree/master/deepdiver1975/tarstreamer
260614d
Requires:       php-composer(owncloud/tarstreamer) >= 0.1
373171f
Requires:       php-composer(owncloud/tarstreamer) < 1.0
260614d
260614d
# "patchwork/jsqueeze": "^2.0"
260614d
Requires:       php-composer(patchwork/jsqueeze) >= 2.0
260614d
Requires:       php-composer(patchwork/jsqueeze) < 3.0
260614d
260614d
# "sabre/dav" : "3.0.9"
260614d
# pulls in sabre event, http and vobject, xml, uri as strict requires
260614d
Requires:       php-composer(sabre/dav)  >= 3.0.9
260614d
Requires:       php-composer(sabre/dav)  < 4.0
260614d
260614d
# symfony/polyfill-mbstring is not in composer.json but is in the 3rdparty folder
260614d
# we don't need it though as we ship mbstring itself
260614d
260614d
# "symfony/polyfill-php70": "^1.0",
260614d
# pulls in s strict requires of paragonie/random_compat
260614d
Requires:       php-composer(symfony/polyfill-php70) >= 1.0
260614d
Requires:       php-composer(symfony/polyfill-php70) < 2.0
260614d
# "symfony/polyfill-php55": "^1.0",
260614d
Requires:       php-composer(symfony/polyfill-php55) >= 1.0
260614d
Requires:       php-composer(symfony/polyfill-php55) < 2.0
260614d
# "symfony/polyfill-php56": "^1.0"
260614d
Requires:       php-composer(symfony/polyfill-php56) >= 1.0
260614d
Requires:       php-composer(symfony/polyfill-php56) < 2.0
260614d
260614d
# "lukasreschke/id3parser": "^0.0.1"
260614d
Requires:       php-composer(lukasreschke/id3parser) >= 0.0.1
260614d
Requires:       php-composer(lukasreschke/id3parser) < 1.0.0
260614d
260614d
### For dependencies of apps/files_external
260614d
260614d
## SMB/CIFS external storage stuff
260614d
260614d
#"icewind/smb": "1.1.0"
260614d
# note that streams is a dep but already required by core anyway
373171f
Requires:       php-composer(icewind/smb) >= 1.1.0
373171f
Requires:       php-composer(icewind/smb) < 2.0
260614d
# This makes smb external storage usable in performance
260614d
# and doesn't break things like encryption due to timeouts
260614d
Requires:       php-pecl(smbclient) >= 0.8.0
373171f
Requires:       php-pecl(smbclient) < 1.0
260614d
260614d
260614d
# Requiring so that the shipped external smb storage works
260614d
# The net command is needed and enabling smb tests for smbclient command
260614d
Requires:       samba-common-tools
260614d
Requires:       samba-client
260614d
260614d
## Note these next bits are not listed in composer but manually dropped in place
260614d
260614d
## Dropbox external storage
260614d
Requires:       php-pear(pear.dropbox-php.com/Dropbox)
260614d
260614d
## Google Drive external storage
373171f
## Note: 1.1.8 has BC breaks
260614d
Requires:       php-composer(google/apiclient) >= 1.1.7
373171f
Requires:       php-composer(google/apiclient) < 1.1.8
260614d
260614d
## AWS S3 external storage
260614d
Requires:       php-composer(aws/aws-sdk-php) >= 2.7.0
260614d
Requires:       php-composer(aws/aws-sdk-php) < 3.0.0
260614d
260614d
## For dependency of apps/gallery
260614d
# "symfony/yaml": "~2.6"
260614d
Requires:       php-composer(symfony/yaml) >= 2.6.0
260614d
Requires:       php-composer(symfony/yaml) < 3.0.0
260614d
260614d
## For dependency of app/user_saml
260614d
# "onelogin/php-saml": "^2.9"
260614d
Requires:       php-composer(onelogin/php-saml) >= 2.9.0
260614d
Requires:       php-composer(onelogin/php-saml) < 3.0.0
260614d
260614d
# Need to label the httpd rw stuff correctly until base selinux policy updated
260614d
Requires(post):   %{_sbindir}/semanage
260614d
Requires(postun): %{_sbindir}/semanage
260614d
260614d
# Bundled javascript libraries in core vendor
260614d
# State of javascript in fedora right now is too painful to unbundle
260614d
Provides: bundled(js-base64) = 0.3.0
260614d
Provides: bundled(js-blueimp-md5) = 1.1.0
260614d
Provides: bundled(js-bootstrap/tooltip) = 3.3.6
260614d
Provides: bundled(js-clipboard) = 1.5.12
260614d
Provides: bundled(js-davclient)
260614d
Provides: bundled(js-es6-promise) = 2.3.0
260614d
Provides: bundled(js-handlebars) = 1.3.0
260614d
Provides: bundled(js-jcrop) = 0.9.12
260614d
Provides: bundled(js-jquery-ui) = 1.10
260614d
Provides: bundled(js-jsTimezoneDetect) = 1.0.6
260614d
Provides: bundled(js-moment) = 2.10.3
260614d
Provides: bundled(js-select2) = 3.4.8
260614d
Provides: bundled(js-snapjs) = 2.0.0
260614d
Provides: bundled(js-strengthify) = 0.5.1
260614d
Provides: bundled(js-zxcvbn) = gitf2a8cda13d
260614d
Provides: bundled(js-jquery) = 2.1.4
260614d
Provides: bundled(js-jquery-migrate) = 1.4.0
260614d
Provides: bundled(js-backbone) = 1.2.3
260614d
Provides: bundled(js-underscore) = 1.8.3
260614d
# bundled from files_pdfviewer
260614d
Provides: bundled(js-pdfjs) = 1.1.469
260614d
# bundled from files_theming
260614d
Provides: bundled(js-jscolor) = 2.0.4
260614d
# bundled from federatedfilesharing
260614d
Provides: bundled(js-gs-share)
260614d
# bundled from files_texteditor
260614d
Provides: bundled(js-ace)
260614d
# bundled from user_ldap
260614d
Provides: bundled(js-jquery-multiselect) = 1.13
260614d
# bundled from gallery
260614d
Provides: bundled(js-bigshot)
260614d
Provides: bundled(js-commonmark) = 0.22.0
260614d
Provides: bundled(js-dompurify) = 0.7.0
260614d
Provides: bundled(js-eventsource-polyfill) = 0.9.7
260614d
Provides: bundled(js-jquery-touchevents) = 1.0.1
260614d
Provides: bundled(js-jqueryui-touch-punch) = 0.2.3
260614d
260614d
%description
260614d
NextCloud gives you universal access to your files through a web interface or
260614d
WebDAV. It also provides a platform to easily view & sync your contacts,
260614d
calendars and bookmarks across all your devices and enables basic editing right
260614d
on the web. NextCloud is extendable via a simple but powerful API for
260614d
applications and plugins.
260614d
260614d
260614d
%package httpd
260614d
Summary:    Httpd integration for NextCloud
260614d
260614d
Provides:   %{name}-webserver = %{version}-%{release}
260614d
Requires:   %{name} = %{version}-%{release}
260614d
260614d
# PHP dependencies
260614d
Requires:       php
260614d
260614d
%description httpd
260614d
%{summary}.
260614d
260614d
260614d
%package nginx
260614d
Summary:    Nginx integration for NextCloud
260614d
260614d
Provides:   %{name}-webserver = %{version}-%{release}
260614d
Requires:   %{name} = %{version}-%{release}
260614d
260614d
# PHP dependencies
260614d
Requires:   php-fpm nginx
260614d
260614d
%description nginx
260614d
%{summary}.
260614d
260614d
260614d
%package mysql
260614d
Summary:    MySQL database support for NextCloud
260614d
260614d
Provides:   %{name}-database = %{version}-%{release}
260614d
Requires:   %{name} = %{version}-%{release}
260614d
260614d
# From getSupportedDatabases, mysql => pdo, mysql
260614d
Requires:   php-pdo_mysql
260614d
260614d
%description mysql
260614d
This package ensures the necessary dependencies are in place for NextCloud to
260614d
work with MySQL / MariaDB databases. It does not require a MySQL / MariaDB
260614d
server to be installed, as you may well wish to use a remote database
260614d
server.
260614d
260614d
If you want the database to be on the same system as NextCloud itself, you must
260614d
also install and enable a MySQL / MariaDB server package. See README.mysql for
260614d
more details.
260614d
260614d
%package postgresql
260614d
Summary:    PostgreSQL database support for NextCloud
260614d
260614d
Provides:   %{name}-database = %{version}-%{release}
260614d
Requires:   %{name} = %{version}-%{release}
260614d
260614d
# From getSupportedDatabases, pgsql => function, pg_connect
260614d
Requires:   php-pgsql
260614d
260614d
%description postgresql
260614d
This package ensures the necessary dependencies are in place for NextCloud to
260614d
work with a PostgreSQL database. It does not require the PostgreSQL server
260614d
package to be installed, as you may well wish to use a remote database
260614d
server.
260614d
260614d
If you want the database to be on the same system as NextCloud itself, you must
260614d
also install and enable the PostgreSQL server package. See README.postgresql
260614d
for more details.
260614d
260614d
260614d
%package sqlite
260614d
Summary:    SQLite 3 database support for NextCloud
260614d
260614d
Provides:   %{name}-database = %{version}-%{release}
260614d
Requires:   %{name} = %{version}-%{release}
260614d
# From getSupportedDatabases, pgsql => class, SQLite3
260614d
Requires:   php-sqlite3 php-pcre
260614d
260614d
%description sqlite
260614d
This package ensures the necessary dependencies are in place for NextCloud to
260614d
work with an SQLite 3 database stored on the local system.
260614d
260614d
260614d
%prep
260614d
%autosetup -n %{name} -p1
260614d
260614d
# patch backup files and .git stuff
260614d
find . -name \*.orig    -type f        -exec rm    {} \; -print
260614d
find . -name .gitignore -type f        -exec rm    {} \; -print
260614d
find . -name .github    -type d -prune -exec rm -r {} \; -print
260614d
260614d
# prepare package doc
260614d
cp %{SOURCE3} README.fedora
260614d
cp %{SOURCE4} README.mysql
260614d
cp %{SOURCE5} README.postgresql
ff74a2f
cp %{SOURCE6} MIGRATION.fedora
260614d
260614d
mv 3rdparty/composer.json 3rdparty_composer.json
260614d
mv apps/files_external/3rdparty/composer.json files_external_composer.json
260614d
mv apps/gallery/composer.json gallery_composer.json
260614d
mv apps/user_saml/3rdparty/composer.json user_saml_composer.json
260614d
260614d
# Explicitly remove the bundled libraries we're aware of
260614d
pushd 3rdparty
260614d
rm -r doctrine/{annotations,cache,collections,common,dbal,inflector,lexer}
260614d
rm -r mcnetic/zipstreamer
260614d
rm -r phpseclib/phpseclib
260614d
rm -r rackspace/php-opencloud guzzle/{http,common,parser,stream}
260614d
rm -r jeremeamia/SuperClosure
260614d
rm -r bantu/ini-get-wrapper
260614d
rm -r natxet/CssMin
260614d
rm -r punic/punic
260614d
rm -r pear/archive_tar
260614d
rm -r patchwork/utf8
260614d
rm -r symfony/console
260614d
rm -r symfony/event-dispatcher
260614d
rm -r symfony/routing
260614d
rm -r symfony/process
260614d
rm -r pimple/pimple
260614d
rm -r ircmaxell/password-compat
260614d
rm -r nikic/php-parser
260614d
rm -r icewind/streams
260614d
rm -r swiftmailer/swiftmailer
260614d
rm -r guzzlehttp/{guzzle,ringphp,streams} react/promise
260614d
rm -r league/flysystem
260614d
rm -r pear/{pear-core-minimal,console_getopt,pear_exception}
260614d
rm -r interfasys/lognormalizer
260614d
rm -r deepdiver1975/tarstreamer
260614d
rm -r patchwork/jsqueeze
260614d
rm -r sabre/{dav,event,http,vobject,uri,xml}
260614d
rm -r symfony/polyfill-{php55,php56,php70,mbstring,util}
260614d
rm -r paragonie/random_compat
260614d
rm -r lukasreschke/id3parser
260614d
rm README.md
260614d
260614d
# remove composer stuff
260614d
rm -r composer*
260614d
260614d
# clean up any empty directories
260614d
find -type d -empty  -delete
260614d
260614d
# remove extraneous files now we've cleaned up
260614d
rm "LICENSE INFO" patches.txt
260614d
260614d
# add our Fedora autoloader
260614d
cp %{SOURCE8} ./autoload.php
260614d
260614d
# Set the vendor directory to macro based datadir in our autoloader
260614d
sed -i "s,##DATADIR##,%{_datadir}," autoload.php
260614d
popd
260614d
260614d
260614d
# remove files_external bundled libraries
260614d
rm -r apps/files_external/3rdparty/{icewind,Dropbox,google-api-php-client,aws-sdk-php,composer*}
260614d
260614d
# create autoloader, from composer.json, "require": {
260614d
#                "icewind/smb": "1.0.4",
260614d
#                "icewind/streams": "0.2"
260614d
# include stuff required directly but not in composer too
260614d
cat << 'EOF' | tee apps/files_external/3rdparty/autoload.php
260614d
260614d
require_once '%{_datadir}/php/Icewind/Streams/autoload.php';
260614d
require_once '%{_datadir}/php/Icewind/SMB/autoload.php';
260614d
require_once '%{_datadir}/pear/Dropbox/autoload.php';
373171f
if (file_exists('%{_datadir}/php/Google1/autoload.php')) {
373171f
    require_once '%{_datadir}/php/Google1/autoload.php';
373171f
} else {
373171f
    require_once '%{_datadir}/php/Google/autoload.php';
373171f
}
260614d
require_once '%{_datadir}/php/Aws/autoload.php';
260614d
EOF
260614d
260614d
# remove gallery external bundled libraries
260614d
rm -r apps/gallery/vendor/{symfony,composer*}
260614d
rm    apps/gallery/composer.lock
260614d
260614d
# create autoloader, from composer.json, "require": {
260614d
#                "symfony/yaml": "_2.6"
260614d
cat << 'EOF' | tee apps/gallery/vendor/autoload.php
260614d
260614d
require_once '%{_datadir}/php/Symfony/Component/Yaml/autoload.php';
260614d
EOF
260614d
260614d
# remove user_saml external bundled libraries
260614d
rm -r apps/user_saml/3rdparty/vendor/{composer*,onelogin}
260614d
rm apps/user_saml/3rdparty/composer.lock
260614d
260614d
# create autoloader
260614d
cat << 'EOF' | tee apps/user_saml/3rdparty/vendor/autoload.php
260614d
260614d
require_once '%{_datadir}/php/OneLogin/Saml2/autoload.php';
260614d
EOF
260614d
260614d
# clean up content
260614d
for f in {l10n.pl,init.sh,setup_owncloud.sh,image-optimization.sh,install_dependencies.sh}; do
260614d
    find . -name "$f" -delete
260614d
done
260614d
260614d
rm ./l10n/rm-old.sh
260614d
rm ./apps/gallery/build/after_failure.sh
260614d
rm ./apps/gallery/build/documentation/docpublisher.sh
260614d
rm ./apps/gallery/build/xdebug_install.sh
260614d
260614d
find -name '.tx' -print0 | xargs -0 rm -rf
260614d
find -name '.bower.json' -print0 | xargs -0 rm -rf
260614d
260614d
find . -size 0 -type f -delete
260614d
260614d
# let's not ship upstream's 'updatenotification' app, which has zero chance of working and
260614d
# a big chance of blowing things up
260614d
rm -dr apps/updatenotification
260614d
# also remove the actual updater
260614d
rm -r updater
260614d
260614d
# Locate license files and put them sensibly in place
260614d
mv apps/files_pdfviewer/vendor/pdfjs/LICENSE js-pdfjs-LICENSE
260614d
mv apps/files_pdfviewer/vendor/pdfjs/web/cmaps/LICENSE js-pdfjs-cmaps-LICENSE
260614d
mv apps/files_retention/LICENSE files_retention-LICENSE
260614d
mv apps/gallery/COPYING gallery-LICENSE
260614d
mv apps/gallery/js/vendor/bigshot/LICENSE.txt js-bigshot-LICENSE
260614d
mv apps/gallery/js/vendor/commonmark/LICENSE js-commonmark-LICENSE
260614d
mv apps/gallery/js/vendor/dompurify/LICENSE js-dompurify-LICENSE
260614d
mv apps/gallery/js/vendor/eventsource-polyfill/LICENSE js-eventsource-polyfill-LICENSE
260614d
mv apps/notifications/COPYING notifications-LICENSE
260614d
mv apps/password_policy/LICENSE password_policy-LICENSE
260614d
mv apps/serverinfo/COPYING serverinfo-LICENSE
260614d
mv apps/survey_client/COPYING survey_client-LICENSE
260614d
mv apps/theming/js/3rdparty/jscolor/LICENSE.txt js-jscolor-LICENSE
260614d
mv apps/user_ldap/vendor/ui-multiselect/MIT-LICENSE js-jqueryui-multiselect-LICENSE
260614d
mv COPYING-AGPL nextcloud-LICENSE
260614d
mv core/fonts/LICENSE.txt fonts-LICENSE
260614d
mv core/vendor/backbone/LICENSE js-backbone-LICENSE
260614d
mv core/vendor/base64/LICENSE js-base64-LICENSE
260614d
mv core/vendor/davclient.js/LICENSE js-davclient-LICENSE
260614d
mv core/vendor/es6-promise/LICENSE js-es6-promise-LICENSE
260614d
mv core/vendor/jcrop/MIT-LICENSE.txt js-jcrop-LICENSE
260614d
mv core/vendor/jquery/MIT-LICENSE.txt js-jquery-LICENSE
260614d
mv core/vendor/jquery-ui/MIT-LICENSE.txt js-jquery-ui-LICENSE
260614d
mv core/vendor/jsTimezoneDetect/LICENCE.txt js-jsTimezoneDetect-LICENSE
260614d
mv core/vendor/moment/LICENSE js-moment-LICENSE
260614d
mv core/vendor/select2/LICENSE js-select2-LICENSE
260614d
mv core/vendor/strengthify/LICENSE js-strengthify-LICENSE
260614d
mv core/vendor/underscore/LICENSE js-underscore-LICENSE
260614d
mv core/vendor/zxcvbn/LICENSE.txt js-zxcvbn-LICENSE
260614d
mv lib/composer/composer/LICENSE composer-LICENSE
260614d
260614d
%check
260614d
# files_external checks
260614d
nb=$(ls %{buildroot}%{_datadir}/%{name}/apps/files_external/3rdparty | wc -l)
260614d
if [ $nb -gt 1  ]; then
260614d
  false apps/files_external/3rdparty must only have autoload.php
260614d
fi
260614d
260614d
if grep -r 3rdparty %{buildroot}%{_datadir}/%{name}/apps/files_external \
260614d
   | grep -v 3rdparty/autoload.php | grep -v signature.json; then
260614d
   false App files_external needs to be adapted
260614d
fi
260614d
260614d
php %{buildroot}%{_datadir}/%{name}/apps/files_external/3rdparty/autoload.php
260614d
260614d
# gallery checks
260614d
nb=$(ls %{buildroot}%{_datadir}/%{name}/apps/gallery/vendor | wc -l)
260614d
if [ $nb -gt 1  ]; then
260614d
  false apps/gallery/vendor must only have autoload.php
260614d
fi
260614d
260614d
php %{buildroot}%{_datadir}/%{name}/apps/gallery/vendor/autoload.php
260614d
260614d
# user_saml checks
260614d
nb=$(ls %{buildroot}%{_datadir}/%{name}/apps/user_saml/3rdparty/vendor | wc -l)
260614d
if [ $nb -gt 1  ]; then
260614d
  false apps/user_saml/3rdparty/vendor must only have autoload.php
260614d
fi
260614d
260614d
php %{buildroot}%{_datadir}/%{name}/apps/user_saml/3rdparty/vendor/autoload.php
260614d
260614d
# core checks
260614d
nb=$(ls %{buildroot}%{_datadir}/%{name}/3rdparty | wc -l)
260614d
if [ $nb -gt 1  ]; then
260614d
  false core 3rdparty must only have autoload.php
260614d
fi
260614d
260614d
php %{buildroot}%{_datadir}/%{name}/3rdparty/autoload.php
260614d
260614d
# There should not be an composer.json files remaining
260614d
nb=$(find -name 'composer.*' | wc -l)
260614d
if [ $nb -gt 0 ]
260614d
  then
260614d
  false found unexpected composer.json files
260614d
fi
260614d
260614d
# Make sure there are no license files left over
260614d
nb=$( find . -mindepth 2 \( -name '*LICENSE*' -o -name '*LICENCE*' -o  -name '*COPYING*' \) | wc -l )
260614d
if [ $nb -gt 0 ]
260614d
  then
260614d
  false found unexpected licenses to verify
260614d
fi
260614d
260614d
260614d
%build
260614d
# Nothing to build
260614d
260614d
260614d
%install
260614d
install -dm 755 %{buildroot}%{_datadir}/%{name}
260614d
260614d
# create nextcloud datadir
260614d
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/data
260614d
# create writable app dir for appstore
260614d
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/apps
260614d
# create nextcloud sysconfdir
260614d
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
260614d
260614d
# install content
260614d
for d in $(find . -mindepth 1 -maxdepth 1 -type d | grep -v config); do
260614d
    cp -a "$d" %{buildroot}%{_datadir}/%{name}
260614d
done
260614d
260614d
for f in {*.php,*.xml,*.html,occ,robots.txt}; do
260614d
    install -pm 644 "$f" %{buildroot}%{_datadir}/%{name}
260614d
done
260614d
260614d
# symlink config dir
260614d
ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config
260614d
260614d
# nextcloud looks for ca-bundle.crt in config dir
260614d
ln -sf %{_sysconfdir}/pki/tls/certs/ca-bundle.crt %{buildroot}%{_sysconfdir}/%{name}/ca-bundle.crt
260614d
260614d
# set default config
260614d
install -pm 644 %{SOURCE7}    %{buildroot}%{_sysconfdir}/%{name}/config.php
260614d
260614d
# httpd config
260614d
install -Dpm 644 %{SOURCE1} \
260614d
    %{buildroot}%{_sysconfdir}/httpd/conf.d/%{name}.conf
260614d
install -Dpm 644 %{SOURCE2} \
260614d
    %{buildroot}%{_sysconfdir}/httpd/conf.d/%{name}-access.conf.avail
260614d
install -Dpm 644 %{SOURCE100} %{SOURCE101} %{SOURCE102} %{SOURCE103} \
260614d
    %{buildroot}%{_sysconfdir}/httpd/conf.d/
260614d
260614d
# nginx config
260614d
install -Dpm 644 %{SOURCE200} \
260614d
    %{buildroot}%{_sysconfdir}/nginx/default.d/%{name}.conf
260614d
install -Dpm 644 %{SOURCE201} \
260614d
    %{buildroot}%{_sysconfdir}/nginx/conf.d/%{name}.conf
260614d
260614d
%if 0%{?el7}
260614d
install -Dpm 644 %{SOURCE203} \
260614d
    %{buildroot}%{_sysconfdir}/php-fpm.d/%{name}.conf
260614d
%else
260614d
install -Dpm 644 %{SOURCE202} \
260614d
    %{buildroot}%{_sysconfdir}/php-fpm.d/%{name}.conf
260614d
%endif
260614d
ff74a2f
# Install the systemd timer
ff74a2f
install -Dpm 644 %{SOURCE10} %{buildroot}%{_unitdir}/nextcloud-cron.service
ff74a2f
install -Dpm 644 %{SOURCE11} %{buildroot}%{_unitdir}/nextcloud-cron.timer
260614d
260614d
%post httpd
260614d
/usr/bin/systemctl reload httpd.service > /dev/null 2>&1 || :
260614d
260614d
%postun httpd
260614d
if [ $1 -eq 0 ]; then
260614d
  /usr/bin/systemctl reload httpd.service > /dev/null 2>&1 || :
260614d
fi
260614d
260614d
%post nginx
260614d
%if 0%{?el7}
260614d
  # Work around missing php session directory for php-fpm in el7 bz#1338444
260614d
  if [ ! -d /var/lib/php/session ]
260614d
    then
260614d
    mkdir /var/lib/php/session
260614d
  fi
260614d
  /usr/bin/chown apache /var/lib/php/session
260614d
%endif
260614d
  /usr/bin/systemctl reload nginx.service > /dev/null 2>&1 || :
260614d
  /usr/bin/systemctl reload php-fpm.service > /dev/null 2>&1 || :
260614d
260614d
%postun nginx
260614d
if [ $1 -eq 0 ]; then
260614d
  /usr/bin/systemctl reload nginx.service > /dev/null 2>&1 || :
260614d
  /usr/bin/systemctl reload php-fpm.service > /dev/null 2>&1 || :
260614d
fi
260614d
260614d
# the selinux policies only cover owncloud right now
260614d
# once this package is accepted pull request for selinux-policy to add
260614d
# these will be made
260614d
%post
260614d
semanage fcontext -a -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}/config.php' 2>/dev/null || :
260614d
semanage fcontext -a -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}' 2>/dev/null || :
260614d
semanage fcontext -a -t httpd_sys_rw_content_t '%{_localstatedir}/lib/%{name}(/.*)?' 2>/dev/null || :
260614d
restorecon -R %{_sysconfdir}/%{name} || :
260614d
restorecon -R %{_localstatedir}/lib/%{name} || :
260614d
260614d
%postun
260614d
if [ $1 -eq 0  ] ; then
260614d
semanage fcontext -d -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}/config.php' 2>/dev/null || :
260614d
semanage fcontext -d -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}' 2>/dev/null || :
260614d
semanage fcontext -d -t httpd_sys_rw_content_t '%{_localstatedir}/lib/%{name}(/.*)?' 2>/dev/null || :
260614d
fi
260614d
260614d
%files
ff74a2f
%doc AUTHORS README.fedora MIGRATION.fedora config/config.sample.php
260614d
%doc *_composer.json
260614d
260614d
%license *-LICENSE
260614d
260614d
%dir %attr(-,apache,apache) %{_sysconfdir}/%{name}
260614d
# contains sensitive data (dbpassword, passwordsalt)
260614d
%config(noreplace) %attr(0600,apache,apache) %{_sysconfdir}/%{name}/config.php
260614d
# need the symlink in confdir but it's not config
260614d
%{_sysconfdir}/%{name}/ca-bundle.crt
260614d
260614d
%{_datadir}/%{name}
260614d
%dir %attr(0755,apache,apache) %{_localstatedir}/lib/%{name}
260614d
# user data must not be world readable
260614d
%dir %attr(0750,apache,apache) %{_localstatedir}/lib/%{name}/data
260614d
%attr(-,apache,apache) %{_localstatedir}/lib/%{name}/apps
260614d
ff74a2f
%{_unitdir}/nextcloud-cron.service
ff74a2f
%{_unitdir}/nextcloud-cron.timer
260614d
260614d
%files httpd
260614d
%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf
260614d
%{_sysconfdir}/httpd/conf.d/%{name}-access.conf.avail
260614d
%{_sysconfdir}/httpd/conf.d/*.inc
260614d
260614d
%files nginx
260614d
%config(noreplace) %{_sysconfdir}/nginx/default.d/%{name}.conf
260614d
%config(noreplace) %{_sysconfdir}/nginx/conf.d/%{name}.conf
260614d
%config(noreplace) %{_sysconfdir}/php-fpm.d/%{name}.conf
260614d
260614d
%files mysql
260614d
%doc README.mysql
260614d
%files postgresql
260614d
%doc README.postgresql
260614d
%files sqlite
260614d
260614d
260614d
%changelog
373171f
* Sat Mar 25 2017 Shawn Iwinski <shawn.iwinski@gmail.com> - 10.0.4-2
373171f
- Add max versions to dependencies to limit each to 1 major version
373171f
- Update some dependencies to use php-composer(*) instead of package names
373171f
- Prepare for php-composer(google/apiclient) version 2 and new version 1 package
373171f
ff74a2f
* Tue Feb 28 2017 James Hogarth <james.hogarth@gmail.com> - 10.0.4-1
ff74a2f
- update to 10.0.4
ff74a2f
- Add migration from owncloud documentation
ff74a2f
- Add systemd timer for background jobs
ff74a2f
260614d
* Wed Feb 08 2017 James Hogarth <james.hogarth@gmail.com> - 10.0.3-1
260614d
- update to 10.0.3
260614d
260614d
* Thu Oct 06 2016 James Hogarth <james.hogarth@gmail.com> - 10.0.1-1
260614d
- update to 10.0.1
260614d
260614d
* Mon Aug 01 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.53-5
260614d
- Use lua to have a common srpm between epel7 and fedora
260614d
260614d
* Fri Jul 29 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.53-4
260614d
- Don't unbundle javascript on EPEL7 due to versioning issues
260614d
260614d
* Fri Jul 29 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.53-3
260614d
- Unbundle javascript libraries from core where possible
260614d
260614d
* Tue Jul 26 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.53-2
260614d
- Update the autoloader to use the path from the approved package
260614d
260614d
* Tue Jul 19 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.53-1
260614d
- New release 9.0.53
260614d
260614d
* Thu Jul 14 2016 James Hogarth <james.hogarth@gmail.com> - 9.0.52-1
260614d
- Initial nextcloud build