Bug 812573

Summary: Review Request: mingw-gstreamer-plugins-good - Cross compiled GStreamer plug-ins good
Product: [Fedora] Fedora Reporter: Michael Cronenworth <mike>
Component: Package ReviewAssignee: Erik van Pienbroek <erik-fedora>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: erik-fedora, fedora-mingw, kalevlember, notting, package-review
Target Milestone: ---Flags: erik-fedora: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: mingw-gstreamer-plugins-good-0.10.31-5.fc17 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-05-07 04:18:10 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Michael Cronenworth 2012-04-15 01:23:56 UTC
Spec URL: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good.spec
SRPM URL: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good-0.10.31-1.fc17.src.rpm
Description: The MinGW version of the gstreamer-plugins-good package in Fedora. Carried over from the fedora-cross repo.

This package requires gstreamer and gstreamer-plugins-base 0.10.36, which are not yet in F17/Rawhide, but they will be shortly.

Comment 1 Erik van Pienbroek 2012-04-15 09:36:23 UTC
Taking for review

The following lines are obsolete and can be removed:
%global mingw_build_win32 1
%global mingw_build_win64 1

Please bump the BR: mingw32-filesystem and mingw64-filesystem to >= 95

The BR: pkgconfig can be removed as it's already part of the default build root in Fedora

The BR: mingw32-libjpeg and mingw64-libjpeg can be changed to mingw32-libjpeg-turbo and mingw64-libjpeg-turbo as there are no mingw32-libjpeg or mingw64-libjpeg packages in Fedora any more (they are replaced by mingw-libjpeg-turbo)

The BR: mingw32-orc and mingw64-orc can't be satisfied at the moment as the package mingw-orc isn't available in Fedora at the moment, so that package needs to be put up for review first

The %{mingw_pkg_name} macro is currently obsolete. Please use the full package name in the places where this macro is used

The Summary: %{summary} tags (in the subpackages) don't give the expected result. Please don't use the %{summary} tag

The quotes used by the various arguments in the %mingw_configure aren't needed any more and can be removed. This %mingw_configure line can also be split among multiple lines to improve readability

Please use the %mingw_find_lang macro instead of the %find_lang macro. This macro generates two file lists named mingw32-gstreamer-plugins-good.lang and mingw64-gstreamer-plugins-good.lang with translations for mingw32 and mingw64 packages, so don't forget to also update the %files tags

Why are the files in the -static subpackages commented out? Right now the -static subpackages are empty packages

Comment 2 Michael Cronenworth 2012-04-15 16:59:30 UTC
(In reply to comment #1)
> The following lines are obsolete and can be removed:
> %global mingw_build_win32 1
> %global mingw_build_win64 1

Done. Could you also update the Fedora wiki for MinGW packaging? You change the packaging requirements every time I submit a package for review. The wiki is highly out of date.

> Please bump the BR: mingw32-filesystem and mingw64-filesystem to >= 95
> 
> The BR: pkgconfig can be removed as it's already part of the default build root
> in Fedora
> 
> The BR: mingw32-libjpeg and mingw64-libjpeg can be changed to
> mingw32-libjpeg-turbo and mingw64-libjpeg-turbo as there are no mingw32-libjpeg
> or mingw64-libjpeg packages in Fedora any more (they are replaced by
> mingw-libjpeg-turbo)
> 
> The BR: mingw32-orc and mingw64-orc can't be satisfied at the moment as the
> package mingw-orc isn't available in Fedora at the moment, so that package
> needs to be put up for review first
> 
> The %{mingw_pkg_name} macro is currently obsolete. Please use the full package
> name in the places where this macro is used

Done.

> The Summary: %{summary} tags (in the subpackages) don't give the expected
> result. Please don't use the %{summary} tag

The debug package macro causes this. Moved it.

> The quotes used by the various arguments in the %mingw_configure aren't needed
> any more and can be removed. This %mingw_configure line can also be split among
> multiple lines to improve readability
> 
> Please use the %mingw_find_lang macro instead of the %find_lang macro. This
> macro generates two file lists named mingw32-gstreamer-plugins-good.lang and
> mingw64-gstreamer-plugins-good.lang with translations for mingw32 and mingw64
> packages, so don't forget to also update the %files tags

Done.

> Why are the files in the -static subpackages commented out? Right now the
> -static subpackages are empty packages

They were in the original spec and I didn't notice. Uncommented.

New spec: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good.spec
New SRPM: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good-0.10.31-2.fc17.src.rpm

Comment 3 Erik van Pienbroek 2012-04-15 17:44:01 UTC
(In reply to comment #2)
> Could you also update the Fedora wiki for MinGW packaging? You change the
> packaging requirements every time I submit a package for review. The wiki is
> highly out of date.

I was already aware of that. It was still on my TODO list for some time. Earlier today I updated the packaging guidelines to reflect the current state and announced it in our IRC channel (but apparently you didn't read that yet). The new draft can be found at https://fedoraproject.org/wiki/PackagingDrafts/MinGWCrossCompiler and will be put up for approval by the FPC so they be discussed in their next meeting

Comment 5 Erik van Pienbroek 2012-04-23 21:26:59 UTC
While testing this package I noticed a difference in the configure output between the win32 and win64 build:

win32:
configure: *** checking feature: bz2 library for matroska  ***
checking for BZ2_bzCompress in -lbz2... no

win64:
configure: *** checking feature: bz2 library for matroska  ***
checking for BZ2_bzCompress in -lbz2... yes

I suspect this is caused by the fact that exported symbols (with the __stdcall calling convention) on win32 are prefixed with an _ which doesn't happen for win64 and autoconf is too dumb to include the real <bzlib.h> header. You might want to look into this and workaround this autoconf behaviour

Comment 6 Erik van Pienbroek 2012-04-23 21:35:08 UTC
In your spec file I also noticed something odd. The %mingw_configure call includes this parameter: -disable-shout2. Shouldn't this be --disable-shout2 ?

Now that you've dropped the -static package, could you please add this to the mingw32 subpackage:
  Obsoletes: mingw32-gstreamer-plugins-good-static < 0.10.31.3%{dist}
and this one to the mingw64 subpackage:
  Obsoletes: mingw64-gstreamer-plugins-good-static < 0.10.31.3%{dist}
These are needed for people who did install the mingw{32,64}-gstreamer-plugins-good-static packages from the testing repo and try to upgrade to your Fedora version

Comment 7 Erik van Pienbroek 2012-04-23 21:37:04 UTC
On second thought, the %{dist} part shouldn't be necessary so it can be removed

Comment 8 Michael Cronenworth 2012-04-23 21:52:48 UTC
(In reply to comment #5)
> I suspect this is caused by the fact that exported symbols (with the __stdcall
> calling convention) on win32 are prefixed with an _ which doesn't happen for
> win64 and autoconf is too dumb to include the real <bzlib.h> header. You might
> want to look into this and workaround this autoconf behaviour

Thanks for catching this, however, I will argue that it is a bzip2 packaging issue. It isn't a case of prefix but suffix. The 32-bit bzip2 package contains ats. eg: BZ2_bzCompress@8

Other 32-bit MinGW packages do not use at suffixes.

Comment 9 Kalev Lember 2012-04-23 22:03:03 UTC
(In reply to comment #6)
>   Obsoletes: mingw32-gstreamer-plugins-good-static < 0.10.31.3%{dist}
> and this one to the mingw64 subpackage:
>   Obsoletes: mingw64-gstreamer-plugins-good-static < 0.10.31.3%{dist}

Erik, where did the numbers for the obsoletes come from? The testing repo has:
mingw32-gstreamer-plugins-good-static-0.10.30-4.fc17_cross.noarch.rpm
mingw64-gstreamer-plugins-good-static-0.10.30-4.fc17_cross.noarch.rpm

... so the obsoletes should be:
Obsoletes: mingw32-gstreamer-plugins-good-static < 0.10.30-5
Obsoletes: mingw64-gstreamer-plugins-good-static < 0.10.30-5

Comment 10 Erik van Pienbroek 2012-04-23 22:10:46 UTC
(In reply to comment #9)
> Erik, where did the numbers for the obsoletes come from? The testing repo has:
> mingw32-gstreamer-plugins-good-static-0.10.30-4.fc17_cross.noarch.rpm
> mingw64-gstreamer-plugins-good-static-0.10.30-4.fc17_cross.noarch.rpm
> 
> ... so the obsoletes should be:
> Obsoletes: mingw32-gstreamer-plugins-good-static < 0.10.30-5
> Obsoletes: mingw64-gstreamer-plugins-good-static < 0.10.30-5

I took the version numbers from the srpm which was initially mentioned in this review ticket. But you're correct, using the version number from the testing repo should be good enough as there shouldn't be any binary rpms of the 0.10.30-5 package (the initial srpm in this review ticket) publicly available

Comment 11 Michael Cronenworth 2012-04-25 03:48:56 UTC
Fixed configure line and added obsoletes for static package.

New spec: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good.spec
New srpm: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good-0.10.31-4.fc17.src.rpm

Comment 12 Fedora Update System 2012-04-25 15:58:19 UTC
mingw-bzip2-1.0.6-1.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/mingw-bzip2-1.0.6-1.fc17

Comment 13 Erik van Pienbroek 2012-04-29 14:32:43 UTC
$ rpmlint mingw-gstreamer-plugins-good.spec 
0 packages and 1 specfiles checked; 0 errors, 0 warnings.

$ rpmlint mingw-gstreamer-plugins-good-0.10.31-4.fc17.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

$ rpmlint mingw32-gstreamer-plugins-good-0.10.31-4.fc17.noarch.rpm mingw64-gstreamer-plugins-good-0.10.31-4.fc17.noarch.rpm 
mingw32-gstreamer-plugins-good.noarch: W: obsolete-not-provided mingw32-gstreamer-plugins-good-static
mingw64-gstreamer-plugins-good.noarch: W: obsolete-not-provided mingw64-gstreamer-plugins-good-static
2 packages and 0 specfiles checked; 0 errors, 2 warnings.

$ rpm --query --requires mingw32-gstreamer-plugins-good
mingw32(dsound.dll)  
mingw32(kernel32.dll)  
mingw32(libbz2-1.dll)  
mingw32(libcairo-2.dll)  
mingw32(libcairo-gobject-2.dll)  
mingw32(libgdk_pixbuf-2.0-0.dll)  
mingw32(libgio-2.0-0.dll)  
mingw32(libglib-2.0-0.dll)  
mingw32(libgobject-2.0-0.dll)  
mingw32(libgstaudio-0.10-0.dll)  
mingw32(libgstbase-0.10-0.dll)  
mingw32(libgstcontroller-0.10-0.dll)  
mingw32(libgstfft-0.10-0.dll)  
mingw32(libgstinterfaces-0.10-0.dll)  
mingw32(libgstnetbuffer-0.10-0.dll)  
mingw32(libgstpbutils-0.10-0.dll)  
mingw32(libgstreamer-0.10-0.dll)  
mingw32(libgstriff-0.10-0.dll)  
mingw32(libgstrtp-0.10-0.dll)  
mingw32(libgstrtsp-0.10-0.dll)  
mingw32(libgstsdp-0.10-0.dll)  
mingw32(libgsttag-0.10-0.dll)  
mingw32(libgstvideo-0.10-0.dll)  
mingw32(libintl-8.dll)  
mingw32(libjpeg-62.dll)  
mingw32(libpng15-15.dll)  
mingw32(libsoup-2.4-1.dll)  
mingw32(libsoup-gnome-2.4-1.dll)  
mingw32(libxml2-2.dll)  
mingw32(msvcrt.dll)  
mingw32(user32.dll)  
mingw32(ws2_32.dll)  
mingw32(zlib1.dll)  
mingw32-crt  
mingw32-filesystem >= 83
mingw32-gstreamer >= 0.10.36
mingw32-gstreamer-plugins-base  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpm --query --requires mingw64-gstreamer-plugins-good
mingw64(dsound.dll)  
mingw64(kernel32.dll)  
mingw64(libbz2-1.dll)  
mingw64(libcairo-2.dll)  
mingw64(libcairo-gobject-2.dll)  
mingw64(libgdk_pixbuf-2.0-0.dll)  
mingw64(libgio-2.0-0.dll)  
mingw64(libglib-2.0-0.dll)  
mingw64(libgobject-2.0-0.dll)  
mingw64(libgstaudio-0.10-0.dll)  
mingw64(libgstbase-0.10-0.dll)  
mingw64(libgstcontroller-0.10-0.dll)  
mingw64(libgstfft-0.10-0.dll)  
mingw64(libgstinterfaces-0.10-0.dll)  
mingw64(libgstnetbuffer-0.10-0.dll)  
mingw64(libgstpbutils-0.10-0.dll)  
mingw64(libgstreamer-0.10-0.dll)  
mingw64(libgstriff-0.10-0.dll)  
mingw64(libgstrtp-0.10-0.dll)  
mingw64(libgstrtsp-0.10-0.dll)  
mingw64(libgstsdp-0.10-0.dll)  
mingw64(libgsttag-0.10-0.dll)  
mingw64(libgstvideo-0.10-0.dll)  
mingw64(libintl-8.dll)  
mingw64(libjpeg-62.dll)  
mingw64(libpng15-15.dll)  
mingw64(libsoup-2.4-1.dll)  
mingw64(libsoup-gnome-2.4-1.dll)  
mingw64(libxml2-2.dll)  
mingw64(msvcrt.dll)  
mingw64(user32.dll)  
mingw64(ws2_32.dll)  
mingw64(zlib1.dll)  
mingw64-crt  
mingw64-filesystem >= 83
mingw64-gstreamer >= 0.10.36
mingw64-gstreamer-plugins-base  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1


$ rpm --query --provides mingw32-gstreamer-plugins-good
mingw32(libgstalaw.dll)  
mingw32(libgstalpha.dll)  
mingw32(libgstalphacolor.dll)  
mingw32(libgstannodex.dll)  
mingw32(libgstapetag.dll)  
mingw32(libgstaudiofx.dll)  
mingw32(libgstaudioparsers.dll)  
mingw32(libgstauparse.dll)  
mingw32(libgstautodetect.dll)  
mingw32(libgstavi.dll)  
mingw32(libgstcairo.dll)  
mingw32(libgstcutter.dll)  
mingw32(libgstdebug.dll)  
mingw32(libgstdeinterlace.dll)  
mingw32(libgstdirectsoundsink.dll)  
mingw32(libgsteffectv.dll)  
mingw32(libgstequalizer.dll)  
mingw32(libgstflv.dll)  
mingw32(libgstflxdec.dll)  
mingw32(libgstgdkpixbuf.dll)  
mingw32(libgstgoom.dll)  
mingw32(libgstgoom2k1.dll)  
mingw32(libgsticydemux.dll)  
mingw32(libgstid3demux.dll)  
mingw32(libgstimagefreeze.dll)  
mingw32(libgstinterleave.dll)  
mingw32(libgstisomp4.dll)  
mingw32(libgstjpeg.dll)  
mingw32(libgstlevel.dll)  
mingw32(libgstmatroska.dll)  
mingw32(libgstmulaw.dll)  
mingw32(libgstmultifile.dll)  
mingw32(libgstmultipart.dll)  
mingw32(libgstnavigationtest.dll)  
mingw32(libgstpng.dll)  
mingw32(libgstreplaygain.dll)  
mingw32(libgstrtp.dll)  
mingw32(libgstrtpmanager.dll)  
mingw32(libgstrtsp.dll)  
mingw32(libgstshapewipe.dll)  
mingw32(libgstsmpte.dll)  
mingw32(libgstsouphttpsrc.dll)  
mingw32(libgstspectrum.dll)  
mingw32(libgstudp.dll)  
mingw32(libgstvideobox.dll)  
mingw32(libgstvideocrop.dll)  
mingw32(libgstvideofilter.dll)  
mingw32(libgstvideomixer.dll)  
mingw32(libgstwavenc.dll)  
mingw32(libgstwavparse.dll)  
mingw32(libgsty4menc.dll)  
mingw32-gstreamer-plugins-good = 0.10.31-4.fc17

$ rpm --query --provides mingw64-gstreamer-plugins-good
mingw64(libgstalaw.dll)  
mingw64(libgstalpha.dll)  
mingw64(libgstalphacolor.dll)  
mingw64(libgstannodex.dll)  
mingw64(libgstapetag.dll)  
mingw64(libgstaudiofx.dll)  
mingw64(libgstaudioparsers.dll)  
mingw64(libgstauparse.dll)  
mingw64(libgstautodetect.dll)  
mingw64(libgstavi.dll)  
mingw64(libgstcairo.dll)  
mingw64(libgstcutter.dll)  
mingw64(libgstdebug.dll)  
mingw64(libgstdeinterlace.dll)  
mingw64(libgstdirectsoundsink.dll)  
mingw64(libgsteffectv.dll)  
mingw64(libgstequalizer.dll)  
mingw64(libgstflv.dll)  
mingw64(libgstflxdec.dll)  
mingw64(libgstgdkpixbuf.dll)  
mingw64(libgstgoom.dll)  
mingw64(libgstgoom2k1.dll)  
mingw64(libgsticydemux.dll)  
mingw64(libgstid3demux.dll)  
mingw64(libgstimagefreeze.dll)  
mingw64(libgstinterleave.dll)  
mingw64(libgstisomp4.dll)  
mingw64(libgstjpeg.dll)  
mingw64(libgstlevel.dll)  
mingw64(libgstmatroska.dll)  
mingw64(libgstmulaw.dll)  
mingw64(libgstmultifile.dll)  
mingw64(libgstmultipart.dll)  
mingw64(libgstnavigationtest.dll)  
mingw64(libgstpng.dll)  
mingw64(libgstreplaygain.dll)  
mingw64(libgstrtp.dll)  
mingw64(libgstrtpmanager.dll)  
mingw64(libgstrtsp.dll)  
mingw64(libgstshapewipe.dll)  
mingw64(libgstsmpte.dll)  
mingw64(libgstsouphttpsrc.dll)  
mingw64(libgstspectrum.dll)  
mingw64(libgstudp.dll)  
mingw64(libgstvideobox.dll)  
mingw64(libgstvideocrop.dll)  
mingw64(libgstvideofilter.dll)  
mingw64(libgstvideomixer.dll)  
mingw64(libgstwavenc.dll)  
mingw64(libgstwavparse.dll)  
mingw64(libgsty4menc.dll)  
mingw64-gstreamer-plugins-good = 0.10.31-4.fc17


$ wget --quiet http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.31.tar.xz -O - | md5sum
555845ceab722e517040bab57f9ace95  -
$ md5sum gst-plugins-good-0.10.31.tar.xz 
555845ceab722e517040bab57f9ace95  gst-plugins-good-0.10.31.tar.xz


+ 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 bzip2 issue which was spotted earlier in this review has been resolved as of mingw-bzip2-1.0.6-1.fc17

Building this package will fail when mingw-jack-audio-connection-kit or
mingw-flac are installed (which have been part of the mingw-w64 testing repo
but haven't be merged back to Fedora yet). To make sure this build failure
doesn't happen you might want to add "--disable-flac --disable-jack" to the
%mingw_configure call until these packages are also available in Fedora

The rpmlint warning about obsolete-not-provided is intentional as
it's only needed to provide a working upgrade path to people who are
updating from the mingw-w64 testing repo and therefore can be ignored

The Fedora Packaging Committee recently applied a small change to the
proposed MinGW packaging guidelines. It is now recommended to use curly
braces for the %{?mingw_package_header} and %{?mingw_debug_package} macros
Please change this before importing in Fedora


==================================================================
 The package mingw-gstreamer-plugins-good is APPROVED by epienbro
==================================================================

Comment 14 Michael Cronenworth 2012-04-30 13:30:22 UTC
New Spec: http://michael.cronenworth.com/RPMS/mingw-gstreamer-plugins-good.spec

Thanks, Erik.

Comment 15 Michael Cronenworth 2012-04-30 13:31:56 UTC
New Package SCM Request
=======================
Package Name: mingw-gstreamer-plugins-good
Short Description: Cross compiled GStreamer plug-ins good
Owners: mooninite
Branches: f17

Comment 16 Gwyn Ciesla 2012-04-30 13:55:33 UTC
Git done (by process-git-requests).

Comment 17 Fedora Update System 2012-04-30 15:42:13 UTC
mingw-gstreamer-plugins-good-0.10.31-5.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/mingw-gstreamer-plugins-good-0.10.31-5.fc17

Comment 18 Fedora Update System 2012-05-02 20:31:02 UTC
Package mingw-gstreamer-plugins-good-0.10.31-5.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing mingw-gstreamer-plugins-good-0.10.31-5.fc17'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-7057/mingw-gstreamer-plugins-good-0.10.31-5.fc17
then log in and leave karma (feedback).

Comment 19 Fedora Update System 2012-05-04 22:55:00 UTC
mingw-bzip2-1.0.6-1.fc17, mingw-boost-1.48.0-8.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 20 Fedora Update System 2012-05-07 04:18:10 UTC
mingw-gstreamer-plugins-good-0.10.31-5.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.