Page MenuHomeFreeBSD

[PORT REVISION] Fix ghc build in 13-CURRENT
AbandonedPublic

Authored by arrowd on Mar 10 2020, 10:12 AM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:39 PM
Unknown Object (File)
Fri, Mar 29, 6:26 PM
Subscribers

Details

Summary

Due to recent ncurses udpate, ghc build has been broken.
See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244556

Test Plan

Built a new version of devel/elm-format with this ghc under poudriere targetting both 12-RELEASE and 13-CURRENT.

Only tested execution and proper functioning of devel/elm-format on 13-CURRENT, but I think if the port built properly in poudriere, that's a good sign that this revision doesn't break things there.

Diff Detail

Repository
rP FreeBSD ports repository
Lint
No Lint Coverage
Unit
No Test Coverage
Build Status
Buildable 29866
Build 27688: arc lint + arc unit

Event Timeline

I suspect, BUILD_DEPENDS is sufficient - this ncurses library is used by bootstrap compiler. Can you test it?

Isn't BUILD_DEPENDS for executables?
https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/makefile-depend.html#makefile-build_depends

I am getting:

=======================<phase: build-depends  >============================
===>   ghc-8.6.5_5 depends on executable: libncursesw.so.8 - not found
===>   Installing existing package /packages/All/compat12x-amd64-12.1.1201000.20200220.txz
[130Ramd64-default-job-01] Installing compat12x-amd64-12.1.1201000.20200220...
[130Ramd64-default-job-01] Extracting compat12x-amd64-12.1.1201000.20200220: ......... done
===>   ghc-8.6.5_5 depends on executable: libncursesw.so.8 - not found
*** Error code 1

with

BUILD_DEPENDS=          libncursesw.so.8:misc/compat12x

Am I doing it wrong? Also, for learning: why would BUILD_DEPENDS be better?

\o/ I think I understood it. Please correct me if wrong:

LIB_DEPENDS introduces a dependency on the current12x package, which may not be necessary.
BUILD_DEPENDS only uses it at build time and contrary to the description in the porters handbook, there are instances of it referring to libraries in the ports tree.

I also found LOCALBASE to be defined and used in Mk/Uses for similar things in a similar way.

So, it's building now in 13-CURRENT, which is a good sign, can't vouch for its correctness (yet) but would appreciate testing.

Done testing, things look alright with BUILD_DEPENDS.

\o/ I think I understood it. Please correct me if wrong:

LIB_DEPENDS introduces a dependency on the current12x package, which may not be necessary.
BUILD_DEPENDS only uses it at build time and contrary to the description in the porters handbook, there are instances of it referring to libraries in the ports tree.

I also found LOCALBASE to be defined and used in Mk/Uses for similar things in a similar way.

So, it's building now in 13-CURRENT, which is a good sign, can't vouch for its correctness (yet) but would appreciate testing.

All *_DEPENDS variables accept either executable (in form executable:category/port) or package (packagename==ver:category/port or >0 in simplest case). Oh and absolute path too, just like you did it.
The LIB_DEPENDS is special, as it accepts library name (a string that usually gets passed into -l flag of C/C++ compiler, or, which is the same, the output of ldconfig -r).

And regarding BUILD_DEPENDS - you're right, it pulls in a dependency only for building, but it will not end up in the dependency list of final package. In this aspect, LIB_DEPENDS works just like RUN_DEPENDS.

This revision was not accepted when it landed; it landed in state Needs Review.Mar 10 2020, 6:45 PM
This revision was automatically updated to reflect the committed changes.

Hey @arrowd, the wrong BUILD_DEPENDS was commited.

This is the output:

=======================<phase: build-depends  >============================
===>   ghc-8.6.5_5 depends on executable: libncursesw.so.8 - not found
===>   Installing existing package /packages/All/compat12x-amd64-12.1.1201000.20200220.txz
[130Ramd64-default-job-01] Installing compat12x-amd64-12.1.1201000.20200220...
[130Ramd64-default-job-01] Extracting compat12x-amd64-12.1.1201000.20200220: ......... done
===>   ghc-8.6.5_5 depends on executable: libncursesw.so.8 - not found
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/ghc
=>> Cleaning up wrkdir
===>  Cleaning for ghc-8.6.5_5
build of lang/ghc | ghc-8.6.5_5 ended at Tue Mar 10 19:52:10 CET 2020
build time: 00:00:13
!!! build failure encountered !!

And this is the diff between last patch and what was committed: https://reviews.freebsd.org/D24014?vs=69359&id=69368#toc

Correct BUILD_DEPENDS and use @arrowd's changes.

arrowd abandoned this revision.
arrowd edited reviewers, added: github_evilham.com; removed: arrowd.