2022-04-24 11:17:42 +00:00
|
|
|
{ lib
|
2021-07-02 12:22:12 +00:00
|
|
|
, python3
|
|
|
|
, fetchurl
|
|
|
|
, zlib
|
|
|
|
, mkYarnModules
|
|
|
|
, sphinx
|
|
|
|
, nixosTests
|
2022-04-24 11:17:42 +00:00
|
|
|
, pkgs
|
2021-07-02 12:22:12 +00:00
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
pname = "pgadmin";
|
2022-08-06 12:59:09 +00:00
|
|
|
version = "6.12";
|
2021-07-02 12:22:12 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
url = "https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v${version}/source/pgadmin4-${version}.tar.gz";
|
2022-08-06 12:59:09 +00:00
|
|
|
sha256 = "sha256-cO7GdZDfJ0pq1jpMyrVy0UM49WhrKOIJOmMJauSkbyo=";
|
2021-07-02 12:22:12 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
yarnDeps = mkYarnModules {
|
|
|
|
pname = "${pname}-yarn-deps";
|
|
|
|
inherit version;
|
|
|
|
packageJSON = ./package.json;
|
|
|
|
yarnLock = ./yarn.lock;
|
|
|
|
yarnNix = ./yarn.nix;
|
|
|
|
};
|
2022-04-19 19:28:33 +00:00
|
|
|
|
2022-04-24 11:17:42 +00:00
|
|
|
# move buildDeps here to easily pass to test suite
|
|
|
|
buildDeps = with pythonPackages; [
|
|
|
|
flask
|
|
|
|
flask-gravatar
|
|
|
|
flask_login
|
|
|
|
flask_mail
|
|
|
|
flask_migrate
|
2022-07-20 15:33:12 +00:00
|
|
|
flask-sqlalchemy
|
2022-05-24 04:09:51 +00:00
|
|
|
flask-wtf
|
2022-04-24 11:17:42 +00:00
|
|
|
flask-compress
|
|
|
|
passlib
|
|
|
|
pytz
|
|
|
|
simplejson
|
|
|
|
six
|
|
|
|
sqlparse
|
|
|
|
wtforms
|
|
|
|
flask-paranoid
|
|
|
|
psutil
|
|
|
|
psycopg2
|
|
|
|
python-dateutil
|
|
|
|
sqlalchemy
|
|
|
|
itsdangerous
|
|
|
|
flask-security-too
|
|
|
|
bcrypt
|
|
|
|
cryptography
|
|
|
|
sshtunnel
|
|
|
|
ldap3
|
|
|
|
flask-babelex
|
|
|
|
flask-babel
|
|
|
|
gssapi
|
|
|
|
flask-socketio
|
|
|
|
eventlet
|
|
|
|
httpagentparser
|
|
|
|
user-agents
|
|
|
|
wheel
|
|
|
|
authlib
|
|
|
|
qrcode
|
|
|
|
pillow
|
|
|
|
pyotp
|
|
|
|
botocore
|
|
|
|
boto3
|
2022-07-02 14:27:23 +00:00
|
|
|
azure-mgmt-subscription
|
|
|
|
azure-mgmt-rdbms
|
|
|
|
azure-mgmt-resource
|
|
|
|
azure-identity
|
2022-04-24 11:17:42 +00:00
|
|
|
];
|
|
|
|
|
2022-08-06 12:59:09 +00:00
|
|
|
# override necessary on pgadmin4 6.12
|
2022-04-19 19:28:33 +00:00
|
|
|
pythonPackages = python3.pkgs.overrideScope (final: prev: rec {
|
2022-04-19 22:37:08 +00:00
|
|
|
werkzeug = prev.werkzeug.overridePythonAttrs (oldAttrs: rec {
|
|
|
|
version = "2.0.3";
|
|
|
|
src = oldAttrs.src.override {
|
|
|
|
inherit version;
|
|
|
|
sha256 = "sha256-uGP4/wV8UiFktgZ8niiwQRYbS+W6TQ2s7qpQoWOCLTw=";
|
|
|
|
};
|
|
|
|
});
|
2022-04-19 19:28:33 +00:00
|
|
|
});
|
|
|
|
|
2021-07-02 12:22:12 +00:00
|
|
|
in
|
|
|
|
|
2022-04-19 19:28:33 +00:00
|
|
|
pythonPackages.buildPythonApplication rec {
|
2021-07-02 12:22:12 +00:00
|
|
|
inherit pname version src;
|
|
|
|
|
|
|
|
# from Dockerfile
|
|
|
|
CPPFLAGS = "-DPNG_ARM_NEON_OPT=0";
|
|
|
|
|
|
|
|
format = "setuptools";
|
|
|
|
|
2022-02-23 13:37:17 +00:00
|
|
|
patches = [
|
|
|
|
# Expose setup.py for later use
|
|
|
|
./expose-setup.py.patch
|
|
|
|
];
|
|
|
|
|
2021-07-02 12:22:12 +00:00
|
|
|
postPatch = ''
|
|
|
|
# patching Makefile, so it doesn't try to build sphinx documentation here
|
|
|
|
# (will do so later)
|
2022-06-02 10:20:51 +00:00
|
|
|
substituteInPlace Makefile \
|
|
|
|
--replace 'LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx html' "true"
|
|
|
|
|
2021-07-02 12:22:12 +00:00
|
|
|
# fix document which refers a non-existing document and fails
|
2022-06-02 10:20:51 +00:00
|
|
|
substituteInPlace docs/en_US/contributions.rst \
|
|
|
|
--replace "code_snippets" ""
|
2021-07-02 12:22:12 +00:00
|
|
|
patchShebangs .
|
2022-06-02 10:20:51 +00:00
|
|
|
|
2021-07-02 12:22:12 +00:00
|
|
|
# relax dependencies
|
2022-07-30 05:47:29 +00:00
|
|
|
sed 's|==|>=|g' -i requirements.txt
|
2021-07-02 12:22:12 +00:00
|
|
|
# don't use Server Mode (can be overridden later)
|
|
|
|
substituteInPlace pkg/pip/setup_pip.py \
|
|
|
|
--replace "req = req.replace('psycopg2', 'psycopg2-binary')" "req = req" \
|
|
|
|
--replace "builtins.SERVER_MODE = None" "builtins.SERVER_MODE = False"
|
|
|
|
'';
|
|
|
|
|
|
|
|
preBuild = ''
|
|
|
|
# Adapted from pkg/pip/build.sh
|
|
|
|
echo Creating required directories...
|
|
|
|
mkdir -p pip-build/pgadmin4/docs
|
|
|
|
|
|
|
|
# build the documentation
|
|
|
|
cd docs/en_US
|
|
|
|
${sphinx}/bin/sphinx-build -W -b html -d _build/doctrees . _build/html
|
|
|
|
|
|
|
|
# Build the clean tree
|
|
|
|
cd ../../web
|
|
|
|
cp -r * ../pip-build/pgadmin4
|
|
|
|
cd ../docs
|
|
|
|
cp -r * ../pip-build/pgadmin4/docs
|
|
|
|
for DIR in `ls -d ??_??/`
|
|
|
|
do
|
|
|
|
if [ -d ''${DIR}_build/html ]; then
|
|
|
|
mkdir -p ../pip-build/pgadmin4/docs/''${DIR}_build
|
|
|
|
cp -Rv ''${DIR}_build/html ../pip-build/pgadmin4/docs/''${DIR}_build
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
cd ../
|
|
|
|
|
|
|
|
cp -r ${yarnDeps}/* pip-build/pgadmin4
|
|
|
|
|
|
|
|
echo Creating distro config...
|
|
|
|
echo HELP_PATH = \'../../docs/en_US/_build/html/\' > pip-build/pgadmin4/config_distro.py
|
|
|
|
echo MINIFY_HTML = False >> pip-build/pgadmin4/config_distro.py
|
|
|
|
|
|
|
|
echo Creating manifest...
|
|
|
|
echo recursive-include pgadmin4 \* > pip-build/MANIFEST.in
|
|
|
|
|
|
|
|
echo Building wheel...
|
|
|
|
cd pip-build
|
|
|
|
# copy non-standard setup.py to local directory
|
|
|
|
# so setuptools-build-hook can call it
|
|
|
|
cp -v ../pkg/pip/setup_pip.py setup.py
|
|
|
|
'';
|
|
|
|
|
2022-04-19 19:28:33 +00:00
|
|
|
nativeBuildInputs = with pythonPackages; [ cython pip ];
|
2021-07-02 12:22:12 +00:00
|
|
|
buildInputs = [
|
|
|
|
zlib
|
2022-04-19 19:28:33 +00:00
|
|
|
pythonPackages.wheel
|
2021-07-02 12:22:12 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
# tests need an own data, log directory
|
|
|
|
# and a working and correctly setup postgres database
|
|
|
|
# checks will be run through nixos/tests
|
|
|
|
doCheck = false;
|
|
|
|
|
2022-04-24 11:17:42 +00:00
|
|
|
# speaklater3 is seperate because when passing buildDeps
|
|
|
|
# to the test, it fails there due to a collision with speaklater
|
2022-04-27 17:14:02 +00:00
|
|
|
propagatedBuildInputs = buildDeps ++ [ pythonPackages.speaklater3 ];
|
2021-07-02 12:22:12 +00:00
|
|
|
|
2022-04-24 11:17:42 +00:00
|
|
|
passthru.tests = {
|
|
|
|
standalone = nixosTests.pgadmin4-standalone;
|
|
|
|
# regression and function tests of the package itself
|
2022-06-02 10:20:51 +00:00
|
|
|
package = import ../../../../nixos/tests/pgadmin4.nix { inherit pkgs buildDeps; pythonEnv = pythonPackages; };
|
2021-07-02 12:22:12 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
description = "Administration and development platform for PostgreSQL";
|
|
|
|
homepage = "https://www.pgadmin.org/";
|
|
|
|
license = licenses.mit;
|
2022-04-28 15:03:01 +00:00
|
|
|
changelog = "https://www.pgadmin.org/docs/pgadmin4/latest/release_notes_${lib.versions.major version}_${lib.versions.minor version}.html";
|
2021-07-02 12:22:12 +00:00
|
|
|
maintainers = with maintainers; [ gador ];
|
2022-05-22 16:11:14 +00:00
|
|
|
mainProgram = "pgadmin4";
|
2021-07-02 12:22:12 +00:00
|
|
|
};
|
|
|
|
}
|