Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#37416 closed defect (invalid)

gettext +universal upgrade staging error

Reported by: egor7@… Owned by: ryandesign (Ryan 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@… 6 years ago.
i386_libgettextlib.la (1.0 KB) - added by egor7@… 6 years ago.
x86_64_libgettextlib.la (1.0 KB) - added by egor7@… 6 years ago.
gettext-disable-openmp.diff (495 bytes) - added by ryandesign (Ryan Schmidt) 6 years ago.
proposed patch

Change History (24)

comment:1 Changed 6 years ago by egor7@…

Cc: egor7@… added

Cc Me!

Changed 6 years ago by egor7@…

Attachment: main.log added

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

Cc: egall@… added

Cc Me!

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

I ran into this issue, too

comment:4 Changed 6 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 6 years ago by ryandesign (Ryan Schmidt)

Status: newassigned

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

comment:6 Changed 6 years ago by egor7@…

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

Changed 6 years ago by egor7@…

Attachment: i386_libgettextlib.la added

Changed 6 years ago by egor7@…

Attachment: x86_64_libgettextlib.la added

comment:7 Changed 6 years ago by dershow

Cc: dersh@… added

Cc Me!

comment:8 Changed 6 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 6 years ago by halkola@…

Cc: halkola@… added

Cc Me!

comment:10 in reply to:  8 Changed 6 years ago by ryandesign (Ryan 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 6 years ago by ryandesign (Ryan Schmidt)

Attachment: gettext-disable-openmp.diff added

proposed patch

comment:11 Changed 6 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 6 years ago by ryandesign (Ryan 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 6 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 6 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 6 years ago by egor7@…

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

comment:16 in reply to:  15 Changed 6 years ago by ryandesign (Ryan 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 6 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 6 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 6 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 6 years ago by ryandesign (Ryan 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.