Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

librsvg seems to override other gdk-pixbuf loaders #221017

Open
barryfm opened this issue Mar 13, 2023 · 2 comments
Open

librsvg seems to override other gdk-pixbuf loaders #221017

barryfm opened this issue Mar 13, 2023 · 2 comments
Labels
0.kind: bug Something is broken

Comments

@barryfm
Copy link
Contributor

barryfm commented Mar 13, 2023

Describe the bug

When I include librsvg in an configuration, it will replace gdk-pixbufs with one it generates itself. If I later include webp-pixbuf-loader, these updates to gdk-pixbuf loader path were not seen.
This maybe because librsvg was not rebuilt.

Steps To Reproduce

Steps to reproduce the behavior:

  1. include librsvg in environment.systemPackages
  2. rebuild
  3. add webp-pixbuf-loader to environment.systemPackages
  4. rebuild.

Now looking at /run/current-system/sw/lib/gdk-pixbuf-2.0/2.10.0/

  1. loaders/ contains libpixbufloader-webp.so
  2. loaders.cache points to /nix/store/...-libsvg-.../gdk-pixbuf-2.0/2.10.0/loaders.cache
  3. loaders.cache doesn't contain any reference to webp.

I seems that since https://github.com/NixOS/nixpkgs/blob/1ecc5c7760b6961327377f2473db2538359da358/nixos/modules/services/x11/gdk-pixbuf.nix when such extensions should be able to just add themselves to
services.xserver.gdk-pixbuf.modulePackages to include themselves in the cache

In /run/current-system/sw/lib/gdk-pkgbuf-2.0/2.10.0/loaders:

loaders/libpixbufloader-svg.la:  symbolic link to /nix/store/9vn32f9zhg0v5qkxvb09bkznrkdjv6lw-librsvg-2.55.1/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.la
loaders/libpixbufloader-svg.so:  symbolic link to /nix/store/9vn32f9zhg0v5qkxvb09bkznrkdjv6lw-librsvg-2.55.1/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
loaders/libpixbufloader-webp.so: symbolic link to /nix/store/p2mk8kdma27gdljjgg830b2v90g59733-webp-pixbuf-loader-0.0.7/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-webp.so

In /run/current-system/sw/lib/gdk-pkgbuf-2.0/2.10.0/loaders.cache link:

# GdkPixbuf Image Loader Modules file
# Automatically generated file, do not edit
# Created by gdk-pixbuf-query-loaders from gdk-pixbuf-2.42.10
#
# LoaderDir = /nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders
#
"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.so"
"ani" 4 "gdk-pixbuf" "Windows animated cursor" "LGPL"
"application/x-navi-animation" ""
"ani" ""
"RIFF    ACON" "    xxxx    " 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so"
"bmp" 5 "gdk-pixbuf" "BMP" "LGPL"
"image/bmp" "image/x-bmp" "image/x-MS-bmp" ""
"bmp" ""
"BM" "" 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so"
"gif" 4 "gdk-pixbuf" "GIF" "LGPL"
"image/gif" ""
"gif" ""
"GIF8" "" 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.so"
"icns" 4 "gdk-pixbuf" "MacOS X icon" "GPL"
"image/x-icns" ""
"icns" ""
"icns" "" 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.so"
"ico" 5 "gdk-pixbuf" "Windows icon" "LGPL"
"image/x-icon" "image/x-ico" "image/x-win-bitmap" "image/vnd.microsoft.icon" "application/ico" "image/ico" "image/icon" "text/ico" ""
"ico" "cur" ""
"  \001   " "zz znz" 100
"  \002   " "zz znz" 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.so"
"pnm" 4 "gdk-pixbuf" "PNM/PBM/PGM/PPM" "LGPL"
"image/x-portable-anymap" "image/x-portable-bitmap" "image/x-portable-graymap" "image/x-portable-pixmap" ""
"pnm" "pbm" "pgm" "ppm" ""
"P1" "" 100
"P2" "" 100
"P3" "" 100
"P4" "" 100
"P5" "" 100
"P6" "" 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.so"
"qtif" 4 "gdk-pixbuf" "QuickTime" "LGPL"
"image/x-quicktime" "image/qtif" ""
"qtif" "qif" ""
"abcdidsc" "xxxx    " 100
"abcdidat" "xxxx    " 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.so"
"tga" 4 "gdk-pixbuf" "Targa" "LGPL"
"image/x-tga" ""
"tga" "targa" ""
" \001\001" "x  " 100
" \001\t" "x  " 100
"  \002" "xz " 99
"  \003" "xz " 100
"  \n" "xz " 100
"  \v" "xz " 100

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.so"
"tiff" 5 "gdk-pixbuf" "TIFF" "LGPL"
"image/tiff" ""
"tiff" "tif" ""
"MM *" "  z " 100
"II* " "   z" 100
"II* \020   CR\002 " "   z zzz   z" 0

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.so"
"xbm" 4 "gdk-pixbuf" "XBM" "LGPL"
"image/x-xbitmap" ""
"xbm" ""
"#define " "" 100
"/*" "" 50

"/nix/store/7h9f215fx7kgmin2k35nlkfknk701dyl-gdk-pixbuf-2.42.10/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so"
"xpm" 4 "gdk-pixbuf" "XPM" "LGPL"
"image/x-xpixmap" ""
"xpm" ""
"/* XPM */" "" 100

# GdkPixbuf Image Loader Modules file
# Automatically generated file, do not edit
# Created by gdk-pixbuf-query-loaders from gdk-pixbuf-2.42.10
#
# LoaderDir = /nix/store/9vn32f9zhg0v5qkxvb09bkznrkdjv6lw-librsvg-2.55.1/lib/gdk-pixbuf-2.0/2.10.0/loaders
#
"/nix/store/9vn32f9zhg0v5qkxvb09bkznrkdjv6lw-librsvg-2.55.1/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so"
"svg" 6 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL"
"image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" ""
"svg" "svgz" "svg.gz" ""
" <svg" "*    " 100
" <!DOCTYPE svg" "*             " 100

Notify maintainers

Not sure how to include team.gnome.members? @GNOME

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

 - system: `"x86_64-linux"`
 - host os: `Linux 6.2.5, NixOS, 23.05 (Stoat), 23.05.20230313.8e3fad8`
 - multi-user?: `no`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.3`
 - channels(root): `""`
 - channels(barry): `""`
 - nixpkgs: `not found`

This is from a nix flakes rebuild using flake:nixpkgs

@barryfm barryfm added the 0.kind: bug Something is broken label Mar 13, 2023
@barryfm
Copy link
Contributor Author

barryfm commented Mar 13, 2023

It seems /etc/set-environment sets up GDK_PIXBUF_MODULE_FILE to a properly generated /nix/store/qq618cwqfs0v81lin9l26c0pfccphw49-gdk-pixbuf-loaders.cache.

But gnome-terminal and gnome-console override the environment variable
and use /nix/store/9vn32f9zhg0v5qkxvb09bkznrkdjv6lw-librsvg-2.55.1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache in their executables.

But if I use foot or xterm I get the proper GDK_PIXBUF_MODULE_FILE setup.

Could librsvg and all the packages that explicitlly do: wrapProgram ... --set GDK_PIXBUF_MODULE_FILE "${librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" be fixed.

I don't think what plugins to gdk-pixbuf are available is something that a package should limit. Even in a pure environment, the selection of paths should be inclusive of all the plugins added to the environment or explicitly an input to any of the packages in that environment.

@Artturin
Copy link
Member

Artturin commented Mar 14, 2023

I reckon changing this

gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE")
to --set-default would help but may cause other issues (like #54278)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.kind: bug Something is broken
Projects
None yet
Development

No branches or pull requests

2 participants