Opened 2 years ago

Closed 2 years ago

#63784 closed defect (fixed)

clang-3.4 ↔︎ llvm-3.4 dependency cycle

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: snowleopard Cc: kencu (Ken), fhgwright (Fred Wright), cjones051073 (Chris Jones)
Port: llvm-3.4 perl5

Description

I initially could not upgrade clang-3.4 from @3.4.2_15 to @3.4.2_16 on the 10.6 i386 buildbot worker machine. There were lots of these errors:

/bin/sh: line 1: 64780 Trace/BPT trap

And then:

make/platform/clang_linux.mk:16: *** "unable to infer compiler target triple for /opt/bblocal/var/macports/build/_opt_bblocal_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-3.4/clang-3.4/work/build/Release/bin/clang".  Stop.

It did not attempt to upgrade llvm-3.4 first because there is a dependency cycle: llvm-3.4 → perl5 → perl5.28 → (clang-3.7 and xz) → clang-3.4 → llvm-3.4

When I first upgraded llvm-3.4 from @3.4.2_14 to @3.4.2_15, then clang-3.4 succeeded upgrading. So it's just the dependency cycle that needs to be resolved.

Attachments (1)

main.log.bz2 (74.7 KB) - added by ryandesign (Ryan Carsten Schmidt) 2 years ago.

Download all attachments as: .zip

Change History (23)

comment:1 Changed 2 years ago by jmroot (Joshua Root)

Cc: kencu added
Port: perl5 added

There shouldn't be an actual circular dependency because the llvm-3.4 → perl5 dependency is bin:perl:perl5.

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

Well then for whatever reason when I ran sudo port upgrade outdated, it started upgrading clang-3.4 before having attempted to upgrade llvm-3.4 and it failed to build which resulted in me conducting the investigation that led me to file this bug report.

Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log.bz2 added

comment:3 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:4 Changed 2 years ago by mascguy (Christopher Nielsen)

This new issue is now biting us, relative to our python27-bootstrap-related PR:

https://github.com/macports/macports-ports/pull/7074#issuecomment-960305684

comment:5 Changed 2 years ago by fhgwright (Fred Wright)

Cc: fhgwright added

comment:6 Changed 2 years ago by fhgwright (Fred Wright)

Although both this issue and the PR issue relate to a circular dependency with clang-3.4, this one doesn't look like quite the same problem as the PR, since in the latter case, llvm-3.4 was already successfully built and installed prior to the failure.

comment:7 Changed 2 years ago by kencu (Ken)

I believe the problem is likely still with the openssl shim port.

In this ticket 63616 Josh asked Chris to clear the compiler.cxx_standard, which was done:

https://github.com/macports/macports-ports/blob/ecf4e70ac19a2b3ec2147489e3568da32d7cdeb6/devel/openssl/Portfile#L29

but that does not fix the issue and I believe Josh meant to clear configure.cxx_stdlib instead, like this:

https://github.com/macports/macports-ports/blob/ecf4e70ac19a2b3ec2147489e3568da32d7cdeb6/devel/openssl11/Portfile#L54

comment:8 in reply to:  7 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to kencu:

but that does not fix the issue and I believe Josh meant to clear configure.cxx_stdlib instead, like this:

https://github.com/macports/macports-ports/blob/ecf4e70ac19a2b3ec2147489e3568da32d7cdeb6/devel/openssl11/Portfile#L54

So should we essentially copy-pasta the same logic from that change, into the openssl shim port?

if {${os.platform} eq "darwin" && ${os.major} < 11} {
    # Having the stdlib set to libc++ on 10.6 causes a dependency on a
    # macports-clang compiler to be added, which would be a dep cycle.
    configure.cxx_stdlib
}

comment:9 Changed 2 years ago by kencu (Ken)

yes.

comment:10 Changed 2 years ago by mascguy (Christopher Nielsen)

Owner: set to cjones051073
Status: newassigned

comment:11 Changed 2 years ago by cjones051073 (Chris Jones)

please by all means someone make the suggested change. I'm not in a position to do it myself right now.

comment:12 in reply to:  11 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: cjones051073 added; mascguy removed
Owner: changed from cjones051073 to mascguy

Replying to cjones051073:

please by all means someone make the suggested change. I'm not in a position to do it myself right now.

No worries, happy to take care of it!

Just to confirm though, should we also leave the original fix - clearing of compiler.cxx_standard - in place as well?

comment:13 Changed 2 years ago by Christopher Nielsen <mascguy@…>

Resolution: fixed
Status: assignedclosed

In 20bf48d6b423b38e3ff5449690bdde1e4cc7aa3f/macports-ports (master):

openssl: fix dep cycle between clang-3.4/llvm-3.4
Fixes: #63784

comment:14 Changed 2 years ago by cjones051073 (Chris Jones)

Thanks. I think though you should remove the clearing of compiler.cxx_standard - I am pretty sure now that was a mistake on Josh's/my part.

comment:15 in reply to:  14 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to cjones051073:

Thanks. I think though you should remove the clearing of compiler.cxx_standard - I am pretty sure now that was a mistake on Josh's/my part.

Sounds good to me, I can take care of this later this afternoon. Josh, are you OK with me removing that?

comment:16 Changed 2 years ago by jmroot (Joshua Root)

Clearing compiler.cxx_standard also clears configure.cxx_stdlib, so I don't see how the commit would have helped. A circular dependency still exists: clang-3.4 -> python27-bootstrap -> openssl -> pkgconfig -> clang-3.4

comment:17 in reply to:  16 Changed 2 years ago by kencu (Ken)

Replying to jmroot:

Clearing compiler.cxx_standard also clears configure.cxx_stdlib

Oh.

Learn something new every day then.

Back to you, Chris et al.

comment:18 in reply to:  16 Changed 2 years ago by mascguy (Christopher Nielsen)

Resolution: fixed
Status: closedreopened

Replying to jmroot:

Clearing compiler.cxx_standard also clears configure.cxx_stdlib, so I don't see how the commit would have helped. A circular dependency still exists: clang-3.4 -> python27-bootstrap -> openssl -> pkgconfig -> clang-3.4

Okay, we give up. Can you tell us the secret fix? We know you're dying to share it... ;-)

comment:19 Changed 2 years ago by cjones051073 (Chris Jones)

I have no access to these ancient OSes so cannot really help here.

comment:20 in reply to:  19 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to cjones051073:

I have no access to these ancient OSes so cannot really help here.

I have both a physical 10.6_x32 installation (via an ancient MacBookPro 17), as well as a virtual 10.6_x64. So I'm happy to help with testing, if someone can provide a suggested fix...

comment:21 Changed 2 years ago by jmroot (Joshua Root)

Doesn't seem like pkgconfig is needed to create symlinks…

comment:22 Changed 2 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: reopenedclosed

In f0819e93cc649a77f0ccdb0bb7c2d5a387261b81/macports-ports (master):

openssl: avoid unnecessary dependency

Fixes: #63784

Note: See TracTickets for help on using tickets.