Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#37416 closed defect (invalid)

gettext +universal upgrade staging error

Reported by: egor7@… Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: haspatch Cc: cooljeanius (Eric Gallager), dershow, halkola@…, j@…
Port: gettext

Description

I've got the next error while upgrading gettext port:

--->  Staging gettext into destroot
Error: org.macports.destroot for port gettext returned: /opt/local/lib/libgettextlib.la differs in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_gettext/gettext/work/destroot-i386 and /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_gettext/gettext/work/destroot-x86_64 and cannot be merged

I've done cleaning but error still is the same.

Attachments (4)

main.log (2.3 MB) - added by egor7@… 11 years ago.
i386_libgettextlib.la (1.0 KB) - added by egor7@… 11 years ago.
x86_64_libgettextlib.la (1.0 KB) - added by egor7@… 11 years ago.
gettext-disable-openmp.diff (495 bytes) - added by ryandesign (Ryan Carsten Schmidt) 11 years ago.
proposed patch

Change History (24)

comment:1 Changed 11 years ago by egor7@…

Cc: egor7@… added

Cc Me!

Changed 11 years ago by egor7@…

Attachment: main.log added

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

Cc: egall@… added

Cc Me!

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

I ran into this issue, too

comment:4 Changed 11 years ago by jmroot (Joshua Root)

Cc: egor7@… removed
Owner: changed from macports-tickets@… to ryandesign@…
Summary: gettext upgrade staging errorgettext +universal upgrade staging error

Please remember to Cc the maintainer.

comment:5 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Status: newassigned

Please attach the two libgettextlib.la files so that I can see how they differ.

comment:6 Changed 11 years ago by egor7@…

diff x86_64_libgettextlib.la i386_libgettextlib.la 
17c17
< inherited_linker_flags=' '
---
> inherited_linker_flags='  -fopenmp'

Changed 11 years ago by egor7@…

Attachment: i386_libgettextlib.la added

Changed 11 years ago by egor7@…

Attachment: x86_64_libgettextlib.la added

comment:7 Changed 11 years ago by dershow

Cc: dersh@… added

Cc Me!

comment:8 Changed 11 years ago by halkola@…

I have a different staging error with gettext:

--->  Staging gettext into destroot
Error: org.macports.destroot for port gettext returned: error copying "/opt/local/var/macports/build/_opt_mports_devel_gettext/gettext/work/destroot" to "/opt/local/var/macports/build/_opt_mports_devel_gettext/gettext/work/destroot-x86_64/destroot": file already exists
Error: Failed to install gettext

I have also tried to clean gettext first.

comment:9 Changed 11 years ago by halkola@…

Cc: halkola@… added

Cc Me!

comment:10 in reply to:  8 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Keywords: haspatch added

Replying to egor7@…:

diff x86_64_libgettextlib.la i386_libgettextlib.la 
17c17
< inherited_linker_flags=' '
---
> inherited_linker_flags='  -fopenmp'

Interesting. So the configure script decided that on i386 openmp should be used but on x86_64 it should not. I can't reproduce that. On my Snow Leopard machine compiling with gcc-4.2, it decided to use openmp for both i386 and x86_64 parts. And on Mountain Lion with clang, it decided not to use openmp for either the i386 or x86_64 parts.

I'm inclined to just disable openmp explicitly to avoid the problem, whatever its cause. From what I can tell, openmp is only used for the msgmerge utility, which is a program developers would use but users and build systems wouldn't, so this change should not affect normal MacPorts users. I see some other packagers have chosen this as well. See if the attached patch works for you.

Replying to halkola@…:

I have a different staging error with gettext:

--->  Staging gettext into destroot
Error: org.macports.destroot for port gettext returned: error copying "/opt/local/var/macports/build/_opt_mports_devel_gettext/gettext/work/destroot" to "/opt/local/var/macports/build/_opt_mports_devel_gettext/gettext/work/destroot-x86_64/destroot": file already exists
Error: Failed to install gettext

I have also tried to clean gettext first.

Although you said you tried to clean gettext, the error message "destroot: file already exists" usually means you did not clean before trying. Please clean and try again. This ticket is about the "X differs in Y and Z and cannot be merged" error message. If your build still fails and you get an error message different from that, please file a new ticket.

Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: gettext-disable-openmp.diff added

proposed patch

comment:11 Changed 11 years ago by egor7@…

cat .../gettext-0.18.2-x86_64/gettext-tools/config.log
...
ld: warning: in /usr/local/lib/libgomp.dylib, file was built for i386 which is not the architecture being linked (x86_64)
Undefined symbols:
  "_omp_get_num_threads", referenced from:
      _main in ccYhygBz.o
...

so opm (OpenMP) for x86_64 on Mac OSX 10.6.8 can't be compiled because of its standard i368 lib, I think.

How to apply gettext-disable-openmp.diff​?

comment:12 in reply to:  11 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: invalid
Status: assignedclosed

Replying to egor7@…:

ld: warning: in /usr/local/lib/libgomp.dylib, file was built for i386 which is not the architecture being linked (x86_64)

There's the real problem: you have this interfering library in /usr/local; please remove it and any other software you installed in /usr/local.

comment:13 Changed 11 years ago by dershow

Resolution: invalid
Status: closedreopened

I did have some stuff in /usr/local, so I got rid of it. I then did a sudo port clean getttext and upgrade, and got the same error as before, where it builds but then doesn't install. I just looked in macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_gettext/gettext/work/gettext-0.18.2-x86_64/gettext-tools/config.log and I don't see anything related to libgomp, egor7 is mentioning above. So, it seems that something else is still not working.

comment:14 Changed 11 years ago by halkola@…

I also have the same problem now when using variant +universal. With -universal I get my earlier error even after sudo port clean gettext. My libgettextlib.la differ in the same as with egor7. No mention of _omp_get_num_threads or libgomp in config.log.

comment:15 Changed 11 years ago by egor7@…

I removed everything from /usr/local/lib and successefully reinstall (force reinstall) gettext.

comment:16 in reply to:  15 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: invalid
Status: reopenedclosed

Replying to egor7@…:

I removed everything from /usr/local/lib and successefully reinstall (force reinstall) gettext.

Great, I'm glad that worked.

dersh and halkola, please file new tickets; you two are apparently experiencing a different problem, or possibly two different problems. This ticket was about the error message "X differs in Y and Z and cannot be merged" caused by the presence of an i386-only copy of the library /usr/local/lib/libgomp.dylib and was resolved by removing that library.

comment:17 Changed 11 years ago by halkola@…

For me also moving /usr/local/lib/ and installing gettext worked (moving /usr/local/lib/ afterwards back). Trying to install with variant -universal doesn't work anymore due to some dependencies that requite gettext with universal. I am therefore happy with this solution. Thanks!

comment:18 Changed 11 years ago by dershow

I moved /usr/local, but as I said above, cleaning then upgrade didn't work. However, I just tried: sudo port install gettext +universal and that worked. So for me that force wasn't necessary, but an upgrade didn't work.

comment:19 Changed 11 years ago by j@…

I also had the same thing happen, except for me it was libunistring was installed without the universal variant, and the gettext port depended on it if it exists, otherwise doesn't include it.

diff -c /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-i386/opt/local/lib/libgettextlib.la /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-x86_64/opt/local/lib/libgettextlib.la
*** /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-i386/opt/local/lib/libgettextlib.la	Thu Jan 17 16:09:31 2013
--- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-x86_64/opt/local/lib/libgettextlib.la	Thu Jan 17 16:09:27 2013
***************
*** 17,23 ****
  inherited_linker_flags=' '
  
  # Libraries that this one depends upon.
! dependency_libs=' -R/opt/local/lib -L/opt/local/lib /opt/local/lib/libintl.la -lc /opt/local/lib/libiconv.la -lncurses'
  
  # Names of additional weak libraries provided by this library
  weak_library_names=''
--- 17,23 ----
  inherited_linker_flags=' '
  
  # Libraries that this one depends upon.
! dependency_libs=' -R/opt/local/lib -L/opt/local/lib /opt/local/lib/libintl.la -lc /opt/local/lib/libunistring.la /opt/local/lib/libiconv.la -lncurses'
  
  # Names of additional weak libraries provided by this library
  weak_library_names=''

Diff finished.  Thu Jan 17 17:00:20 2013

To fix this problem, I ran the following commands.

% sudo port install libunistring +universal
% sudo port install gettext +universal
% sudo port upgrade outdated

And I was on my way :) I hope this helps people who find this bug in the tracker.

MacPort Devs: Let me know if this should be a separate bug? I'm not sure I can repro it now that I've gone off and installed libunistring correctly, but hopefully that's not too hard.

comment:20 in reply to:  19 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: j@… added

Replying to j@…:

I also had the same thing happen, except for me it was libunistring was installed without the universal variant, and the gettext port depended on it if it exists, otherwise doesn't include it.

[snip]

MacPort Devs: Let me know if this should be a separate bug? I'm not sure I can repro it now that I've gone off and installed libunistring correctly, but hopefully that's not too hard.

Yes, this is a new problem and needs a new ticket. I've filed #37681 for it.

Note: See TracTickets for help on using tickets.