Opened 11 years ago

Closed 11 years ago

#39320 closed defect (fixed)

gtkmm @2.24.3_2 - triggers rebuild due to implicit pangomm variant mismatch

Reported by: maverickwoo (Maverick Woo) Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version: 2.1.3
Keywords: Cc: cooljeanius (Eric Gallager)
Port: gtkmm

Description

The first build succeeded, and then it immediately triggered a rebuild. Log file will be attached. (I should note that my variants.conf contains "+no_x11 -x11 +quartz" if it matters---I am trying to avoid X and use quartz as much as possible.) Output of port install gtkmm after clean:

--->  Computing dependencies for gtkmm
--->  Fetching archive for gtkmm
--->  Attempting to fetch gtkmm-2.24.3_2.darwin_11.x86_64.tbz2 from http://packages.macports.org/gtkmm
--->  Attempting to fetch gtkmm-2.24.3_2.darwin_11.x86_64.tbz2.rmd160 from http://packages.macports.org/gtkmm
--->  Installing gtkmm @2.24.3_2
--->  Activating gtkmm @2.24.3_2
--->  Cleaning gtkmm
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  Found 22 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in order
     gtkmm @2.24.3 
--->  Computing dependencies for gtkmm
--->  Cleaning gtkmm
--->  Scanning binaries for linking errors: 100.0%
--->  Found 22 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in order
     gtkmm @2.24.3 
--->  Computing dependencies for gtkmm
--->  Cleaning gtkmm
--->  Deactivating gtkmm @2.24.3_2
--->  Cleaning gtkmm
--->  Uninstalling gtkmm @2.24.3_2
--->  Cleaning gtkmm
--->  Computing dependencies for gtkmm
--->  Fetching distfiles for gtkmm
--->  Verifying checksum(s) for gtkmm
--->  Extracting gtkmm
--->  Applying patches to gtkmm
--->  Configuring gtkmm
--->  Building gtkmm
Error: org.macports.build for port gtkmm returned: command execution failed
Please see the log file for port gtkmm for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_gtkmm/gtkmm/main.log
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

Attachments (1)

main.log (27.1 KB) - added by maverickwoo (Maverick Woo) 11 years ago.

Download all attachments as: .zip

Change History (13)

Changed 11 years ago by maverickwoo (Maverick Woo)

Attachment: main.log added

comment:1 Changed 11 years ago by larryv (Lawrence Velázquez)

Owner: changed from macports-tickets@… to devans@…

Thanks. In the future, please Cc relevant port maintainers.

comment:2 Changed 11 years ago by cooljeanius (Eric Gallager)

Error:

:info:build libtool: link: cannot find the library `/opt/local/lib/libXrender.la' or unhandled argument `/opt/local/lib/libXrender.la'
:info:build make[2]: *** [extra_defs_gen/generate_extra_defs] Error 1
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_gtkmm/gtkmm/work/gtkmm-2.24.3/tools'
:info:build make[1]: *** [all-recursive] Error 1
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_gtkmm/gtkmm/work/gtkmm-2.24.3'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_gtkmm/gtkmm/work/gtkmm-2.24.3'
:info:build Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_gtkmm/gtkmm/work/gtkmm-2.24.3" && /usr/bin/make -j4 -w all 
:info:build Exit code: 2

OP, does the file /opt/local/lib/libXrender.la actually exist on your system? On my system it comes from xrender:

eric-gallagers-macbook-pro:~ root# port provides /opt/local/lib/libXrender.la
/opt/local/lib/libXrender.la is provided by: xrender

...which should have been dragged in as a recursive dependency:

eric-gallagers-macbook-pro:~ root# port rdeps gtkmm
The following ports are dependencies of gtkmm @2.24.3_2+universal:
...
  graphviz
...
    pango
      cairo
...
        xrender

Perhaps an explicit dependency on xrender should be added?

comment:3 Changed 11 years ago by maverickwoo (Maverick Woo)

xrender was never installed because I explicitly set up my variants.conf to avoid X as much as possible. On my system, "port rdeps gtkmm @2.24.3_2" does not list xrender as a dependency.

I hope I am not wrong here, but from the output, apparently gtkmm builds just fine in the first pass without xrender...

comment:4 Changed 11 years ago by dbevans (David B. Evans)

What variants are you using to avoid X11 ? Should be +no_x11 -x11 +quartz for quartz rendering

gtkmm just provides bindings to gtk2 and its dependendents so you need to make sure they are all built with the correct variants. In this case xrender is a dependency of cairo when it is built for X11.

port rdeps gtkmm

should show no X11 dependencies if your variants.conf is set as above.

comment:5 Changed 11 years ago by maverickwoo (Maverick Woo)

I have indeed specified those variants in my variants.conf from day 1. So, all the ports I have already installed are "as quartz as it gets". The output of "ports rdeps gtkmm" does not include xrender or any X dependencies (that I know of).

I actually spent a bit more time tonight. It turns out that this dependency is from pangomm's libpangomm-1.4.la, which lists libXrender.la as a dependency... Does this make the problem more tractable? Thanks.

comment:6 Changed 11 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:7 Changed 11 years ago by dbevans (David B. Evans)

Yes, thanks. I was able to reproduce the problem by first installing gtkmm with variants for +x11 and then trying again with variants for +quartz as you are doing. This results in pango cairo gtk2 being rebuilt for +quartz but cairomm and pangomm are not rebuilt because they don't have a +quartz variant. Thus a dependency in pangomm that was created by the +x11 build can persist in the +quartz build.

You can probably fix your problem by forcing a rebuild of cairomm and pangomm before trying to build gtkmm again

sudo port -n upgrade --force cairomm pangomm
sudo port -f install gtkmm
Last edited 11 years ago by dbevans (David B. Evans) (previous) (diff)

comment:8 Changed 11 years ago by maverickwoo (Maverick Woo)

The two commands above did not fix the problem, but they did give me the right hint: this is a case where I need build from source. After "port uninstall pangomm", I did a "port install -s pangomm". I verified that this gives me a libpangomm-1.4.la that no longer contains any dependency on libXrender.la. Afterwards, I was able to install gtkmm just fine. I am happily running inkscape on quartz now. Thanks all!

comment:9 Changed 11 years ago by dbevans (David B. Evans)

Resolution: fixed
Status: newclosed
Summary: gtkmm @2.24.3_2 - triggers rebuild due to broken portgtkmm @2.24.3_2 - triggers rebuild due to implicit pangomm variant mismatch

The lesson to remember here is that, at this time, the available binary archives are only built (if at all) for a given port's default variants. In the case of pangomm this is effectively +x11 because that's pango's default.

I have committed a fix in r106728 that:

  • adds variants +quartz +x11 (default +x11) to cairomm, pangomm and gtkmm since these ports effectively inherit the variants of their dependents.
  • adds checks that require variants of a given port's dependents to match its own variants

Thanks for your report and for your help working through this problem.

comment:10 Changed 11 years ago by neverpanic (Clemens Lang)

Resolution: fixed
Status: closedreopened

This breaks the upgrade path for all users that have pango and cairo installed with +quartz, requiring manual intervention:

--->  Computing dependencies for pangomm
--->  Fetching archive for pangomm
Error: org.macports.archivefetch for port pangomm returned: path:lib/pkgconfig/cairo.pc:cairo cairomm pango must be installed without +quartz.
Please see the log file for port pangomm for details:
    /opt/local/var/macports/logs/_opt_dports_x11_pangomm/pangomm/main.log
Error: Unable to upgrade port: 1

While manually running

sudo port upgrade --enforce-variants pangomm -x11 +quartz

works, it would be easier, if the port checked whether pango or cairo were already installed and changed its default_variants depending on their installed variants. After all, there's no point in setting a default_variant that will not be installable on a user's system.

Last edited 11 years ago by neverpanic (Clemens Lang) (previous) (diff)

comment:11 in reply to:  10 Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to cal@…:

This breaks the upgrade path for all users that have pango and cairo installed with +quartz, requiring manual intervention:

--->  Computing dependencies for pangomm
--->  Fetching archive for pangomm
Error: org.macports.archivefetch for port pangomm returned: path:lib/pkgconfig/cairo.pc:cairo cairomm pango must be installed without +quartz.
Please see the log file for port pangomm for details:
    /opt/local/var/macports/logs/_opt_dports_x11_pangomm/pangomm/main.log
Error: Unable to upgrade port: 1

While manually running

sudo port upgrade --enforce-variants pangomm -x11 +quartz

works, it would be easier, if the port checked whether pango or cairo were already installed and changed its default_variants depending on their installed variants. After all, there's no point in setting a default_variant that will not be installable on a user's system.

Made a separate issue for this: #39397

comment:12 Changed 11 years ago by dbevans (David B. Evans)

Resolution: fixed
Status: reopenedclosed

Fix committed in r107000 that allows cairo and pango to have both +quartz and +x11 variants when building cairomm, pangomm, gtkmm. This should fix the problem or at least it does so for me. Feel free to reopen if I've missed something.

Note: See TracTickets for help on using tickets.