From 10e3506904ab96b8ef0556f2b22e6b1a47d2ceaa Mon Sep 17 00:00:00 2001 From: toastal Date: Sun, 28 Apr 2024 15:32:44 +0700 Subject: [PATCH 1/2] movim: add patch for bcrypt error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See the issue on Movim’s proprietary issue tracker: https://github.com/movim/movim/issues/1311 --- pkgs/by-name/mo/movim/package.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/by-name/mo/movim/package.nix b/pkgs/by-name/mo/movim/package.nix index 1c0d5863dfa1..d6643e0c7d3a 100644 --- a/pkgs/by-name/mo/movim/package.nix +++ b/pkgs/by-name/mo/movim/package.nix @@ -48,6 +48,13 @@ php.buildComposerProject (finalAttrs: { hash = "sha256-t63POjywZLk5ulppuCedFhhEhOsnB90vy3k/HhM3MGc="; }; + patches = [ + (fetchpatch { + url = "https://github.com/movim/movim/commit/4dd2842f4617f3baaa166157892a532ad07df80d.patch"; + hash = "sha256-32MLS5g60Rhm8HQDBPnUo9k+aB7L8dNMcnSjPIlooks="; + }) + ]; + php = php.buildEnv ({ extensions = ({ all, enabled }: enabled From 13852fc9ad82314bde3de1badb4097eb7526d921 Mon Sep 17 00:00:00 2001 From: toastal Date: Sat, 27 Apr 2024 10:12:01 +0700 Subject: [PATCH 2/2] movim: remove parallel dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently there is an issue with $PATH & parallel causing build errors. It’s probably best to just remove the dependency where bash forking is good enough here. --- nixos/modules/services/web-apps/movim.nix | 22 ++++----- pkgs/by-name/mo/movim/package.nix | 58 ++++++++++------------- 2 files changed, 34 insertions(+), 46 deletions(-) diff --git a/nixos/modules/services/web-apps/movim.nix b/nixos/modules/services/web-apps/movim.nix index bb88a185b461..29bed0e067fa 100644 --- a/nixos/modules/services/web-apps/movim.nix +++ b/nixos/modules/services/web-apps/movim.nix @@ -103,22 +103,20 @@ let lib.concatStringsSep "\n" [ (lib.optionalString brotli.enable '' echo -n "Precompressing static files with Brotli …" - find ${appDir}/public -type f ${findTextFileNames} \ - | ${lib.getExe pkgs.parallel} ${lib.escapeShellArgs [ - "--will-cite" - "-j $NIX_BUILD_CORES" - "${lib.getExe brotli.package} --keep --quality=${builtins.toString brotli.compressionLevel} --output={}.br {}" - ]} + find ${appDir}/public -type f ${findTextFileNames} -print0 \ + | xargs -0 -n 1 -P $NIX_BUILD_CORES ${pkgs.writeShellScript "movim_precompress_broti" '' + file="$1" + ${lib.getExe brotli.package} --keep --quality=${builtins.toString brotli.compressionLevel} --output=$file.br $file + ''} echo " done." '') (lib.optionalString gzip.enable '' echo -n "Precompressing static files with Gzip …" - find ${appDir}/public -type f ${findTextFileNames} \ - | ${lib.getExe pkgs.parallel} ${lib.escapeShellArgs [ - "--will-cite" - "-j $NIX_BUILD_CORES" - "${lib.getExe gzip.package} -c -${builtins.toString gzip.compressionLevel} {} > {}.gz" - ]} + find ${appDir}/public -type f ${findTextFileNames} -print0 \ + | xargs -0 -n 1 -P $NIX_BUILD_CORES ${pkgs.writeShellScript "movim_precompress_broti" '' + file="$1" + ${lib.getExe gzip.package} -c -${builtins.toString gzip.compressionLevel} $file > $file.gz + ''} echo " done." '') ]; diff --git a/pkgs/by-name/mo/movim/package.nix b/pkgs/by-name/mo/movim/package.nix index d6643e0c7d3a..20dd5165d26e 100644 --- a/pkgs/by-name/mo/movim/package.nix +++ b/pkgs/by-name/mo/movim/package.nix @@ -1,13 +1,13 @@ { lib , fetchpatch , fetchFromGitHub +, writeShellScript , dash , php , phpCfg ? null , withPgsql ? true # “strongly recommended” according to docs , withMysql ? false , minifyStaticFiles ? false # default files are often not minified -, parallel , esbuild , lightningcss , scour @@ -67,8 +67,7 @@ php.buildComposerProject (finalAttrs: { }); nativeBuildInputs = - lib.optional (lib.any (x: x.enable) (lib.attrValues minify)) parallel - ++ lib.optional minify.script.enable esbuild + lib.optional minify.script.enable esbuild ++ lib.optional minify.style.enable lightningcss ++ lib.optional minify.svg.enable scour; @@ -101,39 +100,30 @@ php.buildComposerProject (finalAttrs: { ''; preBuild = lib.optionalString minify.script.enable '' - find ./public -type f -iname "*.js" \ - | parallel ${lib.escapeShellArgs [ - "--will-cite" - "-j $NIX_BUILD_CORES" - '' - tmp="$(mktemp)" - esbuild {} --minify --target=${lib.escapeShellArg minify.script.target} --outfile=$tmp - [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {} - '' - ]} + find ./public -type f -iname "*.js" -print0 \ + | xargs -0 -n 1 -P $NIX_BUILD_CORES ${writeShellScript "movim_script_minify" '' + file="$1" + tmp="$(mktemp)" + esbuild $file --minify --target=${lib.escapeShellArg minify.script.target} --outfile=$tmp + [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s $file)" ]] && mv $tmp $file + ''} '' + lib.optionalString minify.style.enable '' - export BROWSERLIST=${lib.escapeShellArg minify.style.browserslist} - find ./public -type f -iname "*.css" \ - | parallel ${lib.escapeShellArgs [ - "--will-cite" - "-j $NIX_BUILD_CORES" - '' - tmp="$(mktemp)" - lightningcss {} --minify --browserslist --output-file=$tmp - [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {} - '' - ]} + find ./public -type f -iname "*.css" -print0 \ + | xargs -0 -n 1 -P $NIX_BUILD_CORES ${writeShellScript "movim_style_minify" '' + export BROWSERLIST="${lib.escapeShellArg minify.style.browserslist}" + file="$1" + tmp="$(mktemp)" + lightningcss $file --minify --browserslist --output-file=$tmp + [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s $file)" ]] && mv $tmp $file + ''} '' + lib.optionalString minify.svg.enable '' - find ./public -type f -iname "*.svg" -a -not -path "*/emojis/*" \ - | parallel ${lib.escapeShellArgs [ - "--will-cite" - "-j $NIX_BUILD_CORES" - '' - tmp="$(mktemp)" - scour -i {} -o $tmp --disable-style-to-xml --enable-comment-stripping --enable-viewboxing --indent=tab - [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {} - '' - ]} + find ./public -type f -iname "*.svg" -a -not -path "*/emojis/*" -print0 \ + | xargs -0 -n 1 -P $NIX_BUILD_CORES ${writeShellScript "movim_svg_minify" '' + file="$1" + tmp="$(mktemp)" + scour -i $file -o $tmp --disable-style-to-xml --enable-comment-stripping --enable-viewboxing --indent=tab + [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s $file)" ]] && mv $tmp $file + ''} ''; postInstall = ''