Bug 989850 - Review Request: mingw-libmicrohttpd - MinGW package for libmicrohttpd
Review Request: mingw-libmicrohttpd - MinGW package for libmicrohttpd
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Erik van Pienbroek
Fedora Extras Quality Assurance
:
Depends On: 989847
Blocks:
  Show dependency treegraph
 
Reported: 2013-07-30 00:32 EDT by Michael Cronenworth
Modified: 2014-05-16 10:06 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2014-05-16 10:06:04 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
erik-fedora: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Michael Cronenworth 2013-07-30 00:32:25 EDT
Spec URL: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd.spec
SRPM URL: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd-0.9.27-1.fc19.src.rpm
Description: MinGW package for libmicrohttpd
Fedora Account System Username: mooninite
Comment 1 Erik van Pienbroek 2013-08-01 12:12:53 EDT
Taking for review

- The published spec file doesn't match the spec file used in the src.rpm (BuildRequires: mingw32/64-plibc is missing)
- There appear to be an 'rm -rf' in the %install section which looks unintended to me. I guess this should be removed
Comment 2 Michael Cronenworth 2013-08-01 23:06:48 EDT
OK, I fixed the stupid errors, and have a new (correct) spec and SRPM for you. Use the original links to grab the new copies.

After those fixes, I tried to remove the configure dependency on PlibC, but found some interesting things:

- libmicrohttpd has an embedded plibc.h that it depends on to pull in Linux or Windows includes. Editing this to the point of pulling in things that MinGW-w64 doesn't provide allowed compiling, but not linking.
- Linking found a few functions that PlibC offers that MinGW-w64 doesn't have.
  * SetErrnoFromWinError
  * pipe
  * plibc_init
  * plibc_shutdown
  * munmap

I may pursue upstream to detach itself from PlibC if PlibC cannot get its license clarified. The list of undefined functions is small and it shouldn't be too difficult to remove the dependency by adding replacement code for MinGW builds.
Comment 3 Erik van Pienbroek 2013-08-02 08:51:31 EDT
Apart from the licensing issue in plibc this package is okay.
The POSIX symbols pipe and mmap aren't available on win32, so if you want to continue this route you'd have to manually write replacements for those. Another possibility you could do is to replace the offending code in plibc with printf/scanf functions which are available in mingw-w64-crt (perhaps in combination with the define __USE_MINGW_ANSI_STDIO set)
Comment 4 Michael Cronenworth 2013-08-06 21:47:50 EDT
I've created a patch set that removes the PlibC requirement. The patches have been sent upstream for consideration.

Spec: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd.spec
SRPM: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd-0.9.27-2.fc19.src.rpm
Comment 5 Michael Cronenworth 2013-08-30 21:07:51 EDT
Upstream did not accept the patches to remove the dependency on PlibC, but have accepted the other fixes.

New spec: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd.spec
New SRPM: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd-0.9.27-4.fc19.src.rpm
Comment 6 Erik van Pienbroek 2013-11-17 11:56:42 EST
* The BuildRequires: mingw32-binutils mingw64-binutils is redundant and can be removed
* As of Fedora 20, the mingw-pthreads package got replaced by mingw-winpthreads.
  The mingw{32,64}-winpthreads packages automatically gets pulled in by
  mingw{32,64}-headers so the BuildRequires for winpthreads doesn't have
  to be explicitly mentioned any more on Fedora 20+. You could guard the
  BuildRequires: mingw32-pthreads mingw64-pthreads inside an %if 0%{?fedora} < 20
  section and remove this section once Fedora 19 goes end-of-life
* The unintended 'rm -rf' which was mentioned earlier seems to have been
  reintroduced in your latest src.rpm. Please remove it
Comment 7 Michael Cronenworth 2014-01-07 11:36:47 EST
Updated to latest upstream + review fixes.

New spec: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd.spec
New SRPM: http://michael.cronenworth.com/RPMS/mingw-libmicrohttpd-0.9.33-1.fc20.src.rpm
Comment 8 Erik van Pienbroek 2014-02-09 10:18:48 EST
$ rpmlint mingw-libmicrohttpd.spec 
0 packages and 1 specfiles checked; 0 errors, 0 warnings.

$ rpmlint mingw-libmicrohttpd-0.9.33-1.fc20.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

$ rpmlint mingw32-libmicrohttpd-0.9.33-1.fc20.noarch.rpm mingw32-libmicrohttpd-static-0.9.33-1.fc20.noarch.rpm mingw64-libmicrohttpd-0.9.33-1.fc20.noarch.rpm mingw64-libmicrohttpd-static-0.9.33-1.fc20.noarch.rpm 
mingw32-libmicrohttpd-static.noarch: W: no-documentation
mingw64-libmicrohttpd-static.noarch: W: no-documentation
4 packages and 0 specfiles checked; 0 errors, 2 warnings.


$ rpm --query --requires mingw32-libmicrohttpd
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
mingw32-crt
mingw32-filesystem >= 95
mingw32(kernel32.dll)
mingw32(libgcc_s_sjlj-1.dll)
mingw32(libgcrypt-11.dll)
mingw32(libgnutls-28.dll)
mingw32(libplibc-1.dll)
mingw32(libwinpthread-1.dll)
mingw32(msvcrt.dll)
mingw32-pkg-config
mingw32(ws2_32.dll)
rpmlib(PayloadIsXz) <= 5.2-1

$ rpm --query --requires mingw64-libmicrohttpd
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
mingw64-crt
mingw64-filesystem >= 95
mingw64(kernel32.dll)
mingw64(libgcrypt-11.dll)
mingw64(libgnutls-28.dll)
mingw64(libplibc-1.dll)
mingw64(libwinpthread-1.dll)
mingw64(msvcrt.dll)
mingw64-pkg-config
mingw64(ws2_32.dll)
rpmlib(PayloadIsXz) <= 5.2-1

$ rpm --query --requires mingw32-libmicrohttpd-static
mingw32-libmicrohttpd = 0.9.33-1.fc20
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpm --query --requires mingw64-libmicrohttpd-static
mingw64-libmicrohttpd = 0.9.33-1.fc20
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1


$ rpm --query --provides mingw32-libmicrohttpd
mingw32-libmicrohttpd = 0.9.33-1.fc20
mingw32(libmicrohttpd-10.dll)

$ rpm --query --provides mingw64-libmicrohttpd
mingw64-libmicrohttpd = 0.9.33-1.fc20
mingw64(libmicrohttpd-10.dll)

$ rpm --query --provides mingw32-libmicrohttpd-static
mingw32-libmicrohttpd-static = 0.9.33-1.fc20

$ rpm --query --provides mingw64-libmicrohttpd-static
mingw64-libmicrohttpd-static = 0.9.33-1.fc20


$ wget --quiet http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.33.tar.gz -O - | md5sum
013b10f9de1cda5448b29c81305354a3  -
$ md5sum libmicrohttpd-0.9.33.tar.gz 
013b10f9de1cda5448b29c81305354a3  libmicrohttpd-0.9.33.tar.gz


+ OK
! Needs to be looked into
/ Not applicable

[+] Compliant with generic Fedora Packaging Guidelines
[+] Source package name is prefixed with 'mingw-'
[+] Spec file starts with %{?mingw_package_header}
[+] BuildRequires: mingw32-filesystem >= 95 is in the .spec file
[+] BuildRequires: mingw64-filesystem >= 95 is in the .spec file
[+] Spec file contains %package sections for both mingw32 and mingw64 packages
[+] Binary mingw32 and mingw64 packages are noarch
[+] Spec file contains %{?mingw_debug_package} after the %description section
[+] Uses one of the macros %mingw_configure, %mingw_cmake, or %mingw_cmake_kde4
    to configure the package
[+] Uses the macro %mingw_make to build the package
[+] Uses the macro %mingw_make to install the package
[/] If package contains translations, the %mingw_find_lang macro must be used
[+] No binary package named mingw-$pkgname is generated
[+] Libtool .la files are not bundled
[+] .def files are not bundled
[+] Man pages which duplicate native package are not bundled
[+] Info files which duplicate native package are not bundled
[+] Provides of the binary mingw32 and mingw64 packages are equal
[!] Requires of the binary mingw32 and mingw64 packages are equal


The mingw32 package seems to depend on libgcc_s_sjlj-1.dll while the mingw64
package doesn't. I've also seen this on various other packages so we can
ignore this for now

The BuildRequires: mingw32-filesystem mingw64-filesystem should be versioned (to >= 95).
Please fix this before importing this package in Fedora


=========================================================
 The package mingw-libmicrohttpd is APPROVED by epienbro
=========================================================
Comment 9 Michael Cronenworth 2014-02-09 15:53:55 EST
(In reply to Erik van Pienbroek from comment #8)
> The BuildRequires: mingw32-filesystem mingw64-filesystem should be versioned
> (to >= 95).
> Please fix this before importing this package in Fedora

The spec has the BRs versioned this way. I'll wait to request SCM to hear if you meant something else in the spec was wrong.
Comment 10 Erik van Pienbroek 2014-02-09 17:46:42 EST
You can ignore that, it's a copy/paste issue in my review template which I forgot to remove
Comment 11 Michael Cronenworth 2014-02-09 18:19:46 EST
New Package SCM Request
=======================
Package Name: mingw-libmicrohttpd
Short Description: MinGW package for libmicrohttpd
Owners: mooninite
Branches: f20
InitialCC:
Comment 12 Gwyn Ciesla 2014-02-10 08:23:47 EST
Git done (by process-git-requests).
Comment 13 Erik van Pienbroek 2014-05-16 10:06:04 EDT
Package is in Fedora 20 and rawhide. Closing review request

Note You need to log in before you can comment on or make changes to this bug.