Skip to content

Unwanted mingw dependencies when building with MSVC #29609

@tleedjarv

Description

@tleedjarv

I'm not sure if this is an issue with packages or an issue with configuration.

The issue
Packages conf-cairo, conf-gtk3 and conf-pkg-config bring in mingw dependencies for an MSVC build.

It looks like this:

opam install lablgtk3 ocamlfind

<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[lablgtk3.3.1.5] synchronised (no changes)

The following actions will be performed:
=== recompile 1 package
  - recompile mingw-w64-shims             0.2.0          [uses conf-mingw-w64-gcc-i686]
=== install 15 packages
  - install   cairo2                      0.6.5 (pinned) [required by lablgtk3]
  - install   camlp-streams               5.0.1          [required by lablgtk3]
  - install   conf-cairo                  1              [required by cairo2]
  - install   conf-gtk3                   18             [required by lablgtk3]
  - install   conf-mingw-w64-cairo-i686   1              [required by conf-cairo]
  - install   conf-mingw-w64-cairo-x86_64 1              [required by conf-cairo]
  - install   conf-mingw-w64-gcc-i686     1              [required by conf-mingw-w64-gtk3-i686]
  - install   conf-mingw-w64-gtk3-i686    1              [required by conf-gtk3]
  - install   conf-mingw-w64-gtk3-x86_64  1              [required by conf-gtk3]
  - install   conf-pkg-config             4              [required by conf-gtk3]
  - install   csexp                       1.5.2          [required by dune-configurator]
  - install   dune                        3.22.0         [required by lablgtk3]
  - install   dune-configurator           3.22.0         [required by cairo2]
  - install   lablgtk3                    3.1.5 (pinned)
  - install   ocamlfind                   1.9.8

The following system packages will first need to be installed:
    mingw64-i686-cairo mingw64-i686-gcc-core mingw64-i686-gtk3 mingw64-x86_64-cairo mingw64-x86_64-gtk3 pkgconf

(side note: not sure why 32-bit deps are pulled in for a 64-bit build but this might a setup-ocaml issue)

In addition to pulling in mingw dependencies, some of the conf packages execute pkgconf with mingw personality, which also doesn't apply here.

Expected
This is the output that I'd expect to see when building with MSVC:

opam install lablgtk3 ocamlfind

<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[lablgtk3.3.1.5] synchronised (no changes)

The following actions will be performed:
=== recompile 1 package
  - recompile mingw-w64-shims   0.2.0          [uses conf-pkg-config]
=== install 10 packages
  - install   cairo2            0.6.5 (pinned) [required by lablgtk3]
  - install   camlp-streams     5.0.1          [required by lablgtk3]
  - install   conf-cairo        1 (pinned)     [required by cairo2]
  - install   conf-gtk3         18 (pinned)    [required by lablgtk3]
  - install   conf-pkg-config   4 (pinned)     [required by conf-gtk3]
  - install   csexp             1.5.2          [required by dune-configurator]
  - install   dune              3.22.0         [required by lablgtk3]
  - install   dune-configurator 3.22.0         [required by cairo2]
  - install   lablgtk3          3.1.5 (pinned)
  - install   ocamlfind         1.9.8

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>

The conf-* packages are pinned here as a result of me bluntly patching them locally to remove mingw dependencies. You can see that here: https://github.com/bcpierce00/unison/blob/f925b975130d879478590fa3b64d9bde969864e6/.github/workflows/CI.yml#L406-L483

For an example of this working without the unneeded mingw dependencies, see: https://github.com/bcpierce00/unison/actions/runs/23621816860/job/68802652911#step:17:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions