diff --git a/doc/release-notes/rl-2611.section.md b/doc/release-notes/rl-2611.section.md index 0963eff015e8..adbd6c83208a 100644 --- a/doc/release-notes/rl-2611.section.md +++ b/doc/release-notes/rl-2611.section.md @@ -317,6 +317,10 @@ - `extra-container` v0.17 now enforces assertions and warnings, and is hosted at [new org/repo extra-container/extra-container](https://github.com/extra-container/extra-container). Full changes: [CHANGELOG](https://github.com/extra-container/extra-container/blob/main/CHANGELOG.md) +- `factor-lang` has been updated to 0.102 introducing GTK4 and PCRE2 support. + Support of i686-linux (using GTK3) has also been added. + Subsequently `factor-lang-0_99` to `factor-lang-0_101` have been marked for removal in the next release, as they receive no updates from upstream. + - `buildPythonPackage` and `buildPythonApplication` now uses `meta.problems.unsupportedPython` to mark Python packages with unsupported Python interpreters. - The `disabled` argument automatically converts to `meta.problems.unsupportedPython` with the default message. - Overriding the `disabled` argument or the `passthru.disabled` attribute is deprecated. @@ -409,6 +413,10 @@ - `macaulay2` no longer installs Emacs files. Users can now get the files from an Emacs lisp package, like `emacs.pkgs.withPackages (epkgs: [ epkgs.m2 ])`. +- `factor-lang-*` packages silently switched from PCRE to PCRE2. + Thus, factor applications using extra/pcre must switch to extra/pcre2 or have to add the old pcre library back via the `extraLibs` attribute. + Upgrade to version 0.102 for full PCRE2 support via extra/pcre2 which is on par with extra/pcre from that release onwards. + - `navidrome`'s plugin infrastructure has significantly changed. `buildNavidromePlugin` is renamed to `buildNavidromeGoPlugin` to allow for other language types. Plugins must now be sourced from `pkgsCross.wasi32.navidromePlugins.`. - `navidromePlugins.apple-music` now uses a `bundleName` attribute which sets the plugin's name to match the plugin's documentation for easier use. You will need to update your Agent from `apple-music-plugin` to `apple-music` as noted in [their docs](https://github.com/navidrome/apple-music-plugin#installation). diff --git a/pkgs/development/compilers/factor-lang/0.100.nix b/pkgs/development/compilers/factor-lang/0.100.nix index ba99d9958df1..a31703d57e1b 100644 --- a/pkgs/development/compilers/factor-lang/0.100.nix +++ b/pkgs/development/compilers/factor-lang/0.100.nix @@ -1,6 +1,6 @@ { callPackage, fetchurl, ... }@args: -callPackage ./unwrapped.nix ( +(callPackage ./unwrapped.nix ( rec { version = "0.100"; src = fetchurl { @@ -12,4 +12,9 @@ callPackage ./unwrapped.nix ( "callPackage" "fetchurl" ]) -) +)).overrideAttrs + (oA: { + meta = (oA.meta or { }) // { + problems.removal.message = "Package to be removed in release following 26.11"; + }; + }) diff --git a/pkgs/development/compilers/factor-lang/0.101.nix b/pkgs/development/compilers/factor-lang/0.101.nix index 6785080abb78..1f877d998077 100644 --- a/pkgs/development/compilers/factor-lang/0.101.nix +++ b/pkgs/development/compilers/factor-lang/0.101.nix @@ -1,6 +1,6 @@ { callPackage, fetchurl, ... }@args: -callPackage ./unwrapped.nix ( +(callPackage ./unwrapped.nix ( rec { version = "0.101"; src = fetchurl { @@ -12,4 +12,9 @@ callPackage ./unwrapped.nix ( "callPackage" "fetchurl" ]) -) +)).overrideAttrs + (oA: { + meta = (oA.meta or { }) // { + problems.removal.message = "Package to be removed in release following 26.11"; + }; + }) diff --git a/pkgs/development/compilers/factor-lang/0.102.nix b/pkgs/development/compilers/factor-lang/0.102.nix new file mode 100644 index 000000000000..cd64c42b62ef --- /dev/null +++ b/pkgs/development/compilers/factor-lang/0.102.nix @@ -0,0 +1,15 @@ +{ callPackage, fetchurl, ... }@args: + +callPackage ./unwrapped.nix ( + rec { + version = "0.102"; + src = fetchurl { + url = "https://downloads.factorcode.org/releases/${version}/factor-src-${version}.zip"; + hash = "sha256-bQDrq9sYWkCiUlELze0zGgW56DMMXckKGBpjVaMuOrU="; + }; + } + // (builtins.removeAttrs args [ + "callPackage" + "fetchurl" + ]) +) diff --git a/pkgs/development/compilers/factor-lang/0.99.nix b/pkgs/development/compilers/factor-lang/0.99.nix index 16e849f2a87e..2477b9103c93 100644 --- a/pkgs/development/compilers/factor-lang/0.99.nix +++ b/pkgs/development/compilers/factor-lang/0.99.nix @@ -1,6 +1,6 @@ { callPackage, fetchurl, ... }@args: -callPackage ./unwrapped.nix ( +(callPackage ./unwrapped.nix ( rec { version = "0.99"; src = fetchurl { @@ -12,4 +12,9 @@ callPackage ./unwrapped.nix ( "callPackage" "fetchurl" ]) -) +)).overrideAttrs + (oA: { + meta = (oA.meta or { }) // { + problems.removal.message = "Package to be removed in release following 26.11"; + }; + }) diff --git a/pkgs/development/compilers/factor-lang/adjust-paths-in-unit-tests-0.102.patch b/pkgs/development/compilers/factor-lang/adjust-paths-in-unit-tests-0.102.patch new file mode 100644 index 000000000000..b2370ce2ee84 --- /dev/null +++ b/pkgs/development/compilers/factor-lang/adjust-paths-in-unit-tests-0.102.patch @@ -0,0 +1,24 @@ +diff '--color=auto' -ru factor.orig/basis/io/standard-paths/unix/unix-tests.factor factor/basis/io/standard-paths/unix/unix-tests.factor +--- factor.orig/basis/io/standard-paths/unix/unix-tests.factor 2026-10-14 13:50:47.445394923 +0200 ++++ factor/basis/io/standard-paths/unix/unix-tests.factor 2026-10-14 13:52:28.077933912 +0200 +@@ -56,17 +56,17 @@ + + { f } [ "" find-in-path ] unit-test + { t } [ +- "ls" find-in-path { "/bin/ls" "/usr/bin/ls" } member? ++ "ls" find-in-path not not + ] unit-test + + { t } [ + "/sbin:" "PATH" os-env append "PATH" [ + "ps" find-in-path +- { "/bin/ps" "/sbin/ps" "/usr/bin/ps" } member? ++ not not + ] with-os-env + ] unit-test + + { t } [ + "ls" find-in-standard-login-path +- { "/bin/ls" "/usr/bin/ls" } member? ++ not not + ] unit-test diff --git a/pkgs/development/compilers/factor-lang/ld.so.cache-from-env-0.102.patch b/pkgs/development/compilers/factor-lang/ld.so.cache-from-env-0.102.patch new file mode 100644 index 000000000000..24490025f2a3 --- /dev/null +++ b/pkgs/development/compilers/factor-lang/ld.so.cache-from-env-0.102.patch @@ -0,0 +1,28 @@ +diff '--color=auto' -ru factor.orig/basis/alien/libraries/finder/linux/linux.factor factor/basis/alien/libraries/finder/linux/linux.factor +--- factor.orig/basis/alien/libraries/finder/linux/linux.factor 2026-10-14 13:50:47.453225475 +0200 ++++ factor/basis/alien/libraries/finder/linux/linux.factor 2026-10-14 14:03:13.204120995 +0200 +@@ -33,16 +33,14 @@ + ] map ; + + : load-ldconfig-cache ( -- seq ) +- "ldconfig" find-in-path [ +- { "/usr/sbin/ldconfig" "/sbin/ldconfig" } +- [ dup file-exists? [ file-executable? ] [ drop f ] if ] find nip +- ] unless* +- [ +- "-p" 2array swap >>command +closed+ >>stderr +- utf8 [ read-lines ] with-process-reader* nip 0 = [ +- [ "=>" swap subseq? ] filter parse-ldconfig-lines +- ] [ drop { } ] if +- ] [ { } ] if* ; ++ "FACTOR_LD_SO_CACHE" os-env [ ++ utf8 [ read-lines ] with-file-reader ++ ] [ ++ { } clone ++ ] if* ++ [ { } ] [ ++ [ "=>" swap subseq? ] filter parse-ldconfig-lines ++ ] if-empty ; + + ! Inspect, do not dlopen, discovery candidates: loading would execute their + ! constructors. Also reject linker scripts and foreign-architecture DSOs. diff --git a/pkgs/development/compilers/factor-lang/mk-factor-application.nix b/pkgs/development/compilers/factor-lang/mk-factor-application.nix index bbd039ba3615..5619078634a0 100644 --- a/pkgs/development/compilers/factor-lang/mk-factor-application.nix +++ b/pkgs/development/compilers/factor-lang/mk-factor-application.nix @@ -127,6 +127,7 @@ in ''; __structuredAttrs = true; + strictDeps = true; installPhase = attrs.installPhase or /* bash */ '' diff --git a/pkgs/development/compilers/factor-lang/mk-vocab.nix b/pkgs/development/compilers/factor-lang/mk-vocab.nix index 3d929498fbac..04d949d15c3d 100644 --- a/pkgs/development/compilers/factor-lang/mk-vocab.nix +++ b/pkgs/development/compilers/factor-lang/mk-vocab.nix @@ -20,6 +20,10 @@ drvArgs: }@attrs: { inherit vocabName vocabRoot; + + __structuredAttrs = true; + strictDeps = true; + installPhase = # Default installer # 1. If lib/factor// exists, copy all vocab roots diff --git a/pkgs/development/compilers/factor-lang/unwrapped.nix b/pkgs/development/compilers/factor-lang/unwrapped.nix index dddd53148977..7a5e72a320c6 100644 --- a/pkgs/development/compilers/factor-lang/unwrapped.nix +++ b/pkgs/development/compilers/factor-lang/unwrapped.nix @@ -21,17 +21,31 @@ stdenv.mkDerivation (finalAttrs: { pname = "factor-lang"; inherit src version; + __structuredAttrs = true; + strictDeps = true; patches = [ # Use full path to image while bootstrapping ./staging-command-line-0.99-pre.patch # Point work vocabulary root to a writable location ./workdir-0.99-pre.patch - # Patch hard-coded FHS paths - ./adjust-paths-in-unit-tests.patch - # Avoid using /sbin/ldconfig - ./ld.so.cache-from-env.patch - ]; + ] + ++ ( + if (versionOlder finalAttrs.version "0.102") then + [ + # Patch hard-coded FHS paths + ./adjust-paths-in-unit-tests.patch + # Avoid using /sbin/ldconfig + ./ld.so.cache-from-env.patch + ] + else + [ + # Patch hard-coded FHS paths + ./adjust-paths-in-unit-tests-0.102.patch + # Avoid using /sbin/ldconfig + ./ld.so.cache-from-env-0.102.patch + ] + ); nativeBuildInputs = [ git @@ -41,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: { ]; postPatch = '' - sed -ie '4i GIT_LABEL = heads/master-'$(< git-id) GNUmakefile + sed -i -e '/GIT_LABEL :=/c GIT_LABEL := heads/master-'$(< git-id) GNUmakefile # Some other hard-coded paths to fix: substituteInPlace extra/tzinfo/tzinfo.factor \ --replace-fail '/usr/share/zoneinfo' '${tzdata}/share/zoneinfo' diff --git a/pkgs/development/compilers/factor-lang/wrapper.nix b/pkgs/development/compilers/factor-lang/wrapper.nix index 748c816be0f9..28339d54a833 100644 --- a/pkgs/development/compilers/factor-lang/wrapper.nix +++ b/pkgs/development/compilers/factor-lang/wrapper.nix @@ -13,10 +13,12 @@ freealut, gdk-pixbuf, glib, - gtk2-x11, - gtkglext, + gtk2-x11, # to be retired with <= 0.101 + gtkglext, # to be retired with <= 0.101 libGL, libGLU, + gtk4, + libepoxy, librsvg, graphviz, libogg, @@ -24,7 +26,7 @@ openal, openssl, pango, - pcre, + pcre2, udis86, zlib, # Enable factor GUI support @@ -53,7 +55,7 @@ let libvorbis openal openssl - pcre + pcre2 udis86 zlib ]; @@ -62,19 +64,31 @@ let defaultLibs ++ extraLibs ++ binPackages - ++ (lib.flatten (map (v: v.extraLibs or [ ]) extraVocabs)) - ++ optionals guiSupport [ - cairo - freealut - gdk-pixbuf - glib - gtk2-x11 - gtkglext - libGL - libGLU - pango - ]; - bins = binPackages ++ defaultBins ++ (lib.flatten (map (v: v.extraPaths or [ ]) extraVocabs)); + ++ (builtins.concatMap (v: v.extraLibs or [ ]) extraVocabs) + ++ optionals guiSupport ( + [ + cairo + freealut + gdk-pixbuf + glib + libGL + libGLU + pango + ] + ++ ( + if (versionOlder factor-unwrapped.version "0.102") then + [ + gtk2-x11 + gtkglext + ] + else + [ + gtk4 + libepoxy + ] + ) + ); + bins = binPackages ++ defaultBins ++ (builtins.concatMap (v: v.extraPaths or [ ]) extraVocabs); vocabTree = buildEnv { name = "${factor-unwrapped.pname}-vocabs"; ignoreCollisions = true; @@ -97,6 +111,9 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = optional guiSupport gdk-pixbuf; + __structuredAttrs = true; + strictDeps = true; + dontUnpack = true; desktopItems = [ @@ -211,6 +228,8 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstallCheck ''; + dontStrip = true; # Have been stripped already + passthru = { inherit defaultLibs diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5e17c94ab66c..cf9bbc3d1806 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5452,12 +5452,18 @@ with pkgs; stdenv = clangStdenv; }; }; - factorPackages = factorPackages-0_101; + factorPackages-0_102 = callPackage ./factor-packages.nix { + factor-unwrapped = callPackage ../development/compilers/factor-lang/0.102.nix { + stdenv = clangStdenv; + }; + }; + factorPackages = factorPackages-0_102; factor-lang-0_99 = factorPackages-0_99.factor-lang; factor-lang-0_100 = factorPackages-0_100.factor-lang; factor-lang-0_101 = factorPackages-0_101.factor-lang; - factor-lang = factor-lang-0_101; + factor-lang-0_102 = factorPackages-0_102.factor-lang; + factor-lang = factor-lang-0_102; inherit (callPackage ../development/libraries/ffmpeg { }) ffmpeg_4