Opened 8 months ago

Closed 8 months ago

Last modified 7 months ago

#61397 closed defect (invalid)

GIMP With +no_x11 Wants To Install Xorg

Reported by: ensafi (Alex (Eskandar) Ensafi) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.6.3
Keywords: highsierra Cc: dbevans (David B. Evans)
Port: gimp2

Description (last modified by ensafi (Alex (Eskandar) Ensafi))

I tried to install the latest GIMP port, gimp2 @2.10.22, on High Sierra. Aside from being confusing that "gimp" is version 2.10.20 and "gimp2" is 2.10.22, my variants.conf contains "-x11 +no_x11 +quartz" and GIMP still wanted to install Xorg. Here is a full list of dependencies triggered by gimp2:

% sudo port install gimp2
--->  Computing dependencies for gimp2
The following dependencies will be installed: 
 OpenBLAS
 SuiteSparse_AMD
 SuiteSparse_CAMD
 SuiteSparse_CCOLAMD
 SuiteSparse_CHOLMOD
 SuiteSparse_COLAMD
 SuiteSparse_UMFPACK
 SuiteSparse_config
 XviD
 aalib
 appstream-glib
 atk
 autoconf
 autoconf-archive
 automake
 babl
 boehmgc
 brotli
 bzip2
 cairo
 cargo
 cmake
 curl
 cython_select
 dav1d
 db48
 dbus-glib
 desktop-file-utils
 docbook-xml
 docbook-xml-4.1.2
 docbook-xml-4.2
 docbook-xml-4.3
 docbook-xml-4.4
 docbook-xml-4.5
 docbook-xml-5.0
 docbook-xsl-nons
 exiv2
 ffmpeg
 fftw-3
 fontconfig
 freetype
 fribidi
 gawk
 gd2
 gdbm
 gdk-pixbuf2
 gegl
 gexiv2
 ghostscript
 giflib
 gimp-help-en
 glib-networking
 glib2
 gnome-common
 gobject-introspection
 graphite2
 graphviz
 gsettings-desktop-schemas
 gtk-doc
 gtk-osx-application-common-gtk2
 gtk-osx-application-gtk2
 gtk2
 gtk3
 gts
 harfbuzz
 hicolor-icon-theme
 ilmbase
 intltool
 iso-codes
 itstool
 jasper
 jbig2dec
 jbigkit
 json-c
 json-glib
 kerberos5
 lame
 libLASi
 libarchive
 libass
 libbluray
 libcomerr
 libcxx
 libde265
 libedit
 libepoxy
 libgcc
 libgcc10
 libglade2
 libheif
 libidn
 libmng
 libmodplug
 libmypaint
 libnetpbm
 libogg
 libopus
 libpaper
 libpixman
 libpng
 libproxy
 libpsl
 libraw
 librsvg
 libsdl2
 libsoup
 libspiro
 libssh2
 libstemmer
 libtheora
 libtool
 libuv
 libvorbis
 libvpx
 libwmf
 libyaml
 llvm-9.0
 llvm_select
 luajit
 lzo2
 mesa
 meson
 metis
 mypaint-brushes1
 ninja
 nosetests_select
 nspr
 nss
 openexr
 openjpeg
 openssl
 ossp-uuid
 p5.28-clone
 p5.28-cpan-meta
 p5.28-cpan-meta-requirements
 p5.28-cpan-meta-yaml
 p5.28-data-dump
 p5.28-encode
 p5.28-encode-locale
 p5.28-file-listing
 p5.28-getopt-long
 p5.28-html-form
 p5.28-html-parser
 p5.28-html-tagset
 p5.28-http-cookies
 p5.28-http-daemon
 p5.28-http-date
 p5.28-http-message
 p5.28-http-negotiate
 p5.28-inc-latest
 p5.28-io-html
 p5.28-io-socket-ip
 p5.28-io-socket-ssl
 p5.28-libwww-perl
 p5.28-lwp-mediatypes
 p5.28-module-build
 p5.28-module-metadata
 p5.28-mozilla-ca
 p5.28-net-http
 p5.28-net-libidn
 p5.28-net-ssleay
 p5.28-pathtools
 p5.28-perl-ostype
 p5.28-pod-escapes
 p5.28-pod-simple
 p5.28-podlators
 p5.28-scalar-list-utils
 p5.28-socket
 p5.28-sub-name
 p5.28-time-local
 p5.28-timedate
 p5.28-try-tiny
 p5.28-uri
 p5.28-version
 p5.28-www-robotrules
 p5.28-xml-parser
 pango
 pcre
 perl5
 perl5.28
 pkgconfig
 poly2tri-c
 poppler
 poppler-data
 py27-cairo
 py27-cython
 py27-gobject
 py27-gobject3
 py27-nose
 py27-numpy
 py27-pygtk
 py27-setuptools
 py38-anytree
 py38-beaker
 py38-cairo
 py38-gobject3
 py38-libxml2
 py38-lxml
 py38-mako
 py38-markdown
 py38-markupsafe
 py38-pygments
 py38-setuptools
 py38-six
 pygments_select
 python27
 python2_select
 python38
 python3_select
 python_select
 readline
 rust
 shared-mime-info
 soxr
 speex
 sqlite3
 urw-fonts
 vala
 w3m
 webp
 x264
 x265
 xar
 xdg-utils
 xmlcatmgr
 xorg-libX11
 xorg-libXau
 xorg-libXdamage
 xorg-libXdmcp
 xorg-libXext
 xorg-libXfixes
 xorg-libXi
 xorg-libXmu
 xorg-libXt
 xorg-libXxf86vm
 xorg-libice
 xorg-libpthread-stubs
 xorg-libsm
 xorg-libxcb
 xorg-xcb-proto
 xorg-xorgproto

Change History (13)

comment:1 Changed 8 months ago by kencu (Ken)

If you really have this in variants.conf:

-x11 +no+x11 +quartz

try changing it to just this:

+quartz

If there is anything already installed, you probably should just uninstall it, unless you're sure you haven't polluted the system at all.

Some ports default to install +x11 +quartz and don't mess with them if they do. Just leave them alone.

I don't generally put anything in variants.conf, and from a clean slate, if I just do this:

sudo port -v install gimp2 +quartz

then all goes well.

comment:2 Changed 8 months ago by ryandesign (Ryan Schmidt)

Cc: dbevans added

If you do want to use +quartz, then you absolutely should put it into variants.conf, because you have decide for your entire MacPorts installation whether you will use +quartz or +x11 (excluding of course those ports that can support both at the same time).

It is certainly possible that one of gimp's dependencies requires X11, and if that's so, then there's nothing we can really do to fix it.

If you can identify which of gimp's dependencies is depending on X11, and you believe that it does not need to do that, let us know.

comment:3 in reply to:  description Changed 8 months ago by ryandesign (Ryan Schmidt)

Replying to ensafi:

my variants.conf contains "-x11 +no+x11 +quartz"

If that's really what you wrote in variants.conf, then it's a typo. "+no+x11" should have been "+no_x11", however "no_x11" is a variant name we used over a decade ago, and no ports use it anymore, so there's no need to list it anymore.

comment:4 Changed 8 months ago by ensafi (Alex (Eskandar) Ensafi)

Description: modified (diff)

comment:5 Changed 8 months ago by ensafi (Alex (Eskandar) Ensafi)

That was a typo. I just updated the original post to avoid confusion. My variants.conf contained the correct options "-x11 +no_x11 +quartz" (as it has for several years) and I also tried removing them and specifying +quartz only on the command-line. It still tried to install Xorg.

Last edited 8 months ago by ensafi (Alex (Eskandar) Ensafi) (previous) (diff)

comment:6 Changed 8 months ago by kencu (Ken)

look for anything you already have installed that has x11 in it:

port -v installed | grep x11

and unless it is one of the few ports that "need" to install as +x11 +quartz then deactivate it and try gimp2 again.

pango for example wants to install as both (we should just remove the x11 and quartz variants probably I guess and let it install itself with both):

pango @1.42.4_2 (x11)
Variants:             [+]quartz, universal, [+]x11

and what happens if you FORCE pango to install -x11 +quartz I am not sure. Never tried to go down that path.

comment:7 Changed 8 months ago by ensafi (Alex (Eskandar) Ensafi)

I just checked for completeness sake, and X11 is not (and never has been) installed. I have always avoided X11 in MacPorts. This is a new issue. GIMP has been a native macOS app for a long time, and X11 is only required for the Linux build. After doing a "selfupdate" and "upgrade outdated" things broke. Before this, GIMP was installed without X11 for a very long time, and it survived at least a few MacPorts and a couple of macOS updates.

As for "pango" it does not try to install Xorg, as you can see here:

sudo port install pango -x11 +quartz
--->  Computing dependencies for pango
The following dependencies will be installed: 
 autoconf
 automake
 brotli
 bzip2
 cairo
 db48
 fontconfig
 freetype
 fribidi
 gdbm
 glib2
 gobject-introspection
 graphite2
 harfbuzz
 libedit
 libpixman
 libpng
 libtool
 openssl
 ossp-uuid
 pcre
 perl5.28
 pkgconfig
 py38-beaker
 py38-mako
 py38-markdown
 py38-markupsafe
 py38-setuptools
 python38
 python3_select
 python_select
 readline
 sqlite3

The unnecessary dependency on Xorg seems to be something peculiar to the "gimp2" package.

By the way, I completely removed MacPorts from my system and installed it from scratch. Nothing changed with respect to GIMP and Xorg. This is what's currently installed:

  curl-ca-bundle @7.73.0_0 (active) platform='darwin 17' archs='noarch' date='2020-10-31T20:49:45-0700'
  dbus @1.12.16_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:23-0700'
  emacs-mac-app @8.0_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:15-0700'
  expat @2.2.10_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:21-0700'
  gettext @0.19.8.1_2 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:32-0700'
  gmp @6.2.0_1 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:26-0700'
  gnutls @3.6.15_0+doc (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:57-0700'
  icu @67.1_2 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:47-0700'
  jansson @2.13.1_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:00-0700'
  jpeg @9d_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:01-0700'
  lcms2 @2.11_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:07-0700'
  libffi @3.3_1 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:45-0700'
  libiconv @1.16_1 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:26-0700'
  libidn2 @2.3.0_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:40-0700'
  libtasn1 @4.16.0_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:42-0700'
  libunistring @0.9.10_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:38-0700'
  libxml2 @2.9.10_1 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:52-0700'
  libxslt @1.1.34_2 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:54-0700'
  lz4 @1.9.2_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:02-0700'
  ncurses @6.2_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:27-0700'
  nettle @3.6_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:45-0700'
  p11-kit @0.23.21_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:55-0700'
  tiff @4.1.0_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:04-0700'
  xz @5.2.5_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:50-0700'
  zlib @1.2.11_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:49:51-0700'
  zstd @1.4.5_0 (active) platform='darwin 17' archs='x86_64' date='2020-10-31T20:50:03-0700'
Last edited 8 months ago by ensafi (Alex (Eskandar) Ensafi) (previous) (diff)

comment:8 Changed 8 months ago by kencu (Ken)

do you know about the "rdeps" command?

port rdeps gimp2 +quartz

might show you where things are getting pulled in.

comment:9 in reply to:  8 Changed 8 months ago by ensafi (Alex (Eskandar) Ensafi)

Replying to kencu:

do you know about the "rdeps" command?

port rdeps gimp2 +quartz

might show you where things are getting pulled in.

Thank you, that was a very useful tip, and it looks like libepoxy is the culprit:

      libepoxy
        xorg-util-macros
        mesa
          gindent
          py27-libxml2
          xorg-xorgproto
          xorg-libxcb
            xorg-libXau
            xorg-libXdmcp
            xorg-xcb-proto
            xorg-libpthread-stubs
          xorg-libX11
            xorg-xtrans
          xorg-libXext
          xorg-libXdamage
            xorg-libXfixes
          xorg-libXi
          xorg-libXmu
            xorg-libXt
              xorg-libsm
                xorg-libice
          xorg-libXxf86vm

comment:10 Changed 8 months ago by kencu (Ken)

so the deal is libepoxy requires a bunch of deps to build but not to run. It's a bit odd, but that's the way it is.

You shouldn't need to install all those libepoxy deps, esp mesa which brings in the motherload, if you're just installing a prebuilt binary.

But if you're building a non-standard variant, you might need to.

assuming you're installing into /opt/local and can use prebuilt binaries, try first just seeing if you can install libepoxy as a binary:

sudo port -v install libepoxy

and if you get that in without any further hassles, then try your

sudo port -v install gimp2 +quartz
Last edited 8 months ago by kencu (Ken) (previous) (diff)

comment:11 in reply to:  10 Changed 8 months ago by ensafi (Alex (Eskandar) Ensafi)

Replying to kencu:

so the deal is libepoxy requires a bunch of deps to build but not to run. It's a bit odd, but that's the way it is.

You shouldn't need to install all those libepoxy deps, esp mesa which brings in the motherload, if you're just installing a prebuilt binary.

But if you're building a non-standard variant, you might need to.

assuming you're installing into /opt/local and can use prebuilt binaries, try first just seeing if you can install libepoxy as a binary:

sudo port -v install libepoxy

and if you get that in without any further hassles, then try your

sudo port -v install gimp2 +quartz

So libepoxy installed on its own without any xorg dependencies, but gimp2 still tried to pull in xorg libraries via mesa. The real culprit is mesa, it seems, and I'm not sure why the dependency hierarchy showed libepoxy <- mesa <- xorg-* unless I did not interpret it correctly. In any case, I simply can't install gimp2 without triggering several xorg libraries. At least it's not the whole xorg display server, so I can live with it, but something's not right with gimp2's dependency on mesa in native macOS -x11 +no_x11 +quartz mode.

Last edited 8 months ago by ensafi (Alex (Eskandar) Ensafi) (previous) (diff)

comment:12 Changed 8 months ago by ryandesign (Ryan Schmidt)

Resolution: invalid
Status: newclosed

port rdeps by default lists each dependency only once, even if multiple ports depend on it. For example, port rdeps gimp2 +quartz shows that libepoxy has a (build) dependency on mesa, and you would think that this means that you wouldn't need mesa if you already have libepoxy installed. But what it does not show is that mesa is also needed as a library dependency of gtk3, which is a dependency of gimp2. There is a comment in the mesa port explaining:

# mesa required to configure both +x11, +quartz (not just +x11) due to their dependency on libepoxy
depends_lib-append  port:mesa

See #55967 for more discussion on why that is needed.

So unfortunately this is working as intended; there is nothing for us to fix. If you want gtk3 not to require mesa, or mesa not to require X11, take it up with the developers of those programs.

comment:13 Changed 7 months ago by ensafi (Alex (Eskandar) Ensafi)

I don't have an opinion about GTK3 or MESA. All I know is that the GIMP website https://www.gimp.org/downloads/ states, "Since the 2.8.2 version, GIMP runs on OSX natively. No X11 environment is required." The dependency on X11 libraries contradicts this claim. Clearly, something is not right.

Note: See TracTickets for help on using tickets.