blob: 3882cc387ef6107b69c01d70dff24585f9ee949e [file] [log] [blame]
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#
%define name couchdb
%define prefix /opt/%{name}
Summary: RESTful document oriented database
License: Apache License v2.0
Name: %{name}
Version: %{_version}
Release: 1%{?dist}
Source: https://www.apache.org/dist/couchdb/source/${version}/apache-couchdb-%{version}.tar.gz
Source1: %{name}.service
Source2: %{name}.init
Source3: 10-filelog.ini
Source5: %{name}.logrotate
Prefix: %{prefix}
Group: Applications/Databases
URL: https://couchdb.apache.org/
Vendor: The Apache Software Foundation
BuildArch: x86_64
ExclusiveArch: x86_64
Exclusiveos: linux
Packager: CouchDB Developers <dev@couchdb.apache.org>
BuildRequires: esl-erlang
BuildRequires: gcc
BuildRequires: git
BuildRequires: help2man
#BuildRequires: couch-js-devel = 1:1.8.5
BuildRequires: libcurl-devel
BuildRequires: libicu-devel
BuildRequires: nodejs >= 6.10.1
BuildRequires: python >= 2.6
#BuildRequires: python-pip
#BuildRequires: python-sphinx >= 1.5.3
Requires(pre): shadow-utils
Requires(post): esl-erlang = 0:19.3.6
Requires(post): curl
Requires(post): couch-js = 1:1.8.5
Requires(post): libicu >= 4.2.1
Requires(post): procps
%if 0%{?fedora} || 0%{?rhel} >= 7
BuildRequires: xfsprogs-devel
%{?systemd_requires}
BuildRequires: systemd
%else
Requires(post): chkconfig
Requires(preun): chkconfig, initscripts
Requires(postun): initscripts
%endif
%description
Apache CouchDB is a distributed, fault-tolerant and schema-free
document-oriented database accessible via a RESTful HTTP/JSON API. Among other
features, it provides robust, incremental replication with bi-directional
conflict detection and resolution, and is queryable and indexable using a
table-oriented view engine with JavaScript acting as the default view
definition language.
.
CouchDB is written in Erlang, but can be easily accessed from any environment
that provides means to make HTTP requests. There are a multitude of third-party
client libraries that make this even easier for a variety of programming
languages and environments.
# NOTE: Stripping binaries causes issues so we skip it.
%define __os_install_post %{nil}
%build
./configure --disable-docs --prefix=/opt/couchdb
%{__make}
%clean
%{__rm} -rf %{buildroot}
%pre
if ! /usr/bin/getent passwd couchdb > /dev/null; then /usr/sbin/adduser \
--system --home /opt/couchdb --no-create-home \
--shell /bin/bash --comment "CouchDB Administrator" \
--user-group couchdb; fi
%install
%{__make} install DESTDIR=%{buildroot}
%if 0%{?fedora} || 0%{?rhel} >= 7
%{__install} -Dp -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
%else
%{__install} -Dp -m0755 %{SOURCE2} %{buildroot}%{_initrddir}/%{name}
%endif
%post
%{__chown} -R couchdb:couchdb /opt/%{name}
%{__chmod} a+x /opt/%{name}/bin/*
%if 0%{?fedora} || 0%{?rhel} >= 7
%systemd_post %{name}.service
%else
/sbin/chkconfig --add %{name} || :
%endif
%preun
%if 0%{?fedora} || 0%{?rhel} >= 7
%systemd_preun %{name}.service
%else
# stop couchdb only when uninstalling
if [ $1 -eq 0 ]; then
/sbin/service %{name} stop >/dev/null 2>&1 || :
/sbin/chkconfig --del %{name} || :
fi
killall -u couchdb epmd || :
%endif
%postun
%if 0%{?fedora} || 0%{?rhel} >= 7
%systemd_postun_with_restart %{name}.service
%else
# restart couchdb only when upgrading
if [ $1 -eq 1 ]; then
/sbin/service %{name} condrestart >/dev/null 2>&1 || :
fi
%endif
%files
%attr(0755, %{name}, %{name}) /opt/couchdb
%config(noreplace) /opt/couchdb/etc/couchdb/local.ini
%config /opt/couchdb/etc/logrotate.d/%{name}
%if 0%{?fedora} || 0%{?rhel} >= 7
%{_unitdir}/%{name}.service
%else
%{_initrddir}/%{name}
%endif
%changelog
* Fri Aug 10 2018 CouchDB Developers <dev@couchdb.apache.org> 1.7.2-1
- New upstream version
- New sysvinit and systemd service files