1

split out e11sync-djangostatic from e11sync-static

This commit is contained in:
Motiejus Jakštys 2024-01-28 16:42:17 +02:00
parent 287d0fe9ba
commit 513b2cf00d
6 changed files with 64 additions and 45 deletions

View File

@ -1,3 +1,4 @@
# flake8: noqa
# Generated by Django 5.0.1 on 2024-01-12 10:04
from django.db import migrations, models

View File

@ -44,7 +44,13 @@
};
in {
packages = {
inherit (pkgs) e11sync-static e11sync-caddyfile e11sync-backend;
inherit
(pkgs)
e11sync-static
e11sync-djangostatic
e11sync-caddyfile
e11sync-backend
;
};
checks = {

View File

@ -13,6 +13,7 @@ in {
inherit geoip2-tarball;
};
e11sync-static = withDjango5.callPackage ./pkgs/e11sync-static.nix {};
e11sync-djangostatic = withDjango5.callPackage ./pkgs/e11sync-djangostatic.nix {};
e11sync-caddyfile = withDjango5.callPackage ./pkgs/e11sync-caddyfile.nix {};
e11sync-backend = withDjango5.callPackage ./pkgs/e11sync-backend.nix {};
})

View File

@ -9,7 +9,7 @@
backendPort ? 8002,
databasePath ? null,
geoip-mmdb,
e11sync-static,
e11sync-djangostatic,
}: let
uwsgi-python = uwsgi.override {plugins = ["python3"];};
pythonEnv = python3.withPackages (ps: [ps.django ps.geoip2]);
@ -43,7 +43,7 @@ in
${lib.optionalString (databasePath != null) ''
--set E11SYNC_DATABASE_PATH "${databasePath}" \
''} \
--set E11SYNC_STATIC_ROOT "${e11sync-static.passthru.manifest}" \
--set E11SYNC_STATIC_ROOT "${e11sync-djangostatic.passthru.manifest}" \
--set E11SYNC_DEBUG "" \
--set GEOIP_PATH "${geoip-mmdb}" \
'';
@ -55,7 +55,7 @@ in
unpackPhase
patchShebangs --build app/manage.py
export GEOIP_PATH="${geoip-mmdb}"
export E11SYNC_STATIC_ROOT="${e11sync-static.passthru.manifest}"
export E11SYNC_STATIC_ROOT="${e11sync-djangostatic.passthru.manifest}"
app/manage.py test app
mkdir -p $out
'';

View File

@ -0,0 +1,36 @@
{
stdenv,
runCommand,
python3Packages,
findutils,
dart-sass,
jq,
}: let
self = stdenv.mkDerivation {
name = "e11sync-djangostatic";
srcs = [../app ../static];
sourceRoot = ".";
nativeBuildInputs = [
python3Packages.django
dart-sass
findutils
];
patchPhase = ''patchShebangs --build app/manage.py'';
buildPhase = ''
make -C static style.css
app/manage.py collectstatic
# remove unversioned files
pushd app/_static
${jq}/bin/jq -r '.paths | keys[]' staticfiles.json | xargs rm
popd
'';
installPhase = ''find; mv app/_static $out'';
passthru.manifest = runCommand "e11sync-djangostatic-manifest" {} ''
mkdir -p $out
cp ${self}/staticfiles.json $out/
'';
};
in
self

View File

@ -1,46 +1,21 @@
{
stdenv,
runCommand,
python3Packages,
zopfli,
brotli,
findutils,
dart-sass,
jq,
}: let
self = stdenv.mkDerivation {
name = "e11sync-static";
srcs = [../app ../static];
sourceRoot = ".";
nativeBuildInputs = [
python3Packages.django
dart-sass
findutils
];
patchPhase = ''patchShebangs --build app/manage.py'';
buildPhase = ''
make -C static style.css
app/manage.py collectstatic
# remove unversioned files
(cd app/_static;
${jq}/bin/jq -r '.paths | keys[]' staticfiles.json | xargs rm
)
find app/_static \
-name '*.css' -or \
-name '*.js' -or \
-name '*.svg' -or \
-name '*.txt' | \
tee >(xargs -n1 -P''$(nproc) ${zopfli}/bin/zopfli) | \
xargs -n1 -P''$(nproc) ${brotli}/bin/brotli
'';
installPhase = ''mv app/_static $out'';
passthru.manifest = runCommand "e11sync-static-manifest" {} ''
mkdir -p $out
cp ${self}/staticfiles.json $out/
'';
};
in
self
e11sync-djangostatic,
}:
runCommand "e11sync-static" {
src = e11sync-djangostatic;
nativeBuildInputs = [findutils];
} ''
unpackPhase
find e11sync-djangostatic \
-name '*.css' -or \
-name '*.js' -or \
-name '*.svg' -or \
-name '*.txt' | \
tee >(xargs -n1 -P''$(nproc) ${zopfli}/bin/zopfli) | \
xargs -n1 -P''$(nproc) ${brotli}/bin/brotli
mv e11sync-djangostatic $out
''