Modifications for openSUSE support (#36)
* Modifications for openSUSE support
diff --git a/Makefile b/Makefile
index 0e76d8e..f4f425b 100644
--- a/Makefile
+++ b/Makefile
@@ -69,6 +69,8 @@
centos-7: centos7
centos7: make-rpmbuild centos
+openSUSE: centos7
+
# Erlang is built from source on ARMv8
# These packages are not installed, but the files are present
drop-deb-deps-for-source-arch:
diff --git a/js/rpm/SPECS/js.spec b/js/rpm/SPECS/js.spec
index 5e0d1b1..944fa11 100644
--- a/js/rpm/SPECS/js.spec
+++ b/js/rpm/SPECS/js.spec
@@ -34,8 +34,13 @@
Obsoletes: js
Conflicts: js <= 1.8.5
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+%if 0%{?suse_version}
+Buildrequires: mozilla-nspr-devel >= 4.7
+BuildRequires: python3
+%else
Buildrequires: nspr-devel >= 4.7
BuildRequires: python
+%endif
BuildRequires: perl
BuildRequires: zip
BuildRequires: ncurses-devel
@@ -54,7 +59,11 @@
Summary: Header files, libraries and development documentation for %{name}
Group: Development/Libraries
Requires: %{name} = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Requires: pkg-config
+%else
Requires: pkgconfig
+%endif
Requires: ncurses-devel
Provides: libjs-devel = %{version}-%{release}
Provides: js-devel = %{version}-%{release}
@@ -109,13 +118,16 @@
Name: libjs
Description: JS library
+%if 0%{?suse_version}
+Requires: mozilla-nspr >= 4.7
+%else
Requires: nspr >= 4.7
+%endif
Version: %{version}
Libs: -L${libdir} -ljs
Cflags: -DXP_UNIX=1 -DJS_THREADSAFE=1 -I${includedir}/js
EOF
-
%build
cd js/src
%configure \
diff --git a/rpm/SPECS/couchdb.spec b/rpm/SPECS/couchdb.spec
index 3fb128c..64e6be1 100644
--- a/rpm/SPECS/couchdb.spec
+++ b/rpm/SPECS/couchdb.spec
@@ -33,29 +33,46 @@
Exclusiveos: linux
Packager: CouchDB Developers <dev@couchdb.apache.org>
+%if 0%{?suse_version}
+BuildRequires: erlang
+BuildRequires: erlang-rebar
+BuildRequires: erlang-reltool
+BuildRequires: erlang-epmd
+BuildRequires: gcc-c++
+BuildRequires: pkg-config
+Requires(pre): shadow
+BuildRequires: python3
+Requires(post): python3-progressbar
+Requires(post): python3-requests
+%else
BuildRequires: esl-erlang
BuildRequires: gcc
+Requires(pre): shadow-utils
+BuildRequires: python >= 2.6
+#BuildRequires: python-pip
+#BuildRequires: python-sphinx >= 1.5.3
+Requires(post): python-progressbar
+Requires(post): python-requests
+%endif
+
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): curl
Requires(post): couch-js = 1:1.8.5
Requires(post): libicu >= 4.2.1
Requires(post): procps
-Requires(post): python-progressbar
-Requires(post): python-requests
-%if 0%{?fedora} || 0%{?rhel} >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version}
+%if 0%{?suse_version}
+BuildRequires: systemd-rpm-macros
+%else
BuildRequires: xfsprogs-devel
+%endif
%{?systemd_requires}
BuildRequires: systemd
%else
@@ -71,7 +88,7 @@
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
@@ -88,26 +105,41 @@
%{__rm} -rf %{buildroot}
%pre
+%if 0%{?suse_version}
+if ! /usr/bin/getent passwd couchdb > /dev/null; then /usr/sbin/useradd \
+ --system --home-dir /opt/couchdb --no-create-home \
+ --shell /bin/bash --comment "CouchDB Administrator" \
+ --user-group couchdb; fi
+%else
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
+%endif
%install
%{__install} -d -m0755 %{buildroot}/opt
%{__cp} -r rel/couchdb %{buildroot}/opt
%{__install} -d -m0750 %{buildroot}/var/log/%{name}
+%if 0%{?suse_version}
+%{__install} -d -m0750 %{buildroot}%{_localstatedir}/lib/%{name}
+%else
%{__install} -d -m0750 %{buildroot}%{_sharedstatedir}/%{name}
+%endif
%{__install} -Dp -m0644 %{SOURCE3} %{buildroot}/opt/%{name}/etc/default.d/10-filelog.ini
%{__install} -Dp -m0644 %{SOURCE5} %{buildroot}/etc/logrotate.d/%{name}
/bin/find %{buildroot}/opt/%{name} -name *.ini -exec %{__chmod} 0640 {} \;
-%if 0%{?fedora} || 0%{?rhel} >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version}
%{__install} -Dp -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
%else
%{__install} -Dp -m0755 %{SOURCE2} %{buildroot}%{_initrddir}/%{name}
%endif
+%if 0%{?suse_version}
+%{__ln_s} -f -T %{_localstatedir}/lib/%{name} %{buildroot}/opt/%{name}/data
+%else
%{__ln_s} -f -T %{_sharedstatedir}/%{name} %{buildroot}/opt/%{name}/data
+%endif
%{__ln_s} -f -T /var/log/%{name} %{buildroot}/opt/%{name}/var/log/%{name}
%post
@@ -120,7 +152,7 @@
%endif
%preun
-%if 0%{?fedora} || 0%{?rhel} >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version}
%systemd_preun %{name}.service
%else
# stop couchdb only when uninstalling
@@ -132,7 +164,7 @@
%endif
%postun
-%if 0%{?fedora} || 0%{?rhel} >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version}
%systemd_postun_with_restart %{name}.service
%else
# restart couchdb only when upgrading
@@ -143,11 +175,15 @@
%files
%attr(0755, %{name}, %{name}) /opt/couchdb
+%if 0%{?suse_version}
+%attr(0755, %{name}, %{name}) %dir %{_localstatedir}/lib/%{name}
+%else
%attr(0755, %{name}, %{name}) %dir %{_sharedstatedir}/%{name}
+%endif
%attr(0755, %{name}, %{name}) %dir /var/log/%{name}
%config(noreplace) /opt/couchdb/etc/local.ini
%config /etc/logrotate.d/%{name}
-%if 0%{?fedora} || 0%{?rhel} >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version}
%{_unitdir}/%{name}.service
%else
%{_initrddir}/%{name}