NixOS / cabal2nix

Generate Nix build instructions from a Cabal file
https://haskell4nix.readthedocs.io
Other
352 stars 154 forks source link

cabal2nix: map 'x11' pkg-config dependency to 'libX11', not 'xlibsWra… #589

Closed trofi closed 1 year ago

trofi commented 1 year ago

…pper'

There are only 3 packages that use xlibsWrapper as a provider of x11 pkg-config input. Thes are: gi-xlib, greenclip, gtk-traymanager.

There should be no reason to use transitional xlibsWrapper package.

sternenseemann commented 1 year ago

Can you post the diff of regenerating hackage-packages.nix here with this patch applied? You do this by running env HACKAGE2NIX=/path/to/local/build ./maintainers/scripts/haskell/regenerate-hackage-packages.nix in nixpkgs. Additionally it'd be great if you could check that the changed expressions still compile.

trofi commented 1 year ago

Had to modify the command slightly: env HACKAGE2NIX=$dev/cabal2nix/.../hackage2nix distribution_nixpkgs_datadir=$dev/cabal2nix/distribution-nixpkgs ./maintainers/scripts/haskell/regenerate-hackage-packages.sh

Here is the diff against master:

--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -1,4 +1,4 @@
-/* hackage-packages.nix is an auto-generated file -- DO NOT EDIT! */
+/* hackage-packages.nix is auto-generated by hackage2nix -- DO NOT EDIT MANUALLY! */

 { pkgs, lib, callPackage }:

@@ -113358,8 +113358,8 @@ self: {

   "gi-xlib" = callPackage
     ({ mkDerivation, base, bytestring, Cabal, containers, haskell-gi
-     , haskell-gi-base, haskell-gi-overloading, text, transformers
-     , xlibsWrapper
+     , haskell-gi-base, haskell-gi-overloading, libX11, text
+     , transformers
      }:
      mkDerivation {
        pname = "gi-xlib";
@@ -113370,10 +113370,10 @@ self: {
          base bytestring containers haskell-gi haskell-gi-base
          haskell-gi-overloading text transformers
        ];
-       libraryPkgconfigDepends = [ xlibsWrapper ];
+       libraryPkgconfigDepends = [ libX11 ];
        description = "xlib bindings";
        license = lib.licenses.lgpl21Only;
-     }) {inherit (pkgs) xlibsWrapper;};
+     }) {inherit (pkgs.xorg) libX11;};

   "giak" = callPackage
     ({ mkDerivation, async, base, bytestring, Cabal, containers
@@ -120725,9 +120725,8 @@ self: {

   "greenclip" = callPackage
     ({ mkDerivation, base, binary, bytestring, directory, exceptions
-     , hashable, libXau, libXScrnSaver, microlens, microlens-mtl
+     , hashable, libX11, libXau, libXScrnSaver, microlens, microlens-mtl
      , protolude, text, tomland, unix, vector, wordexp, X11, xcb, xdmcp
-     , xlibsWrapper
      }:
      mkDerivation {
        pname = "greenclip";
@@ -120740,13 +120739,13 @@ self: {
          microlens-mtl protolude text tomland unix vector wordexp X11
        ];
        executablePkgconfigDepends = [
-         libXau libXScrnSaver xcb xdmcp xlibsWrapper
+         libX11 libXau libXScrnSaver xcb xdmcp
        ];
        description = "Simple clipboard manager to be integrated with rofi";
        license = lib.licenses.bsd3;
        mainProgram = "greenclip";
-     }) {inherit (pkgs.xorg) libXScrnSaver; inherit (pkgs.xorg) libXau;
-         xcb = null; xdmcp = null; inherit (pkgs) xlibsWrapper;};
+     }) {inherit (pkgs.xorg) libX11; inherit (pkgs.xorg) libXScrnSaver;
+         inherit (pkgs.xorg) libXau; xcb = null; xdmcp = null;};

   "greg-client" = callPackage
     ({ mkDerivation, base, binary, bytestring, clock, hostname, network
@@ -121974,16 +121973,16 @@ self: {
      }) {};

   "gtk-traymanager" = callPackage
-    ({ mkDerivation, base, glib, gtk3, xlibsWrapper }:
+    ({ mkDerivation, base, glib, gtk3, libX11 }:
      mkDerivation {
        pname = "gtk-traymanager";
        version = "1.0.1";
        sha256 = "0vc1gwhg5l7l5iqb1i3zwd1bsy8fxsiwkwzza7j15zi07f97k7di";
        libraryHaskellDepends = [ base glib gtk3 ];
-       libraryPkgconfigDepends = [ xlibsWrapper ];
+       libraryPkgconfigDepends = [ libX11 ];
        description = "A wrapper around the eggtraymanager library for Linux system trays";
        license = lib.licenses.lgpl21Only;
-     }) {inherit (pkgs) xlibsWrapper;};
+     }) {inherit (pkgs.xorg) libX11;};

   "gtk2hs-buildtools" = callPackage
     ({ mkDerivation, alex, array, base, Cabal, containers, directory
@@ -312543,7 +312542,10 @@ self: {
        description = "A tiling window manager";
        license = lib.licenses.bsd3;
        mainProgram = "xmonad";
-       maintainers = [ lib.maintainers.peti ];
+       maintainers = [
+         lib.maintainers.dschrempf lib.maintainers.ivanbrennan
+         lib.maintainers.peti
+       ];
      }) {};

   "xmonad-bluetilebranch" = callPackage
@@ -312589,7 +312591,10 @@ self: {
        ];
        description = "Community-maintained extensions for xmonad";
        license = lib.licenses.bsd3;
-       maintainers = [ lib.maintainers.peti ];
+       maintainers = [
+         lib.maintainers.dschrempf lib.maintainers.ivanbrennan
+         lib.maintainers.peti
+       ];
      }) {};

   "xmonad-contrib-bluetilebranch" = callPackage

nix build --no-link -f. haskellPackages.gi-xlib haskellPackages.gtk-traymanager haskellPackages.greenclip built all 3 packages successfully.

sternenseemann commented 1 year ago

distribution_nixpkgs_datadir=$dev/cabal2nix/distribution-nixpkgs

Right, that is a good reminder, I need to remember to add that bit back to the shell.nix we have in here.

built all 3 packages successfully

great!

sternenseemann commented 1 year ago

https://github.com/NixOS/nixpkgs/pull/202022/commits/5bc95ac1b571a33557e52e074f2ecade7bedcb98