Package pgadmin4: Specfile

%def_without   desktop

Name:          pgadmin4
Version:       8.3
Release:       alt2
Summary:       pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL
License:       MIT
Group:         Networking/WWW
Url:           https://pgadmin.org
Vcs:           https://github.com/pgadmin-org/pgadmin4.git

Source:        %name-%version.tar
Source1:       pgadmin4.sysconfig
Source2:       pgadmin4.logrotate
Source3:       pgadmin4.service
Source4:       config_local.py
Source5:       pgadmin4.conf
Patch:         %name-%EVR.patch
Autoprov:      yes,nopython
%if_with       desktop
ExclusiveArch: x86_64
%else_without  desktop
BuildArch:     noarch
%endif
%add_debuginfo_skiplist %_libdir/%name-desktop
%add_debuginfo_skiplist %_libexecdir/%name
%add_findreq_skiplist %_libexecdir/**/*
%add_findprov_skiplist %_libexecdir/**/*
%add_findreq_skiplist %_libdir/%name-desktop/**/*
%add_findprov_skiplist %_libdir/%name-desktop/**/*
BuildRequires(pre): rpm-build-python3
# required for python web-server pre start
#
# required for nw.js
BuildRequires: pkgconfig(cups)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(atk)
BuildRequires: pkgconfig(cairo) >= 1.6
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xdamage)
BuildRequires: pkgconfig(xkbcommon)

Requires:      nginx
Requires:      python3(flask)
Requires:      python3(flask_gravatar)
Requires:      python3(flask_login)
Requires:      python3(flask_mail)
Requires:      python3(flask_migrate)
Requires:      python3(flask_sqlalchemy)
Requires:      python3(flask_wtf)
Requires:      python3(flask_compress)
Requires:      python3(flask_paranoid)
Requires:      python3(flask_babel)
Requires:      python3(flask_security)
Requires:      python3(flask_socketio)
Requires:      python3(wtforms)
Requires:      python3(passlib)
Requires:      python3(pytz)
Requires:      python3(speaklater)
Requires:      python3(sqlparse)
Requires:      python3(psutil)
Requires:      python3(psycopg)
Requires:      python3(dateutil)
Requires:      python3(sqlalchemy)
Requires:      python3(bcrypt)
Requires:      python3(cryptography)
Requires:      python3(sshtunnel)
Requires:      python3(ldap3)
Requires:      python3(gssapi)
Requires:      python3(eventlet)
Requires:      python3(httpagentparser)
Requires:      python3(user_agents)
Requires:      python3(authlib)
Requires:      python3(pyotp)
Requires:      python3(qrcode)
Requires:      python3(PIL)
Requires:      python3(boto3)
Requires:      python3(botocore)
Requires:      python3(urllib3)
Requires:      python3(azure.mgmt.core)
Requires:      python3(azure.mgmt.rdbms)
Requires:      python3(azure.mgmt.resource)
Requires:      python3(azure.common)
Requires:      python3(azure.mgmt.subscription)
Requires:      python3(azure.identity)
Requires:      python3(azure.mgmt.resource)
Requires:      python3(azure.common)
Requires:      python3(azure.mgmt.subscription)
Requires:      python3(googleapiclient)
Requires:      python3(google_auth_oauthlib)
Requires:      python3(werkzeug)
Requires:      python3(keyring)
Requires:      python3(typer)
Requires:      postgresql-common

%description
pgAdmin is the most popular and feature rich Open Source administration and
development platform for PostgreSQL, the most advanced Open Source database in
the world.

pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
PostgreSQL (http://www.postgresql.org) database.

In the following documentation and examples, $PGADMIN4_SRC/ is used to denote
the top-level directory of a copy of the pgAdmin source tree, either from a
tarball or a git checkout.

pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap
for the client side processing and UI. On the server side, Flask is being
utilised.

Although developed using web technologies, pgAdmin 4 can be deployed either on a
web server using a browser, or standalone on a workstation. The runtime/
subdirectory contains an NWjs based runtime application intended to allow this,
which will execute the Python server and display the UI.


%if_with       desktop
%package       -n pgadmin4-desktop
Summary:       Desktop part of pgAdmin4
Group:         Networking/WWW

Requires:      pgadmin4

%description   -n pgadmin4-desktop
Desktop part of pgAdmin4.
%endif


%prep
%setup
%autopatch -p1

%build
#cd web
#yarn bundle

%install
mkdir -p -- \
	%buildroot/%_libexecdir/%name \
	%buildroot/%_sysconfdir/%name \
	%buildroot/%_bindir/ \
	%buildroot/%_logdir/%name \
	%buildroot/%_localstatedir/%name \
	%buildroot/%_cachedir/%name/azure \
	%buildroot/%_cachedir/%name/kerberos \
	%buildroot/%_cachedir/%name/sessions \
	%buildroot/%_spooldir/%name/storage \
	%buildroot/%_sysconfdir/sysconfig \

cp -rp web/* %buildroot%_libexecdir/%name/
install -Dm0644 %SOURCE1 %buildroot%_sysconfdir/sysconfig/%name
install -Dm0644 %SOURCE2 %buildroot%_logrotatedir/%name
install -Dm0644 %SOURCE3 %buildroot%_unitdir/%name.service
install -Dm0644 %SOURCE4 %buildroot%_sysconfdir/%name/settings.py
install -Dm0644 %SOURCE5 %buildroot%_sysconfdir/nginx/sites-available.d/%name.conf
ln -svr %buildroot%_sysconfdir/%name/settings.py %buildroot%_libexecdir/%name/config_local.py
rm -rf %buildroot%_libexecdir/%name/node_modules

%if_with       desktop
mkdir -p %buildroot/%_libdir/%name-desktop
cp -rp runtime/* %buildroot%_libdir/%name-desktop/
ln -svr %buildroot%_libdir/%name-desktop/node_modules/nw/nwjs/nw %buildroot%_bindir/%name-desktop
%endif

%pre
# Add the "pgadmin" user and group
getent group pgadmin >/dev/null || %_sbindir/groupadd -r pgadmin
getent passwd _pgadmin >/dev/null || \
   %_sbindir/useradd -r -g pgadmin -G pgadmin -M -d %_localstatedir/%name -s /bin/bash -c "PG Admin 4" _pgadmin
usermod -a -G pgadmin _nginx # add _nginx into pgadmin group

%preun
%preun_service %name

%post
%post_service %name

ln -sf %_sysconfdir/nginx/sites-available.d/%name.conf %_sysconfdir/nginx/sites-enabled.d/ 2>/dev/null


%files
%doc README*
%_libexecdir/%name
%_unitdir/%name.service
%config(noreplace) %_sysconfdir/%name
%config(noreplace) %_logrotatedir/%name
%config(noreplace) %_sysconfdir/nginx/sites-available.d/%name.conf
%attr(770,_pgadmin,pgadmin) %_sysconfdir/sysconfig/%name
%dir %attr(770,_pgadmin,pgadmin) %_cachedir/%name
%dir %attr(770,_pgadmin,pgadmin) %_cachedir/%name/azure
%dir %attr(770,_pgadmin,pgadmin) %_cachedir/%name/kerberos
%dir %attr(770,_pgadmin,pgadmin) %_cachedir/%name/sessions
%dir %attr(770,_pgadmin,pgadmin) %_spooldir/%name
%dir %attr(770,_pgadmin,pgadmin) %_spooldir/%name/storage
%dir %attr(770,_pgadmin,pgadmin) %_localstatedir/%name
%dir %attr(770,_pgadmin,pgadmin) %_logdir/%name

%if_with       desktop
%files         -n pgadmin4-desktop
%doc README*
%_libdir/%name-desktop
%_bindir/%name-desktop
%endif


%changelog
* Fri Mar 22 2024 Pavel Vasenkov <pav@altlinux.org> 8.3-alt2
- Fixed packages dependencies (Closes: #49747)

* Fri Mar 01 2024 Pavel Skrylev <majioa@altlinux.org> 8.3-alt1
- First build v8.3 to Sisyphus