Bug 2163708

Summary: Review Request: libunistring1.0 - Compatibility version of GNU Unicode string library
Product: [Fedora] Fedora Reporter: Daiki Ueno <dueno>
Component: Package ReviewAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: mhroncok, package-review
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libunistring1.0-1.0-1.fc38 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-01-25 02:36:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Daiki Ueno 2023-01-24 10:33:19 UTC
Spec file: https://ueno.fedorapeople.org/libunistring1.0/libunistring1.0.spec
SRPM: https://ueno.fedorapeople.org/libunistring1.0/libunistring1.0-1.0-1.fc37.src.rpm
Description:
This portable C library implements Unicode string types in three flavours:
(UTF-8, UTF-16, UTF-32), together with functions for character processing
(names, classifications, properties) and functions for string processing
(iteration, formatted output, width, word breaks, line breaks, normalization,
case folding and regular expressions). This version of libunistring package
contains only the library from the 1.0 version and is provided for compatibility
with previous versions.

See also:
https://pagure.io/releng/issue/11175

Comment 1 Miro HronĨok 2023-01-24 12:25:40 UTC
A diff from libunistring witch my inlined comments.

--- libunistring.spec	2023-01-24 13:14:10.423026317 +0100
+++ libunistring1.0.spec	2023-01-24 13:14:07.795011951 +0100
@@ -1,11 +1,13 @@
+%bcond_with devel
+

I suppose a disabled devel bcond makes sense if we want people to be able to install the lib but not compile against it. +1

 # This spec file has been automatically updated
-Version:	1.1
-Release: %{?autorelease}%{!?autorelease:1%{?dist}}
-Name: libunistring
-Summary: GNU Unicode string library
+Version:	1.0
+Release: 1%{?dist}

I'd keep using %autorelease here as well, but not a big deal.

+Name: libunistring1.0
+Summary: Compatibility version of GNU Unicode string library

Ack.

Please also add: Conflicts: libunistring < 1.1 (as the libunistring package has overlapping files in that version).

 License: GPLv2+ or LGPLv3+

New packages MUST use SPDX license identifiers, please update both packages while doing so.

 URL: https://www.gnu.org/software/libunistring/
-Source0: https://ftp.gnu.org/gnu/libunistring/%{name}-%{version}.tar.xz
+Source0: https://ftp.gnu.org/gnu/libunistring/libunistring-%{version}.tar.xz

Ack.

 BuildRequires: gcc
 BuildRequires: make
 Provides: bundled(gnulib)

Consider providing deprecated() here as well.

@@ -15,17 +17,23 @@
 (UTF-8, UTF-16, UTF-32), together with functions for character processing
 (names, classifications, properties) and functions for string processing
 (iteration, formatted output, width, word breaks, line breaks, normalization,
-case folding and regular expressions).
+case folding and regular expressions). This version of libunistring package
+contains only the library from the 1.0 version and is provided for compatibility
+with previous versions.

I am not a native speaker but the sentence sounds weird to me, how about:

This package contains the libunistring library version 1.0 and is intended for compatibility reasons only.
Users are advised to update to a newer version of libunistring.

 
+%if %{with devel}
 %package devel
 Summary: GNU Unicode string library - development files
 Requires: %{name}%{?_isa} = %{version}-%{release}
+Conflicts: libunistring-devel
+Provides: deprecated()
 
 %description devel
 Development files for programs using libunistring.
+%endif


Please update the summary and description of the devel package (just in case it will need to be enabled).

 %prep
-%autosetup
+%autosetup -n libunistring-%{version}

Ack.

 %build
 %configure --disable-static --disable-rpath
@@ -41,8 +49,9 @@
 %files
 %license COPYING COPYING.LIB
 %doc AUTHORS NEWS README
-%{_libdir}/%{name}.so.5*
+%{_libdir}/%{name}.so.*

I'd hardcode the old version here, to be safe.

+%if %{with devel}
 %files devel
 %doc HACKING DEPENDENCIES THANKS ChangeLog
 %doc __doc/*
@@ -50,8 +59,11 @@
 %{_libdir}/%{name}.so
 %{_includedir}/unistring
 %{_includedir}/*.h
+%endif
 
 %ldconfig_scriptlets

This could possibly be removed, but no big deal.

 %changelog
-%autochangelog
+* Tue Jan 24 2023 Daiki Ueno <dueno> - 1.0-1
+- Create compat package for libunistring 1.1 ABI bump
+

What about:

- Initial compatibility package with libunistring 1.0


------------------


Note that compatibility packages don't need a formal review, so treat my comments as recommendations/suggestions and feel free to request the repo:

  fedpkg request-repo libunistring1.0 --exception (--no-initial-commit)

Use --no-initial-commit if you want to push the git history of https://src.fedoraproject.org/rpms/libunistring/tree/f37

Comment 2 Daiki Ueno 2023-01-24 13:09:34 UTC
Thanks Miro, I've incorporated the suggested changes and confirmed it builds in mock. Will request a repo soon.

Comment 3 Daiki Ueno 2023-01-25 02:36:39 UTC
The package has been built in rawhide.