[FFE] notcurses 1.7.4 for ubuntu 20.10

Bug #1896717 reported by nick black
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
notcurses (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

Hello. I'd like to request a Feature Freeze Exception for 20.10 per the instructions at https://wiki.ubuntu.com/FreezeExceptionProcess#FeatureFreeze_for_new_upstream_versions.

Ubuntu 20.10 currently has notcurses 1.7.0, imported directly from Debian (where I'm the maintainer, as well as the upstream author). This is a kinda unfortunate pick; it has two annoying (though not grave/serious) bugs, but more importantly lacks the recent 1.7.x API changes, pursuant to 2.0 (to be released next month).

All year, I've claimed that Notcurses would commit to backwards compatibility and API stability starting with the 2.0 release, and retained free right to mutate the API until then. 1.7.4 (currently available in Debian/Fedora/Arch) is the last expected release prior to 2.0. Its API is thus expected to be equal to the final, stable 2.0 API. By importing 1.7.4 to 20.10, 20.10 will ship with the same API other distros (and newer versions of Ubuntu) will be implementing. Given that 20.10 is the first Ubuntu to contain Notcurses, this means a sweetly unified surface across all distros.

I have prepared a 1.7.4 for Ubuntu 20.10, and can upload it under the Sponsorship Process. The 1.7.4 packages are available via https://www.dsscaw.com/repos/apt/ubuntu/.

Testing: install the notcurses-bin package and run `notcurses-demo`. It works fine. There's also an `autopkgtest` file in the `debian/` folder. I'll attach the pbuilder output shortly.

Diff of upstream NEWS.md:

* 1.7.4 (2020-09-20)
  * All `_rgb_clipped()` functions have been renamed `_rgb8_clipped()`, to
    match the changes made in 1.7.2. Sorry, I ought have done this before.
  * `ncplane_create()` has been introduced, taking a `struct ncplane_options`
    parameter. This replaces `ncplane_aligned()`, and will replace
    `ncplane_new()`. The latter ought be considered deprecated, and will be
    removed in the future. To align a place as previously done with
    `ncplane_aligned()`, use the `NCPLANE_OPTION_HORALIGNED` flag.
  * The `ncplane_options` struct includes a function pointer member,
    `resizecb`. If not `NULL`, this function will be called after the parent
    plane is resized. See `notcurses_plane.3` for more information.
  * `ncplane_resize_realign()` has been added, suitable for use as a
    `resizecb`. It realigns the plane against its parent.
  * `NCCHANNEL_ALPHA_MASK` has been renamed `CHANNEL_ALPHA_MASK`, to match
    the other declarations.

* 1.7.3 (2020-09-19)
  * API changes pursuant to 2.0 API finalization:
  * `mbswidth()` has been renamed `ncstrwidth()`.
  * The long-promised/dreaded Great Widget Review, normalizing behavior across
    all widgets, has been effected. Sorry, there was no getting around this
    one. Pretty much all widgets have slightly changed, because pretty much all
    widgets previously behaved slightly differently:
     * `ncselector_create()` and `ncmultiselector_create()` now take ownership
       of the provided `ncplane`. On an error in these functions, the `ncplane`
       will be destroyed. Otherwise, the `ncplane` is destroyed by
       `ncselector_destroy()` or `ncmultiselector_destroy()`.
     * `ncselector_create()`, `ncmultiselector_create()`, and
       `ncreader_create()` no longer accept `int y, int x` placement
       parameters. Just place the `ncplane`.
     * `ncselector_options`, `ncmultiselector_options`, and `ncreel_options`
       have lost their `bgchannels` members. Just set the base character for
       the `ncplane`.
     * `ncreader_options` has lost its `echannels`, `eattrword`, `egc`,
       `physrows`, and `physcols` fields. Just set the base character and size
       for the `ncplane`.
  * Functions which set a 24-bit RGB value have had the suffix `g` replaced
    with `g_rgb`. Functions which set three 8-bit RGB components have had the
    suffix `rgb` replaced with `rgb8`. This was done because e.g.
    `channels_set_fg()` and `channels_set_fchannel()` were indistinguishable on
    sight. Failure to make the necessary conversions will result in compiler
    errors. See https://github.com/dankamongmen/notcurses/issues/985.
  * Functions ending in `_stainable()` now end in `_stained()`.
  * `ncplane_putwc_stained()` and `ncplane_putwstr_stained()` have been
    added in the interest of orthogonality.
  * `ncplane_new_named()` has been eliminated. `ncplane_new()` now takes a
    `const char* name` argument. `ncplane_bound()` and `ncplane_bound_named()`
    have both been eliminated. `ncplane_new()` now accepts an `ncplane*`
   instead of a `notcurses*`. All functionality exposed by the removed
    functions is thus now present in `ncplane_new()`.
  * `ncplane_aligned_named()` has been removed. `ncplane_aligned()` now accepts
    a `const char* name` argument.

* 1.7.2 (2020-09-09)
  * Exported `ncvisual_default_blitter()`, so that the effective value of
    `NCBLIT_DEFAULT` can be determined.
  * Added `NCREADER_OPTION_CURSOR`, instructing the `ncreader` to make the
    terminal cursor visible, and manage the cursor's placement.

* 1.7.1 (2020-08-31)
  * Renamed `CELL_SIMPLE_INITIALIZER` to `CELL_CHAR_INITIALIZER`, and
    `cell_load_simple()` to `cell_load_char()`.
  * Renamed `ncplane_putsimple()` to `ncplane_putchar()`,
    `ncplane_putsimple_stainable()` to `ncplane_putchar_stainable()`,
    and `ncplane_putsimple_yx()` to `ncplane_putchar_yx()`.

Revision history for this message
Łukasz Zemczak (sil2100) wrote :

Hello Nick. Thank you for your FFe request! Seeing that groovy is the first Ubuntu series to include notcurses, I think it should be safe to pull in 1.7.4 at this moment. With my ubuntu-release hat on, I approve this FFe.

I guess I could even sync this from Debian for you, if you have confirmed that the package build successfully on groovy.

Changed in notcurses (Ubuntu):
status: New → Triaged
Revision history for this message
nick black (dankamongmen) wrote :

Wonderful, thanks so much Łukasz!

Yes, a sync from Debian Unstable (or Debian Testing sometime today, when it passes the testing threshold) seems the easiest way to do things, given that I lack Ubuntu upload privileges.

Yes, I was able to perform a successful build (using both dpkg-buildpackage and later pbuilder) on an up-to-date 20.10 Groovy Gorilla machine this evening. The results are here:

https://www.dsscaw.com/repos/apt/ubuntu/pool/main/n/notcurses/

Probably best to sync from Debian using the standard Ubuntu method, as these packages contain "unstable" rather than "groovy" in the `debian/changelog`. Let me know if you need me to build anything afresh.

I'm probably going to apply for PerPackageUploader rights, but that'll take place in another bug.

Revision history for this message
Łukasz Zemczak (sil2100) wrote :

This bug was fixed in the package notcurses - 1.7.4+dfsg.1-2
Sponsored for nick black (dankamongmen)

---------------
notcurses (1.7.4+dfsg.1-2) unstable; urgency=medium

  * New upstream version
  * Update libnotcurses1.symbols
  * Export TERM in CI scripts, fixing salsa CI build

 -- Nick Black <email address hidden> Mon, 21 Sep 2020 23:44:21 -0400

notcurses (1.7.3+dfsg.1-1) unstable; urgency=medium

  * New upstream version

 -- Nick Black <email address hidden> Sat, 19 Sep 2020 21:36:29 -0400

notcurses (1.7.2+dfsg.1-1) unstable; urgency=medium

  * New upstream version
  * Merge salsa CI scripts

 -- Nick Black <email address hidden> Thu, 10 Sep 2020 04:55:13 -0400

notcurses (1.7.1+dfsg.1-1) unstable; urgency=medium

  * New upstream version, fixes abort in DFSG build

 -- Nick Black <email address hidden> Mon, 31 Aug 2020 21:53:23 -0400

Changed in notcurses (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

Done! You're welcome!

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.