New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ncurses-6.0 from tracker #29
base: master
Are you sure you want to change the base?
Conversation
I see
But I wonder if there is a way to get the .pc installed even without detecting the presence of /sw/bin/pkg-config. It looks like the only reason to detect that is to decide if to generate and install the .pc file (and simply short-circuits some otherwise-usable logic for determining the installation path). |
Switching up to a new libversion (== new package-name for the -dev) would allow us to stop dragging along the static libs and fix detection/linking/runtime-dependencies when reverse-builddepends are migrated. If we keep the same -dev package-name, we should keep the .a out of inertia because we don't know how many reverse-builddepends actually care about it. |
BuildDependsOnly: true | ||
Conflicts: ncurses-dev, libncurses5-64bit, libncurses5 | ||
Replaces: ncurses-dev, ncurses (<= 5.3-20031018-2), libncurses5-64bit, ncurses (<= 5.7-20100227-1), libncurses5 | ||
Provides: libncurses6-dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a libncurses5:Provides:libncurses5-dev since long ago; do we really need this cargo-culting if we are starting with a new libversion? "foo/foo-shlibs" is a well-established pattern for library package-sets.
There are nine packages with BDep:libncurses5-dev, which seems like low fruit for a cleanup task (no rev-up required, etc.)
The .info filenames are getting chaotic. Especially if we switch to a new libversion, we should standardize on *-shlibs.info to make it easier to compare the libversions to each other (harder if the parent vs splitoff switch places). |
libncursesw6/libncursesw6-shlibs are not essential, so the DescPackaging notes are not correct. They are explicitly tagged |
I chose to follow the Debian library naming convention when we did splitoffs… since the library is the main package it's the libfoo name, with -dev and -bin splitoffs. Personally I prefer that for library packages still. |
But "the library is the main package it's the libfoo name, with -dev and -bin splitoffs." does not match current layout practice or packging policy. I think libfoo (or foo) as the runtime libraries (rather than libfoo-shlibs or foo-shlibs) is unique for libiconv. For the record, I'm agnostic about libfoo/libfoo-shlibs vs libfoo-dev/libfoo-shlibs. |
I agree with @beren12 I prefer the Debian scheme as well, it makes porting much easier, specially since I ported all of debhelper. |
Switching to a new libversion would also allow us to unbury the library files (use %p/lib instead of %p/lib/ncurses). Presumably we did that in order to avoid masking apple's libraries, but then we moved the main links to %p/lib anyway and use fink-package-precedence enforce use of fink's. |
Regarding |
I managed to get the following in ncurses-5 with pkg-config uninstalled.
The .pc file generation doesn't need to have %p/lib/pkgconfig exist during buildtime either. With ncurses-6, I can build the .pc files, but not yet install them properly. I have no idea if setting My only tests so far were to make sure v6 of libncurses and libncursesw built as is. I wanted to have finalized decisions on our various options before I went out to really modify the build.
|
For ncurses6:
gets me .pc created and installed, both with and without pkg-config itself installed:
Weird but functional spaghetti. Need to add lib/pkgconfig to the Files: for libncurses6 (to accompany the headers, etc.) |
Thanks for the ncurses5 example. Turns out it works for ncurses6 also:
and doesn't even need the "Don't test for presence of PKG_CONFIG_LIBDIR" PatchScript (ncurses6 doesn't appear to have anything comparable in its configure scripts). |
I would recommend not having a separate libncursesw6 package. There's no good reason to keep carrying both around. Just build libncurses6 with --enable-widec and add --disable-lib-suffixes to cause it to build without the 'w' suffix. That's what the system ncurses does. I'd also recommend --with-pthread while we're doing a new libN. Also adding cf_cv_typeof_chtype=long to ConfigureParams hasn't been necessary since 32 bit days. The big ABI difference between 5 and 6 is that many types became opaque and you need to use accessor functions instead of accessing struct fields directly. |
While looking at whether a new libversion package's "ncurses" package should retain Essential:true, I noticed that the API manpages are in ncurses rather than the headers package. TODO: fix that. But ncurses in the new .info should retain Essential:true. Otherwise it is no longer essential and might not get updated (sync problem with the new lib?). Or if it got updated it would no longer be essential and then could get removed altogether. The question is: what is that package's role? It looks like it's both user-level utility programs and runtime terminfo data for the library? Maybe the terminfo should be sent to a separate package (maybe even a separate .info?) that can be Essential and have the libs Depends on it, and then ncurses utility programs could be a no-longer-Essential splitoff of the libs' .info. |
FWIW, Ubuntu sends their /sw/share/terminfo/ to a different package The libtinfo library is a subset of the libncurses library that can be built with the
|
TODO:
|
On Jan 6, 2018, at 4:39 PM, nieder ***@***.***> wrote:
TODO:
• bump ABI to 6
• drop libncursesw6 and instead put —enable-widec in libncurses6 (plus extra flags as @danielj7 suggested)
• unbury libraries and put them back into %p/lib
• kill static .a
• standardize how to generate the .pc files across new and existing .info to make file comparisons easier
• drop cf_cv_typeof_chtype flag
• move man3 files from ncurses to libncurses{5,6}
• retain Essential: true for ncurses and libncurses6-shlibs
• offload terminfo files to a new splitoff
• decide on naming for new libN=6 headers: libncurses6 vs libncurses6-dev. libncurses6-dev would allow dropping the Provides field.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
I still object to the name libncurses6-shlibs, with TheSin. It didn’t used to be policy to require it this way, and we should consider adding allowances in the guide for library packages being libfoo, libfoo-bin and libfoo-dev. It just makes sense and it how everyone else names library packages
|
I'm agnostic on requiring -dev for the headers SplitOff, and since the current package is ncurses/libncurses5-shlibs/libncurses, I would lean towards keeping the name pattern this way with libN=6 to simplify transitioning packages to it. This current SplitOff name pattern is ancient for ncurses and dates back to the 10.2-gcc3.3 period. The TODO list above is not final. It's the current state (to my eye) of the discussion. If something changes, the TODO list will be edited. |
Apart from the SplitOff naming issue, are there other new issues to address or other things in the TODO list are still under debate? |
What is it about "ncurses" that makes it Essential, the bin/* or the share/{tabset,terminfo}? I had assumed it was the share/ stuff, as "/sw/share/terminfo" is accessed by the .dylib, rather than some command-line programs that themselves link to the libraries. By keeping ncurses Essential, we assure it is installed, so we avoid a circular dependency of binary->library->datafile where binary and datafile are in the same package separate from library. Assuming so, I would think only the package with the datafiles would need to retain the Essential flag. Debian has a similar binary/library/datafile division and calls their datafiles package "ncurses-term" or "ncurses-base". |
Back in the day, this had to do with bootstrapping IIRC.
… On Jan 20, 2018, at 1:50 PM, Daniel Macks ***@***.***> wrote:
What is it about "ncurses" that makes it Essential, the bin/* or the share/{tabset,terminfo}? I had assumed it was the share/ stuff, as "/sw/share/terminfo" is accessed by the .dylib, rather than some command-line programs that themselves link to the libraries. By keeping ncurses Essential, we assure it is installed, so we avoid a circular dependency of binary->library->datafile where binary and datafile are in the same package separate from library. Assuming so, I would think only the package with the datafiles would need to retain the Essential flag. Debian has a similar binary/library/datafile division and calls their datafiles package "ncurses-term" or "ncurses-base".
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.
|
…te library. Kill static libraries. Remove typeof flag that's not needed in 64bit systems.
Since this is a new libN, there's no reason to hide them and we prefer to use Fink provided libs over system-libs now.
Current remaining issues to sort out from the list above:
The first two would be to somewhat align with Debian's layout if we so desired, but it would slightly increase packaging complexity (making a SplitOff for a new terminfo library and moving some terminfo files to a new SplitOff) SplitOff naming hasn't come to a final decision. Current naming as submitted continues the scheme we have had for libncurses5-shlibs since 2003.
|
How is this coming along? Since it's been a year I figured I'd bring it up again. :) As far as package naming goes, I'd prefer either 1 or 2 but have no strong opinions otherwise. 3 might be what other distos use but is wildly different from the vast majority of fink packages. BTW, the current upstream version is |
There was disagreement between the naming of the SplitOffs with no resolution between using the general Fink naming convention and Debian's. If there's consensus on the Debian scheme, I'm OK with that, but that goes against the vast majority of our package naming (only 2 out of ~650 in my installed Fink tree). |
ncurses 6.2 is out.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just tested this PR with the -m
flag; it appears to work fine (on Big Sur, with Xcode 13, at least). The fact that libncurses6 needs -Wno-error=implicit-function-declaration
is a bit worrying, and ideally should be fixed so as to not require that, but that can be handled separately, IMO. Also libncursesw5 prints a lot of -Wunused-command-line-argument
, but that's pretty minor.
The |
Upstream by default turns off Werror=implicit-function-declaration, but for us it's better to turn it on everywhere since it's important for ARM.
This is a transfer of @jwhowarth's update for ncurses-6 and libncurseswfrom the tracker: https://sourceforge.net/p/fink/package-submissions/4803/ and https://sourceforge.net/p/fink/package-submissions/4804/
Things to figure out:
--with-abi-version
flag that can be used to set the libN back to 5 as in our current package. Do we want a new libN for ncurses?Essential: true
field?