Commit Graph

19 Commits

Author SHA1 Message Date
quantenzitrone
7d8132a92c treewide: remove references to the xorg namespace in pkgs (automated)
this creates some eval errors that will be fixed in the next commit

done with the following script:

```fish
\#!/usr/bin/env fish

set packagesjson (nix eval --impure --json --expr '
let
  lib = import ./lib;
in
import pkgs/servers/x11/xorg/default.nix (lib.mapAttrs (
  name: _:
  if name == "lib" then
    lib
  else if name == "config" then
    { allowAliases = false; }
  else
    name
) (__functionArgs (import pkgs/servers/x11/xorg/default.nix))) { }
' | jq)

set one (grep '^    [A-Za-z0-9_-]*$' pkgs/servers/x11/xorg/default.nix | string trim | string replace -r '$' Z | sort | string sub -e -1)
set two (grep '^  [A-Za-z0-9_-]* = [A-Za-z0-9_-]*;$' pkgs/servers/x11/xorg/default.nix | cut -d= -f1 | string trim | string replace -r '$' Z | sort | string sub -e -1)

for arg in $one $two
    set oname $arg
    set nname (echo $packagesjson | jq -r .$oname)

    if test $nname = null
        echo (set_color red)warn:(set_color normal) unknown package xorg.$oname >&2
        continue
    end

    echo $oname "->" $nname

    # replace basic xorg.$name references
    for file in (rg -F "xorg.$oname" --files-with-matches pkgs)
        # special cases
        sd -F "$oname = xorg.$oname;" "$nname = $nname;" $file

        # replace
        sd -F "xorg.$oname" "$nname" $file

        # fixup function arguments

        # prevent duplicate function args
        if grep -E " ($oname|$nname),\$" $file >/dev/null
            continue
        end

        if grep 'xorg\..' $file >/dev/null # case1: there is more so we can't just remove the function arg

            if grep ' xorg,$' $file >/dev/null
                sd ' xorg,$' " xorg,
                $nname," $file

            else if grep ' xorg ? .*,$' $file >/dev/null
                sd 'xorg( ? .*),$' "xorg\$1,
                $nname," $file

            else
                sd -F 'xorg,' "$nname,
                xorg," $file
            end

        else # case there is no more xorg..* so we can just replace the function arg
            sd 'xorg(| ? .*),.*$' "$nname," $file
        end
    end
end

nix fmt
```
2026-01-25 22:28:09 +01:00
NAHO
c8d4dabc43 pkgs: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd \
      --type file \
      . \
      pkgs \
      --exec-batch sed --in-place --regexp-extended "
        s/\<builtins\.($(
          printf '%s\n' "${builtins[@]}" |
            paste --delimiter '|' --serial -
        ))\>/\1/g
      "

    nix fmt
2025-10-04 19:02:37 +02:00
Wolfgang Walther
5a0711127c treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
Silvan Mosberger
4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
Artturin
277a2669d2 gobject-introspection: Conditionalize depsTargetTargetPropagated
Fixes ↓

```
nix-repl> pkgsCross.x86_64-freebsd.pkgsBuildHost.gobject-introspection
error: Don't know how to run x86_64-unknown-freebsd executables.
```

The unwrapped already doesn't error

```
nix-repl> pkgsCross.x86_64-freebsd.pkgsBuildHost.gobject-introspection-unwrapped
«derivation /nix/store/xq4q4vigy2glmfng2h6bbr4sysyk8ipz-gobject-introspection-1.82.0.drv»
```

7b1cffdd2e/pkgs/development/libraries/gobject-introspection/default.nix (L114)

It's caused by `depsTargetTargetPropagated = [ overridenTargetUnwrappedGir ];` in the wrapper

In `graphene` there is
`PATH=${python3.withPackages (pp: [ pp.pygobject3 pp.tappy ])}/bin:$PATH patchShebangs tests/introspection.py`

Which causes the `Don't know` error in `pkgsCross.x86_64-freebsd.pkgsBuildHost.graphene`

because `python3` and `pygobject3` will be from `pkgsHostTarget`

and then `pygobject3` has `gobject-introspection` from `pkgsHostTarget`

and then that `gobject-introspection` will have `pkgsCross.x86_64-freebsd.pkgsCross.x86_64-freebsd.buildPackages.pkgsTargetTarget.gobject-introspection.gobject-introspection` in `depsTargetTargetPropagated`

To test that importing the python library `gi` works without `depsTargetTargetPropagated`

```nix
let
  pkgs =
    (import ./. {
      crossSystem = (import ./lib).systems.examples.aarch64-multiplatform;
      # On `master` uncomment this and comment `propagatedBuildInputs` below and you'll get
      # error: Don't know how to run x86_64-unknown-freebsd executables.
      #crossSystem = (import ./lib).systems.examples.x86_64-freebsd;
      overlays = [
        (_: prev: {
          pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
            (_: pprev: {
              pygobject3-test = pprev.pygobject3.overrideAttrs {
                propagatedBuildInputs = [
                  pprev.pycairo
                  (prev.gobject-introspection.overrideAttrs { depsTargetTargetPropagated = [ ]; })
                ];
              };
            })
          ];
        })
      ];
    }).pkgs;
  pyr = pkgs.pkgsBuildHost.python3Packages.python.withPackages (pp: [ pp.pygobject3-test ]);
in
pkgs.pkgsBuildBuild.runCommand "test" { } ''
  "${pyr.interpreter}" -c "import gi" && touch "$out"
''
```
2024-11-07 23:44:23 +02:00
figsoda
ec8cb34358 treewide: fix typos 2022-12-17 19:39:44 -05:00
Artturin
40d493c5fb gobject-introspection: use overrideAttrs in the wrapper
this way we preserve all the attributes

gobject-introspection: use buildCommand and eval fixupPhase
2022-11-22 16:06:52 +02:00
Artturin
3fda065c6a gobject-introspection: inherit meta in the wrapper
meta isn't in drvAttrs because its a "passthru" attribute
2022-11-21 19:51:50 +02:00
Artturin
b2f9cd34e7 gobject-introspection: use wrapper.nix for the native package too
so we can propagate the dev output

during the build of i3ipc-glib with strictDeps enabled i noticed that
gobject-introspection was not being detected and it was due to
gobject-introspection path not being in the PKG_CONFIG_PATH variable

this commit makes gobject-introspection get detected when build==host
2022-11-09 20:58:38 +02:00
Artturin
740ebffd5a gobject-introspection: use lddtree instead of objdump as ldd wrapper
the wrong path was used in gir files because the format of objdump is
different from ldd so the regex in gobject-introspection doesn't work

https://gitlab.gnome.org/GNOME/gobject-introspection/-/blob/main/giscanner/shlibs.py#L42-57

  <namespace name="GLib"
             shared-library="/nix/store/pak6rr8wdnbwa1iq2ldvg8pa8zahl3r1-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0/lib/libgobject-2.0.so.0,/nix/store/pak6rr8wdnbwa1iq2ldvg8pa8zahl3r1-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0/lib/libglib-2.0.so.0"

objdump
gobject-introspection>   NEEDED               libgmodule-2.0.so.0
gobject-introspection>   NEEDED               libglib-2.0.so.0

ldd
gobject-introspection>  libgmodule-2.0.so.0 => /nix/store/ngm1wbwms13c2crsvrah2ypfj0b2yii5-glib-2.73.2/lib/libgmodule-2.0.so.0 (0x00007ffff7d6e000)
gobject-introspection>  libglib-2.0.so.0 => /nix/store/ngm1wbwms13c2crsvrah2ypfj0b2yii5-glib-2.73.2/lib/libglib-2.0.so.0 (0x00007ffff7c32000)
2022-09-07 21:24:08 +03:00
Artturin
8f40fcbb4c gobject-introspection: propagate self/targetself to avoid having to add gobject-introspection to buildInputs
i should probably move to use the wrapper when host != build and do the
canExecute things inside the wrapper.nix

then i could use gobject-introspection-unwrapped in it even when
host == build

void also adds gobject-introspection to makeDepends when its gir build
helper is used
2022-09-01 19:46:57 +03:00
Artturin
267ef1f2de gobject-introspection: wrapper: add .libs to LD_LIBRARY_PATH for emulator
fixes issues like
libdbusmenu-gtk3-aarch64-unknown-linux-gnu> /build/libdbusmenu-16.04.0/libdbusmenu-gtk/tmp-introspect2jhtiwwn/.libs/DbusmenuGtk3-0.4:
error while loading shared libraries: libdbusmenu-glib.so.4: cannot open shared object file: No such file or directory
in non-meson builds

i think the reason we need this in all non-meson builds is because of ./pkgs/development/libraries/gobject-introspection/absolute_shlib_path.patch

see: https://github.com/void-linux/void-packages/blob/master/srcpkgs/gobject-introspection/files/g-ir-scanner-qemuwrapper
c5a14f39a6/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.72.0.bb (L74)
2022-08-30 20:13:55 +03:00
Artturin
da1ea54ad8 gobject-introspection: use objdump -p instead of prelink-rtld
Commit msg of 767e0880d4
> gobject-introspection: replace prelink-rtld with objdump -p
>
> g-i internally processes the output with regexes, and seems
> happy with what objdump is printing. It only needs to resolve
> the library name as passed to the linker to the library file name.
> Also recursive resolution (that ldd is doing and objdump is not)
> is not necessary.

Additional context section of https://github.com/NixOS/nixpkgs/issues/183071
> prelink is dropped by openembedded, support for prelink is removed from glibc,
> and itself is effectively abandoned by the upstream (yocto project).
> I think we may as well drop it rather than fix it.
> However gobject-introspection now relies on it as a runtime linker for use in cross compilation, we have to find an alternative.
2022-07-28 00:09:35 +03:00
Artturin
6789222b1c Merge branch 'master' into staging-next 2022-07-22 18:23:16 +03:00
Artturin
d2e484dba2 gobject-introspection: fix .override when the wrapper is in use 2022-07-22 06:21:40 +03:00
Artturin
e8ecd00e46 gobject-introspection: override pkg-config variables in a setup hook
instead of substituteInPlace

fixes gtk2 because it needs g_ir_scanner to be a path
2022-07-14 07:14:41 +03:00
Artturin
eb829035c9 gobject-introspection: do not propagate target gobject-introspection in wrapper
broke modemmanager and some of its deps

libqmi-aarch64-unknown-linux-gnu>   GISCAN   Qmi-1.0.gir
libqmi-aarch64-unknown-linux-gnu> /build/libqmi-1.30.8/src/libqmi-glib/tmp-introspect2d8e4td2/.libs/Qmi-1.0: error while loading shared libraries: libqmi-glib.so.5: cannot open shared object file: No such file or directory
libqmi-aarch64-unknown-linux-gnu> Command '['/nix/store/wr4mjr9gadvwz6c88fgz4ldzn21sxkpz-qemu-7.0.0/bin/qemu-aarch64', '/build/libqmi-1.30.8/src/libqmi-glib/tmp-introspect2d8e4td2/.libs/Qmi-1.0', '--introspect-dump=/build/libqmi-1.30.8/src/libqmi-glib/tmp-introspect2d8e4td2/functions.txt,/build/libqmi-1.30.8/src/libqmi-glib/tmp-introspect2d8e4td2/dump.xml']' returned non-zero exit status 127.
libqmi-aarch64-unknown-linux-gnu> make[4]: *** [/nix/store/jwpcacx8sd4vj0ckk5wxrzn2iwcpp35s-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0-dev/share/gobject-introspection-1.0/Makefile.introspection:156: Qmi-1.0.gir] Error 1
2022-07-12 15:10:40 +03:00
Artturin
a83d2f7c91 gobject-introspection: cross improvements
gobject-introspection: copy $dev/share/gobj.../tests when cross-compiling

gobject-introspection: add giscanner-ignore-error-return-codes-from-ldd-wrapper patch

polkit-aarch64-unknown-linux-gnu> [102/104] Generating src/polkitagent/PolkitAgent-1.0.gir with a custom command
polkit-aarch64-unknown-linux-gnu> FAILED: src/polkitagent/PolkitAgent-1.0.gir
polkit-aarch64-unknown-linux-gnu> <storepath>-gobject-introspection-wrapped-1.72.0-dev/bin/g-ir-scanner --no-libtool --namespace=PolkitAgent --nsversion=1.0 --warn-all --output src/polkitagent/PolkitAgent-1.0.gir --c-include=polkitagent/polkitagent.h -
D_POLKIT_AGENT_COMPILATION -D_POLKIT_COMPILATION -I/build/source/src/polkitagent -I/build/source/build/src/polkitagent -I/build/source/. -I/build/source/build/. -I/build/source/src/. -I/build/source/build/src/. --filelist=/build/source/build/src/polkitagent/libpolkit-agent-1.so.0.0.0
.p/PolkitAgent_1.0_gir_filelist --include=Gio-2.0 --include-uninstalled=src/polkit/Polkit-1.0.gir --pkg-export=polkit-agent-1 --cflags-begin -DHAVE_CONFIG_H -I/build/source/. -I/build/source/build/. -I/build/source/src/. -I/build/source/build/src/. -I/nix/store/lqncny8acp6hkclsgbfnrb
65i9hscsmn-expat-aarch64-unknown-linux-gnu-2.4.8-dev/include -I<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2-dev/include/gio-unix-2.0 -I<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2-dev/include -I/nix/store/qm1wa
x4c7sgf5h3b6dhspxb5miayjyc9-glib-aarch64-unknown-linux-gnu-2.72.2-dev/include/glib-2.0 -I<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2/lib/glib-2.0/include -I<storepath>-gobject-introspection-aarch64-unknown-linux-gn
u-1.72.0-dev/include/gobject-introspection-1.0 --cflags-end --add-include-path=<storepath>-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0-dev/share/gir-1.0 --add-include-path=/build/source/build/src/polkit -L/build/source/build/src/polkitagent
--library polkit-agent-1 -L/build/source/build/src/polkit -L<storepath>-expat-aarch64-unknown-linux-gnu-2.4.8/lib --extra-library=expat -L<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2/lib --extra-library=gio-2.0 --ex
tra-library=gobject-2.0 --extra-library=glib-2.0 -L<storepath>-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0/lib --extra-library=girepository-1.0 --sources-top-dirs /build/source/subprojects/ --sources-top-dirs /build/source/build/subprojects/
polkit-aarch64-unknown-linux-gnu> g-ir-scanner: link: aarch64-unknown-linux-gnu-gcc -o /build/source/build/tmp-introspectzp2ldkyk/PolkitAgent-1.0 /build/source/build/tmp-introspectzp2ldkyk/PolkitAgent-1.0.o -L. -Wl,-rpath,. -Wl,--no-as-needed -L/build/source/build/src/polkitagent -Wl
,-rpath,/build/source/build/src/polkitagent -L/build/source/build/src/polkit -Wl,-rpath,/build/source/build/src/polkit -L<storepath>-expat-aarch64-unknown-linux-gnu-2.4.8/lib -Wl,-rpath,<storepath>-expat-aarch64-unknown-
linux-gnu-2.4.8/lib -L<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2/lib -Wl,-rpath,<storepath>-glib-aarch64-unknown-linux-gnu-2.72.2/lib -L<storepath>-gobject-introspection-aarch64-unk
nown-linux-gnu-1.72.0/lib -Wl,-rpath,<storepath>-gobject-introspection-aarch64-unknown-linux-gnu-1.72.0/lib -lpolkit-agent-1 -lexpat -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lgirepository-1.0 -L<storepath>-glib-aarch64-unknow
n-linux-gnu-2.72.2/lib -lgio-2.0 -lgobject-2.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0
polkit-aarch64-unknown-linux-gnu> Traceback (most recent call last):
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-gobject-introspection-wrapped-1.72.0-dev/bin/.g-ir-scanner-wrapped", line 99, in <module>
polkit-aarch64-unknown-linux-gnu>     sys.exit(scanner_main(sys.argv))
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-gobject-introspection-wrapped-1.72.0/lib/gobject-introspection/giscanner/scannermain.py", line 646, in scanner_main
polkit-aarch64-unknown-linux-gnu>     shlibs = create_binary(transformer, options, args)
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-gobject-introspection-wrapped-1.72.0/lib/gobject-introspection/giscanner/scannermain.py", line 471, in create_binary
polkit-aarch64-unknown-linux-gnu>     shlibs = resolve_shlibs(options, binary, options.libraries)
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-gobject-introspection-wrapped-1.72.0/lib/gobject-introspection/giscanner/shlibs.py", line 179, in resolve_shlibs
polkit-aarch64-unknown-linux-gnu>     _resolve_non_libtool(options, binary, non_libtool))
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-gobject-introspection-wrapped-1.72.0/lib/go
bject-introspection/giscanner/shlibs.py", line 112, in _resolve_non_libtool
polkit-aarch64-unknown-linux-gnu>     output = subprocess.check_output(args)
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-python3-3.10.5/lib/python3.10/subprocess.py", line 420, in check_output
polkit-aarch64-unknown-linux-gnu>     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
polkit-aarch64-unknown-linux-gnu>   File "<storepath>-python3-3.10.5/lib/python3.10/subprocess.py", line 524, in run
polkit-aarch64-unknown-linux-gnu>     raise CalledProcessError(retcode, process.args,
polkit-aarch64-unknown-linux-gnu> subprocess.CalledProcessError: Command '['<storepath>-prelink-unstable-2019-06-24/bin/prelink-rtld', '/build/source/build/tmp-introspectzp2ldkyk/PolkitAgent-1.0']' returned non-zero exit status 127.
polkit-aarch64-unknown-linux-gnu> [103/104] Generating src/polkit/Polkit-1.0.typelib with a custom command
polkit-aarch64-unknown-linux-gnu> ninja: build stopped: subcommand failed.

exit status 127

gobject-introspection: this should fix pkgsMusl pkgsStatic

by not putting `/nix/store/iw35xj69w190w7vw17l8mac8srg0vpyz-gobject-introspection-static-x86_64-unknown-linux-musl-1.72.0.drv`

in their dependency tree when gobject-introspection is in
nativeBuildInputs ex .#pkgsStatic.libjxl

gobject-introspection: pc file: use binaries from path instead of a abs path to them

fixes issues in networkmanager and some other packages
```
gi._error.GError: g-invoke-error-quark: Could not locate g_option_error_quark: /nix/store/...-glib-aarch64-unknown-linux-gnu-2.72.2/lib/libglib-2.0.so.0:
cannot open shared object file: No such file or directory (1)
```

see comment

gobject-introspection: propagate gobject-introspection-unwrapped in wrapper

with this it is no longer needed to put gobject-introspection in
buildInputs in addition to nativeBuildInputs
2022-07-07 21:18:23 +03:00
Artturin
79d349b087 gobject-introspection: support cross-compilation
used the following as references

https://github.com/void-linux/void-packages/blob/master/srcpkgs/gobject-introspection

and

https://git.busybox.net/buildroot/tree/package/gobject-introspection

thanks void and buildroot
2022-06-11 04:51:18 +03:00