File dokuwiki.spec of Package dokuwiki

#
# Spec File for Package dokuwiki
#
%define         dokuwiki_config /etc/dokuwiki
%define         dokuwiki_data   /srv/www/dokuwiki
%define         apache_config /etc/apache2/conf.d
%define         dokuwiki_version 2025-05-14a
%if ! %{defined _fillupdir}
%define         _fillupdir /var/adm/fillup-templates
%endif

Summary:        A Wiki written in PHP to work without a database
Summary(de):    Ein in PHP geschriebenes Wiki, das keine Datenbank benutzt
Name:           dokuwiki
Version:        2025.05.14a
Release:        2%{?dist}
License:        GPL-2.0
Group:          Productivity/Publishing/Other
URL:            http://www.dokuwiki.org/
BuildRequires:  sysconfig filesystem fdupes sed
# /etc/cron.d is owned by cron
BuildRequires:  cron
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
BuildRequires:  php >= 8
%else
Requires:       php >= 7.2.0
%endif
Requires:       cron
Requires:       mod_php_any
Recommends:     php-gd
PreReq:         coreutils
PreReq:         apache2
BuildArch:      noarch
Source:         %{name}-%{version}.tar.gz
Source1:        dokuwiki_cleanup.sh
Source2:        sysconfig.dokuwiki
Source3:        apache2.conf.dokuwiki
Buildroot:      %{_tmppath}/%{name}-buildroot

%description
DokuWiki is a standards compliant, simple to use Wiki, mainly aimed at creating 
documentation of any kind. It is targeted at developer teams, workgroups and small 
companies. It has a simple but powerful syntax which makes sure the datafiles 
remain readable outside the Wiki and eases the creation of structured texts. 
All data is stored in plain text files - no database is required.

Read the DokuWiki Manual to unleash the full power of DokuWiki.

Author:
-------
    Andreas Gohr

%description -l de
DokuWiki ist ein einfach zu benutzendes Wiki, mit dem vor allem Dokumentation jeder Art
erstellt werden soll, und dessen Ausgabeformat den Standards entspricht. Zielguppe sind 
Entwicklerteams, Arbeitsgruppen und kleine Firmen aller Art. DokuWiki hat eine einfache, 
aber mächtige Syntax und erleichtert das Erstellen strukturierter Texte. Alle Daten 
werden in reinen Textdateien abgelegt - eine Datenbank ist nicht erforderlich.

Lies das Handbuch von DokuWiki, um seine geballte Kraft freizusetzen.

Autor:
--------
    Andreas Gohr

%package lang
Summary:        Dokuwiki language pack
Group:          Productivity/Publishing/Other

%description lang
%{summary}. Other Languages than english and german

%prep
%setup -n %{name}-%{dokuwiki_version}

%build

%install
install -d %{buildroot}/%{apache_config}
install -d %{buildroot}/%{dokuwiki_config}
install -d %{buildroot}/%{dokuwiki_data}
cp -a conf/* %{buildroot}/%{dokuwiki_config}/
cp -a *.php %{buildroot}/%{dokuwiki_data}/
for dir in bin data inc lib vendor; do
   cp -a $dir %{buildroot}/%{dokuwiki_data}/
done

ln -s %{dokuwiki_config} %{buildroot}/%{dokuwiki_data}/conf
find %{buildroot}/%{dokuwiki_data}/ -type f -executable | xargs chmod -x
chmod +x %{buildroot}/%{dokuwiki_data}/bin/*php
chmod +x %{buildroot}/%{dokuwiki_data}/lib/scripts/jquery/update.sh

install -Dm0644 %{SOURCE3} %{buildroot}/%{apache_config}/%{name}.conf

for SUBDIR in $(find "%{buildroot}%{dokuwiki_data}/" -name '\.htacc*'); do
   RELDIR=${SUBDIR#%{buildroot}}
   RELDIR=${RELDIR%/.htacc*}
   echo "<Directory \"$RELDIR\">"   >> "%{buildroot}/%{apache_config}/%{name}.conf"
   echo "    ## no access to the $(basename $RELDIR) directory" \
                                    >> "%{buildroot}/%{apache_config}/%{name}.conf"
   cat  "$SUBDIR" | sed 's/^/    /' | sed 's/mod_authz_host/mod_authz_core.c/' >> "%{buildroot}/%{apache_config}/%{name}.conf"
   echo "</Directory>"              >> "%{buildroot}/%{apache_config}/%{name}.conf"
   echo ""                          >> "%{buildroot}/%{apache_config}/%{name}.conf"
   rm "$SUBDIR"
done

install -Dm0600 %{SOURCE2} %{buildroot}/%{_fillupdir}/sysconfig.%{name}
install -d %{buildroot}/%{_sysconfdir}/cron.daily
install -m0750 %{SOURCE1} %{buildroot}/%{_sysconfdir}/cron.daily/%{name}_cleanup

# replace env
sed -i 's#/usr/bin/env php#/usr/bin/php#' %{buildroot}/%{dokuwiki_data}/bin/*.php
sed -i 's#/usr/bin/env sh#/usr/bin/sh#' %{buildroot}/%{dokuwiki_data}/lib/scripts/jquery/update.sh

# remove hidden files
rm %{buildroot}/%{dokuwiki_data}/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
rm %{buildroot}/%{dokuwiki_data}/vendor/splitbrain/lesserphp/.phpcs.xml

# create hardlinks for double files
%fdupes %{buildroot}/%{dokuwiki_data}/

# files in lib/plugins shouldn't be hardlinks:
rm %{buildroot}/%{dokuwiki_data}/lib/plugins/acl/pix/ns.png
rm %{buildroot}/%{dokuwiki_data}/lib/plugins/acl/pix/page.png
rm %{buildroot}/%{dokuwiki_data}/lib/plugins/config/images/danger.png
rm %{buildroot}/%{dokuwiki_data}/lib/plugins/index.html

ln -s %{dokuwiki_data}/lib/images/ns.png %{buildroot}/%{dokuwiki_data}/lib/plugins/acl/pix/ns.png
ln -s %{dokuwiki_data}/lib/images/page.png %{buildroot}/%{dokuwiki_data}/lib/plugins/acl/pix/page.png
ln -s %{dokuwiki_data}/lib/images/error.png %{buildroot}/%{dokuwiki_data}/lib/plugins/config/images/danger.png
ln -s %{dokuwiki_data}/lib/scripts/index.html %{buildroot}/%{dokuwiki_data}/lib/plugins/index.html

# cleanup
rm -rf %{buildroot}/%{dokuwiki_data}/lib/plugins/extension/_test/
rm -f %{buildroot}/%{dokuwiki_data}/deleted.files
find %{buildroot}/%{dokuwiki_data}/ \( -name .gitignore -o -name .gitattributes -o -name .travis.yml -o -name .editorconfig \) -delete

%post
%{fillup_only %{name}}

%files
%defattr(-, root, root, -)
%doc README VERSION COPYING
%config %{_sysconfdir}/cron.daily/%{name}_cleanup
%attr(-, wwwrun, www) %dir %config(noreplace) %{dokuwiki_config}
%config %{dokuwiki_config}/*
%dir %{dokuwiki_data}
%{dokuwiki_data}/*.php
%{dokuwiki_data}/bin
%{dokuwiki_data}/conf
%{dokuwiki_data}/vendor
%attr(-, wwwrun, www) %{dokuwiki_data}/data
%dir %{dokuwiki_data}/inc
%{dokuwiki_data}/inc/*.php
%{dokuwiki_data}/inc/*.dist
%{dokuwiki_data}/inc/Action
%{dokuwiki_data}/inc/Cache
%{dokuwiki_data}/inc/ChangeLog
%{dokuwiki_data}/inc/Debug
%{dokuwiki_data}/inc/Extension
%{dokuwiki_data}/inc/Exception
%{dokuwiki_data}/inc/File
%{dokuwiki_data}/inc/Form
%{dokuwiki_data}/inc/HTTP
%{dokuwiki_data}/inc/Input
%{dokuwiki_data}/inc/Menu
%{dokuwiki_data}/inc/parser
%{dokuwiki_data}/inc/Parsing
%{dokuwiki_data}/inc/Remote
%{dokuwiki_data}/inc/Search
%{dokuwiki_data}/inc/Sitemap
%{dokuwiki_data}/inc/Subscriptions
%{dokuwiki_data}/inc/TreeBuilder
%{dokuwiki_data}/inc/Utf8
%{dokuwiki_data}/inc/Ui
%dir %{dokuwiki_data}/inc/lang/
%{dokuwiki_data}/inc/lang/en
%{dokuwiki_data}/inc/lang/de
%dir %{dokuwiki_data}/inc/Feed
%{dokuwiki_data}/inc/Feed/*.php
%dir %{dokuwiki_data}/lib
%{dokuwiki_data}/lib/exe
%{dokuwiki_data}/lib/images
%{dokuwiki_data}/lib/index.html
%attr(-, wwwrun, www) %{dokuwiki_data}/lib/plugins
%{dokuwiki_data}/lib/scripts
%{dokuwiki_data}/lib/styles
%attr(-, wwwrun, www) %{dokuwiki_data}/lib/tpl

%{_fillupdir}/sysconfig.%{name}
%attr (644, root, root)  %config %{apache_config}/%{name}.conf

%files lang
%defattr(-, root, root, -)
%{dokuwiki_data}/inc/lang/af
%{dokuwiki_data}/inc/lang/ar
%{dokuwiki_data}/inc/lang/az
%{dokuwiki_data}/inc/lang/be
%{dokuwiki_data}/inc/lang/bg
%{dokuwiki_data}/inc/lang/bn
%{dokuwiki_data}/inc/lang/br
%{dokuwiki_data}/inc/lang/ca
%{dokuwiki_data}/inc/lang/ca-valencia
%{dokuwiki_data}/inc/lang/ckb
%{dokuwiki_data}/inc/lang/cs
%{dokuwiki_data}/inc/lang/cy
%{dokuwiki_data}/inc/lang/da
%{dokuwiki_data}/inc/lang/de-informal
%{dokuwiki_data}/inc/lang/el
%{dokuwiki_data}/inc/lang/eo
%{dokuwiki_data}/inc/lang/es
%{dokuwiki_data}/inc/lang/et
%{dokuwiki_data}/inc/lang/eu
%{dokuwiki_data}/inc/lang/fa
%{dokuwiki_data}/inc/lang/fi
%{dokuwiki_data}/inc/lang/fo
%{dokuwiki_data}/inc/lang/fr
%{dokuwiki_data}/inc/lang/fy
%{dokuwiki_data}/inc/lang/gl
%{dokuwiki_data}/inc/lang/he
%{dokuwiki_data}/inc/lang/hi
%{dokuwiki_data}/inc/lang/hr
%{dokuwiki_data}/inc/lang/hu
%{dokuwiki_data}/inc/lang/hu-formal
%{dokuwiki_data}/inc/lang/hy
%{dokuwiki_data}/inc/lang/ia
%{dokuwiki_data}/inc/lang/id
%{dokuwiki_data}/inc/lang/id-ni
%{dokuwiki_data}/inc/lang/is
%{dokuwiki_data}/inc/lang/it
%{dokuwiki_data}/inc/lang/ja
%{dokuwiki_data}/inc/lang/ka
%{dokuwiki_data}/inc/lang/kk
%{dokuwiki_data}/inc/lang/km
%{dokuwiki_data}/inc/lang/kn
%{dokuwiki_data}/inc/lang/ko
%{dokuwiki_data}/inc/lang/ku
%{dokuwiki_data}/inc/lang/la
%{dokuwiki_data}/inc/lang/lb
%{dokuwiki_data}/inc/lang/lt
%{dokuwiki_data}/inc/lang/lv
%{dokuwiki_data}/inc/lang/mg
%{dokuwiki_data}/inc/lang/mk
%{dokuwiki_data}/inc/lang/ml
%{dokuwiki_data}/inc/lang/mr
%{dokuwiki_data}/inc/lang/ms
%{dokuwiki_data}/inc/lang/nan
%{dokuwiki_data}/inc/lang/ne
%{dokuwiki_data}/inc/lang/nl
%{dokuwiki_data}/inc/lang/no
%{dokuwiki_data}/inc/lang/oc
%{dokuwiki_data}/inc/lang/pl
%{dokuwiki_data}/inc/lang/pt
%{dokuwiki_data}/inc/lang/pt-br
%{dokuwiki_data}/inc/lang/ro
%{dokuwiki_data}/inc/lang/ru
%{dokuwiki_data}/inc/lang/si
%{dokuwiki_data}/inc/lang/sk
%{dokuwiki_data}/inc/lang/sl
%{dokuwiki_data}/inc/lang/sq
%{dokuwiki_data}/inc/lang/sr
%{dokuwiki_data}/inc/lang/sv
%{dokuwiki_data}/inc/lang/ta
%{dokuwiki_data}/inc/lang/th
%{dokuwiki_data}/inc/lang/tr
%{dokuwiki_data}/inc/lang/uk
%{dokuwiki_data}/inc/lang/uz
%{dokuwiki_data}/inc/lang/vi
%{dokuwiki_data}/inc/lang/zh
%{dokuwiki_data}/inc/lang/zh-tw
openSUSE Build Service is sponsored by