SHA256
1
0
forked from pool/gnunet
gnunet/gnunet.spec

429 lines
14 KiB
RPMSpec

#
# spec file for package gnunet
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2012 Pascal Bleser <pascal.bleser@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define gnurl gnurl-7.64.1
%define _USER_ gnunet
%define _GROUP_ gnunet
%define _OTHERGROUP_ gnunetdns
Name: gnunet
Version: 0.11.4
Release: 0
Summary: Security focused Peer-to-Peer Framework
License: GPL-3.0-only
Group: Productivity/Networking/File-Sharing
URL: http://gnunet.org
Source0: ftp://ftp.gnu.org/gnu/gnunet/%{name}-%{version}.tar.gz
Source1: ftp://ftp.gnu.org/gnu/gnunet/%{gnurl}.tar.gz
Source2: gnunet.service.in
Source3: gnunet.sysusers.in
Source4: gnunet.tmpfile.in
Patch0: gnunet-0.10.1_gnurl.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc
BuildRequires: glibc-devel
BuildRequires: glpk-devel >= 4.45
BuildRequires: guile-devel >= 2.0
BuildRequires: libadns-devel
BuildRequires: libesmtp-devel
BuildRequires: libgcrypt-devel >= 1.6
BuildRequires: libmysqlclient-devel >= 5.1
BuildRequires: libtool
BuildRequires: libunistring-devel
BuildRequires: make
BuildRequires: pkgconfig
BuildRequires: postgresql-devel >= 8.3
BuildRequires: pkgconfig(gnutls) >= 3.2.12
BuildRequires: pkgconfig(libcares)
BuildRequires: pkgconfig(libextractor) >= 0.6.1
BuildRequires: pkgconfig(libidn2)
BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(sqlite3) >= 3.8
Recommends: gnunet-plugins
Provides: gnunetd = %{version}
Provides: GNUnet = %{version}
Provides: GNUnetd = %{version}
%{?systemd_requires}
# SECTION Recommend
BuildRequires: pkgconfig(libpulse) >= 2.0
BuildRequires: pkgconfig(ogg) >= 1.3.0
BuildRequires: pkgconfig(openssl) >= 1.0
BuildRequires: pkgconfig(opus) >= 1.0.1
# /SECTION
%description
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
GNUnet is a part of the GNU project (http://www.gnu.org/).
%package devel
Summary: Security focused Peer-to-Peer Framework
Group: Development/Libraries/C and C++
Requires: lib%{name} = %{version}
Requires: libgcrypt-devel >= 1.6
Requires: pkgconfig(gnutls) >= 3.2.12
%description devel
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
This package contains header files and libraries needed to develop
application that use %{name}.
%package -n lib%{name}
Summary: GNUnet libraries
Group: System/Libraries
%description -n lib%{name}
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
This package contains lib%{name} shared library.
%package plugins
Summary: GNUnet plugins
Group: Productivity/Networking/File-Sharing
Requires: %{name} = %{version}
%description plugins
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
This package contains plugins for GNUnet services.
%package mysql
Summary: MySQL Storage Backend for %{name}
Group: Productivity/Networking/Other
Requires: %{name} = %{version}
%description mysql
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
%package postgresql
Summary: PostgreSQL Storage Backend for %{name}
Group: Productivity/Networking/Other
Requires: %{name} = %{version}
%description postgresql
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
%package sqlite
Summary: SQLite Storage Backend for %{name}
Group: Productivity/Networking/Other
Requires: %{name} = %{version}
%description sqlite
GNUnet is peer-to-peer framework focusing on security. The first and primary
application for GNUnet is anonymous file-sharing. GNUnet is currently developed
by a worldwide group of independent free software developers.
%lang_package
%prep
%setup -q -b1
%patch0 -p1
for _file in %{SOURCE2} %{SOURCE3} %{SOURCE4}; do
sed -e 's/@USER@/%{_USER_}/' \
-e 's/@GROUP@/%{_GROUP_}/' \
-e 's/@OTHERGROUP@/%{_OTHERGROUP_}/' \
-e 's|@LIBDIR@|%{_libdir}|' \
< $_file > ${_file##*/}
done
%build
# Build gnurl
pushd %{_builddir}/%{gnurl}
autoreconf -fiv
%configure \
--without-ssl \
--without-libpsl \
--without-librtmp \
--without-libmetalink \
--disable-ftp \
--disable-file \
--disable-ldap \
--disable-rtsp \
--disable-dict \
--disable-telnet \
--disable-dict \
--disable-telnet \
--disable-tftp \
--disable-pop3 \
--disable-imap \
--disable-smb \
--disable-smtp \
--disable-gopher \
--disable-ntlm-wb \
--enable-hidden-symbols \
--enable-threaded-resolver \
--enable-shared=no \
--with-random=/dev/urandom \
--with-ca-bundle=%{_sysconfdir}/ssl/certs/ca-certificates.crt
make %{?_smp_mflags}
popd
# Build gnunet
export CPPFLAGS="-I%{_builddir}/%{gnurl}/include"
export LIBS="-L%{_builddir}/%{gnurl}/lib/.libs/ -lgnurl"
autoreconf -fiv
%configure \
--with-gnunetdns=%{grpdns}
make %{?_smp_mflags} V=1 \
pkgcfgdir="%{_sysconfdir}/gnunet"
%install
make DESTDIR=%{buildroot} install \
pkgcfgdir="%{_sysconfdir}/gnunet"
# install systemd files
install -d %{buildroot}%{_sbindir}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
install -Dm 0644 %{name}.service.in %{buildroot}%{_unitdir}/%{name}.service
install -Dm 0644 %{name}.tmpfile.in %{buildroot}%{_tmpfilesdir}/%{name}.conf
install -Dm 0644 %{name}.sysusers.in %{buildroot}%{_sysusersdir}/%{name}.conf
# use a symbolic link instead of patch
ln -s %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config.d
# set a default configuration file
sed -re 's/^ +?# +?(DEFAULTCONFIG)/\1/' \
-i $(grep -rl 'DEFAULTCONFIG\ \?=' %{buildroot})
# create a default configuration
cat<<EOF > "%{buildroot}%{_sysconfdir}/%{name}.conf"
[path]
GNUNET_HOME = %{_localstatedir}/lib/%{name}
GNUNET_DATA_HOME = %{_localstatedir}/lib/%{name}/data/
GNUNET_RUNTIME_DIR = %{_localstatedir}/run/%{name}/
#DEFAULTCONFIG = %{_sysconfdir}/%{name}.conf
[arm]
SYSTEM_ONLY = YES
USER_ONLY = NO
EOF
# get rid of static libraries
find %{buildroot} -type f -name "*.la" -delete -print
rm -rf %{buildroot}%{_datadir}/doc/%{name}
%find_lang %{name}
%pre
%service_add_pre %{name}.service
%post
%service_add_post %{name}.service
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
%sysusers_create %{_sysusersdir}/%{name}.conf
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%preun
%service_del_preun %{name}.service
%postun
%service_del_postun %{name}.service
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%post -n lib%{name} -p /sbin/ldconfig
%postun -n lib%{name} -p /sbin/ldconfig
%files
%license COPYING
%doc AUTHORS ChangeLog README
%{_bindir}/gnunet-arm
%{_bindir}/gnunet-ats
%{_bindir}/gnunet-auto-share
%{_bindir}/gnunet-bcd
%{_bindir}/gnunet-bugreport
%{_bindir}/gnunet-cadet
%{_bindir}/gnunet-config
%{_bindir}/gnunet-consensus-profiler
%{_bindir}/gnunet-conversation
%{_bindir}/gnunet-conversation-test
%{_bindir}/gnunet-core
%{_bindir}/gnunet-datastore
%{_bindir}/gnunet-dht-get
%{_bindir}/gnunet-dht-monitor
%{_bindir}/gnunet-dht-put
%{_bindir}/gnunet-directory
%{_bindir}/gnunet-download
%{_bindir}/gnunet-ecc
%{_bindir}/gnunet-fs
%{_bindir}/gnunet-gns
%{_bindir}/gnunet-gns-proxy-setup-ca
%{_bindir}/gnunet-identity
%{_bindir}/gnunet-namecache
%{_bindir}/gnunet-namestore
%{_bindir}/gnunet-nat
%{_bindir}/gnunet-nat-auto
%{_bindir}/gnunet-nat-server
%{_bindir}/gnunet-nse
%{_bindir}/gnunet-peerinfo
%{_bindir}/gnunet-peerstore
%{_bindir}/gnunet-publish
%{_bindir}/gnunet-resolver
%{_bindir}/gnunet-revocation
%{_bindir}/gnunet-scalarproduct
%{_bindir}/gnunet-scrypt
%{_bindir}/gnunet-search
%{_bindir}/gnunet-secretsharing-profiler
%{_bindir}/gnunet-set-profiler
%{_bindir}/gnunet-statistics
%{_bindir}/gnunet-testbed-profiler
%{_bindir}/gnunet-testing
%{_bindir}/gnunet-transport
%{_bindir}/gnunet-transport-certificate-creation
%{_bindir}/gnunet-unindex
%{_bindir}/gnunet-uri
%{_bindir}/gnunet-vpn
%{_bindir}/gnunet-zoneimport
%{_datadir}/%{name}
# libexec dir
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/libexec
%{_libdir}/gnunet/libexec/gnunet-communicator-unix
%{_libdir}/gnunet/libexec/gnunet-daemon-exit
%{_libdir}/gnunet/libexec/gnunet-daemon-latency-logger
%{_libdir}/gnunet/libexec/gnunet-daemon-pt
%{_libdir}/gnunet/libexec/gnunet-daemon-regexprofiler
%{_libdir}/gnunet/libexec/gnunet-daemon-testbed-blacklist
%{_libdir}/gnunet/libexec/gnunet-daemon-testbed-underlay
%{_libdir}/gnunet/libexec/gnunet-daemon-topology
%{_libdir}/gnunet/libexec/gnunet-dns2gns
%{_libdir}/gnunet/libexec/gnunet-helper-audio-playback
%{_libdir}/gnunet/libexec/gnunet-helper-audio-record
%{_libdir}/gnunet/libexec/gnunet-helper-dns
%{_libdir}/gnunet/libexec/gnunet-helper-exit
%{_libdir}/gnunet/libexec/gnunet-helper-fs-publish
%{_libdir}/gnunet/libexec/gnunet-helper-nat-client
%{_libdir}/gnunet/libexec/gnunet-helper-nat-server
%{_libdir}/gnunet/libexec/gnunet-helper-testbed
%{_libdir}/gnunet/libexec/gnunet-helper-vpn
%{_libdir}/gnunet/libexec/gnunet-namestore-fcfsd
%{_libdir}/gnunet/libexec/gnunet-service-arm
%{_libdir}/gnunet/libexec/gnunet-service-ats
%{_libdir}/gnunet/libexec/gnunet-service-ats-new
%{_libdir}/gnunet/libexec/gnunet-service-cadet
%{_libdir}/gnunet/libexec/gnunet-service-consensus
%{_libdir}/gnunet/libexec/gnunet-service-conversation
%{_libdir}/gnunet/libexec/gnunet-service-core
%{_libdir}/gnunet/libexec/gnunet-service-datastore
%{_libdir}/gnunet/libexec/gnunet-service-dht
%{_libdir}/gnunet/libexec/gnunet-service-dns
%{_libdir}/gnunet/libexec/gnunet-service-evil-consensus
%{_libdir}/gnunet/libexec/gnunet-service-fs
%{_libdir}/gnunet/libexec/gnunet-service-gns
%{_libdir}/gnunet/libexec/gnunet-service-identity
%{_libdir}/gnunet/libexec/gnunet-service-namecache
%{_libdir}/gnunet/libexec/gnunet-service-namestore
%{_libdir}/gnunet/libexec/gnunet-service-nat
%{_libdir}/gnunet/libexec/gnunet-service-nat-auto
%{_libdir}/gnunet/libexec/gnunet-service-nse
%{_libdir}/gnunet/libexec/gnunet-service-peerinfo
%{_libdir}/gnunet/libexec/gnunet-service-peerstore
%{_libdir}/gnunet/libexec/gnunet-service-regex
%{_libdir}/gnunet/libexec/gnunet-service-resolver
%{_libdir}/gnunet/libexec/gnunet-service-revocation
%{_libdir}/gnunet/libexec/gnunet-service-scalarproduct-alice
%{_libdir}/gnunet/libexec/gnunet-service-scalarproduct-bob
%{_libdir}/gnunet/libexec/gnunet-service-scalarproduct-ecc-alice
%{_libdir}/gnunet/libexec/gnunet-service-scalarproduct-ecc-bob
%{_libdir}/gnunet/libexec/gnunet-service-secretsharing
%{_libdir}/gnunet/libexec/gnunet-service-set
%{_libdir}/gnunet/libexec/gnunet-service-statistics
%{_libdir}/gnunet/libexec/gnunet-service-testbed
%{_libdir}/gnunet/libexec/gnunet-service-testbed-logger
%{_libdir}/gnunet/libexec/gnunet-service-transport
%{_libdir}/gnunet/libexec/gnunet-service-vpn
%{_libdir}/gnunet/libexec/gnunet-service-zonemaster
%{_libdir}/gnunet/libexec/gnunet-service-zonemaster-monitor
%{_libdir}/gnunet/libexec/gnunet-timeout
%{_libdir}/gnunet/libgnunet_plugin_namestore_heap.so
%{_libdir}/gnunet/libgnunet_plugin_peerstore_sqlite.so
%dir %{_sysconfdir}/%{name}
%config %{_sysconfdir}/%{name}/*.conf
%config(noreplace) %{_sysconfdir}/%{name}.conf
%{_mandir}/man?/%{name}*.?%{ext_info}
%{_infodir}/gnunet*%{ext_info}
%{_infodir}/images/
%{_sbindir}/rc%{name}
%{_unitdir}/%{name}.service
%{_sysusersdir}/%{name}.conf
%{_tmpfilesdir}/%{name}.conf
%if 0%{?suse_version} < 1500
%dir %{_sysusersdir}
%endif
%files -n lib%{name}
%{_libdir}/lib%{name}*.so.*
%files plugins
%dir %{_libdir}/%{name}/nss
%{_libdir}/%{name}/nss/libnss_gns.so??
%{_libdir}/%{name}/nss/libnss_gns?.so??
%{_libdir}/%{name}/lib%{name}_plugin_ats*.so
%{_libdir}/%{name}/lib%{name}_plugin_block*.so
%{_libdir}/%{name}/lib%{name}_plugin_datacache_heap.so
%{_libdir}/%{name}/lib%{name}_plugin_datastore_heap.so
%{_libdir}/%{name}/lib%{name}_plugin_gnsrecord*.so
%{_libdir}/%{name}/lib%{name}_plugin_test.so
%{_libdir}/%{name}/lib%{name}_plugin_transport*.so
%files mysql
%{_libdir}/%{name}/lib%{name}_plugin_datastore_mysql.so
%files postgresql
%{_libdir}/%{name}/lib%{name}_plugin_datacache_postgres.so
%{_libdir}/%{name}/lib%{name}_plugin_datastore_postgres.so
%{_libdir}/%{name}/lib%{name}_plugin_namecache_postgres.so
%{_libdir}/%{name}/lib%{name}_plugin_namestore_postgres.so
%files sqlite
%{_libdir}/%{name}/lib%{name}_plugin_datacache_sqlite.so
%{_libdir}/%{name}/lib%{name}_plugin_datastore_sqlite.so
%{_libdir}/%{name}/lib%{name}_plugin_namecache_sqlite.so
%{_libdir}/%{name}/lib%{name}_plugin_namestore_sqlite.so
%files devel
%{_includedir}/%{name}
%{_libdir}/pkgconfig/%{name}*.pc
%{_libdir}/lib%{name}*.so
%files lang -f %{name}.lang
%changelog