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)
Change History (13)
Changed 11 years ago by maverickwoo (Maverick Woo)
comment:1 Changed 11 years ago by larryv (Lawrence Velázquez)
Owner: | changed from macports-tickets@… to devans@… |
---|
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: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 the build gtkmm again
sudo port -n upgrade --force cairomm pangomm sudo port -f install gtkmm
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: | new → closed |
Summary: | gtkmm @2.24.3_2 - triggers rebuild due to broken port → gtkmm @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 follow-up: 11 Changed 11 years ago by neverpanic (Clemens Lang)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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.
comment:11 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: 1While manually running
sudo port upgrade --enforce-variants pangomm -x11 +quartzworks, 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 adefault_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: | reopened → closed |
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.
Thanks. In the future, please Cc relevant port maintainers.