Bug 673784 - Rename Request: mingw32-filesystem -> mingw-filesystem - Cross compiler base filesystem and environment
Summary: Rename Request: mingw32-filesystem -> mingw-filesystem - Cross compiler base ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Michael Cronenworth
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 673786 673788 673790 673792
TreeView+ depends on / blocked
 
Reported: 2011-01-30 15:53 UTC by Erik van Pienbroek
Modified: 2014-12-23 19:59 UTC (History)
10 users (show)

Fixed In Version: mingw-filesystem-69-15.fc17
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-02-28 10:45:05 UTC
Type: ---
Embargoed:
mike: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Erik van Pienbroek 2011-01-30 15:53:11 UTC
Spec URL: http://svn.openftd.org/svn/fedora_cross/cross-filesystem/cross-filesystem.spec
SRPM URL: http://build1.openftd.org/fedora-cross/src/cross-filesystem-65-1.fc15_cross.src.rpm
Description:
This package contains the base filesystem layout, RPM macros and
environment for all Fedora Cross compiler packages.

This environment is maintained by the Fedora MinGW SIG at:

  http://fedoraproject.org/wiki/SIGs/MinGW


This is a rename request as it will replace the original mingw32-filesystem package. For more details and a link to a testing repository, see https://fedoraproject.org/wiki/Features/CrossCompilerFramework and https://fedoraproject.org/wiki/PackagingDrafts/CrossCompilerFramework

Comment 1 Ralf Corsepius 2011-01-30 17:18:18 UTC
I am very opposed to this renamer be cause this package doesn't provide what it name suggests. It is not a general cross-toolchain filesystem.

Comment 2 Dan Horák 2011-01-30 17:31:30 UTC
I'm with Ralf here, unless the whole cross-* package set will provide a general cross-tools framework, the naming of the packages is misleading. It looks to me as very mingw oriented.

Comment 3 Ralf Corsepius 2011-01-30 18:03:57 UTC
Also, there is another issue with this package: 

The target name: x86_64-w64-mingw32

# rpm -qlp /var/lib/mock/fedora-rawhide-x86_64/result/mingw64-filesystem-65-1.fc15.noarch.rpm 
...
/usr/x86_64-w64-mingw32
...

I fail to understand what this target shall be. To me, this name seems unlogic.

Comment 4 Richard W.M. Jones 2011-01-30 18:06:21 UTC
I think Ralf has a point here.

However the problem with the proposal is simply the choice of
"cross-*" as a prefix.  I believe since this is not a truly
general cross-compiler (ie. not targetted at arm embedded etc)
that we should just come up with another prefix.

Since we aim to cross-compiler for common desktop platforms
(ie. Windows 32/64 + Mac OS X) how about calling it
crossdesktop-*?

Comment 5 Erik van Pienbroek 2011-01-30 18:35:51 UTC
As mentioned on the link in the initial message the plan is to rename all current mingw32-* package to cross-*. The idea behind this is that packagers can maintain packages for multiple targets using a single spec file. Initially we will support the Win32 and Win64 targets in this framework, but support for Mac OS X can be added quite easily (it has been proven to work in a testing repository, see the link in the initial message for more about that)

I'm okay with using a different prefix like the crossdesktop-* which Richard suggested if you prefer that

The target name x86_64-w64-mingw32 might look a bit odd for outsiders, but it's the default target name used by the mingw-w64 developers. I just dropped the question about the history behind that name in the #mingw-w64 IRC channel and I got multiple answers back. The main reason is compatibility. Think about the autotools where a large amount of checks look for the term 'mingw32' in the target to find out whether the target is a MS Windows one. When the 'w64' part in the target name is used certain compiler features become available like unicode startup (important for kernel-mode drivers and unicode features apps) and more. More details about this can also be found at https://sourceforge.net/apps/trac/mingw-w64/wiki/Feature%20list and http://www.ruby-forum.com/topic/217754

Comment 6 Ralf Corsepius 2011-01-31 10:52:25 UTC
(In reply to comment #5)
> As mentioned on the link in the initial message the plan is to rename all
> current mingw32-* package to cross-*.
With all due respect, to me this plan is beyond reason, because mingw, rsp. their 2 sub targets mingw32 and mingw64 are only a very small subset of cross-targets.


> I'm okay with using a different prefix like the crossdesktop-* which Richard
> suggested if you prefer that

IMO, mingw-filesystem would be an appropriate name, because that's what it currently is - The rest of it is wishful thinking.
 
> The target name x86_64-w64-mingw32 might look a bit odd for outsiders, but it's
> the default target name used by the mingw-w64 developers.
Well, ... this doesn't mean their decisions are wise ;)

x86_64-w64-mingw32 (cpu=x86_64, os=mingw32) is multiply problematic:
- the "32" in mingw32 originally stood for "MinGW on 32bit Windows",
=> a 64bit MinGW for "MinGW on 64bit Windows" should be named "mingw64"
- Configure scripts currently presume "os=mingw32" to imply 32bit MinGW.
...

I.e. to me reasonable choices would be
x86_64-pc-mingw + i686-pc-mingw
or 
x86_64-pc-mingw64 + i686-pc-mingw32

> I just dropped the
> question about the history behind that name in the #mingw-w64 IRC channel and I
> got multiple answers back. The main reason is compatibility. Think about the
> autotools where a large amount of checks look for the term 'mingw32' in the
> target to find out whether the target is a MS Windows one. When the 'w64' part
> in the target name is used

The 2nd field of a target-triple is the "vendor"/"manufacturer" field, which originally was meant to be the hard-ware manufacturer of a specific board, which later became abused by Linux-vendors to put their brand into (*-redhat-*, *-suse-*).

I.e. if mingw wants to follow the "HW vendor" path, their 2nd field should be "pc" (The generic value), rsp, if they want to follow the SW vendor path, it should be "microsoft".

In any case, the vendor field is without much practical importance and unused in 99% of all configure scripts (ignored).

What matters are the "cpu"-field and the "OS" field - They need to provide sufficient information for configure scripts to destinguish architectures and OSes.

That said, I consider x86_64-w64-mingw32 to be a mistake.

Comment 7 Richard W.M. Jones 2011-01-31 11:17:04 UTC
(In reply to comment #6)
> > I'm okay with using a different prefix like the crossdesktop-* which Richard
> > suggested if you prefer that
> 
> IMO, mingw-filesystem would be an appropriate name, because that's what it
> currently is - The rest of it is wishful thinking.

"mingw" has always been an unfortunate choice of name.  Really
the cross-compiler has very little to do with the mingw.org project.
mingw-w64 is a completely separate fork.  And there is a separate
mingw.org-related binary project which is nothing to do with us,
but people frequently get confused over the two.

And *crucially* we are adding support for Mac OS X which doesn't
use mingw at all.

This is why I'm suggesting crossdesktop-* or some other choice
which doesn't involve the 5 letters "mingw".

> > The target name x86_64-w64-mingw32 might look a bit odd for outsiders, but it's
> > the default target name used by the mingw-w64 developers.
> Well, ... this doesn't mean their decisions are wise ;)
> 
> x86_64-w64-mingw32 (cpu=x86_64, os=mingw32) is multiply problematic:
> - the "32" in mingw32 originally stood for "MinGW on 32bit Windows",
> => a 64bit MinGW for "MinGW on 64bit Windows" should be named "mingw64"
> - Configure scripts currently presume "os=mingw32" to imply 32bit MinGW.
> ...
>
> I.e. to me reasonable choices would be
> x86_64-pc-mingw + i686-pc-mingw
> or 
> x86_64-pc-mingw64 + i686-pc-mingw32

Whatever you think doesn't really matter, since this is the
choice of the mingw-w64 upstream project.  They are in a much
better situation to judge how it should work.

Comment 8 Ralf Corsepius 2011-01-31 11:53:37 UTC
(In reply to comment #7)
> (In reply to comment #6)
> > > I'm okay with using a different prefix like the crossdesktop-* which Richard
> > > suggested if you prefer that
> > 
> > IMO, mingw-filesystem would be an appropriate name, because that's what it
> > currently is - The rest of it is wishful thinking.
> 
> "mingw" has always been an unfortunate choice of name. 
I disagree - It would have been the appropriate choice.

> And *crucially* we are adding support for Mac OS X which doesn't
> use mingw at all.
Well, has the licence/copyright situation changed?
To my knowledge MacOSX requires non-free code from Apple.
  

> > > The target name x86_64-w64-mingw32 might look a bit odd for outsiders, but it's
> > > the default target name used by the mingw-w64 developers.
> > Well, ... this doesn't mean their decisions are wise ;)
> > 
> > x86_64-w64-mingw32 (cpu=x86_64, os=mingw32) is multiply problematic:
> > - the "32" in mingw32 originally stood for "MinGW on 32bit Windows",
> > => a 64bit MinGW for "MinGW on 64bit Windows" should be named "mingw64"
> > - Configure scripts currently presume "os=mingw32" to imply 32bit MinGW.
> > ...
> >
> > I.e. to me reasonable choices would be
> > x86_64-pc-mingw + i686-pc-mingw
> > or 
> > x86_64-pc-mingw64 + i686-pc-mingw32
> 
> Whatever you think doesn't really matter,
Correct.

> since this is the
> choice of the mingw-w64 upstream project.  They are in a much
> better situation to judge how it should work.
I disagree. One thing I had learnt with MinGW is them being Windows focused folks with little GNU SW experience - One of the situation this shows is situations like these.

Comment 9 Michael Cronenworth 2011-01-31 14:33:44 UTC
(In reply to comment #8)
> I disagree - It would have been the appropriate choice.

Why is it if you didn't create it, Ralf, you always disagree?

cross-* is the /start/ of the cross compiler project. Eric/Richard are starting the cross compiler project with only MinGW, but with the plan to expand to OS X and whatever other cross compiling.

In your mind, Ralf, Eric/Richard need to keep the cross compiler package names split?? THAT doesn't make any sense.

Comment 10 Ralf Corsepius 2011-01-31 16:32:25 UTC
(In reply to comment #9)
> (In reply to comment #8)
> > I disagree - It would have been the appropriate choice.
> 
> Why is it if you didn't create it,
... because I don't see any sense in such a package.
... and because I have a cross compiler infrastructure package of my own,

[rude as-hominem offense delete] 

> cross-* is the /start/ of the cross compiler project.
It's some people's cross-compiler project - Not mine.

> In your mind, Ralf, Eric/Richard need to keep the cross compiler package names
> split??
They can call their package by what ever name they want, but calling a package "cross-filesystem", which doesn't do what it claims, is not useful.

Comment 11 Richard W.M. Jones 2011-01-31 16:36:31 UTC
OK, but I don't think crossdesktop-* is going to offend anyone's
sensibilities.  It reflects what we are doing: offering a cross
compiler that targets the most popular desktop systems out there
today (where "most popular" is measured by market share, and
"desktop" doesn't include embedded/mobile systems).

Comment 12 Ralf Corsepius 2011-01-31 16:58:42 UTC
And how do you want to continue with binutils, gcc etc?

Consider packaging cross compilers from Fedora to non-native Fedora targets, other Linuxes (RHEL4/5/6, openSUSE-11.2/11.3, ...), some "plain metal targets", exotic embedded target or other *nix (e.g. *BSDs).

It's simply impractiable to build all of them from one "single unified source-package" (not even MinGW32/MinGW64/MacOSX) 
=> cross-binutils/gcc packages don't even make less sense than a common base package.

Comment 13 Erik van Pienbroek 2011-01-31 19:15:33 UTC
> (In reply to comment #5)
> That said, I consider x86_64-w64-mingw32 to be a mistake.

I agree with you that x86_64-w64-mingw32 isn't an ideal name, but we've got to do with it for now. While it technically could be made possible to use a different target it will require patching of almost every package and the toolchain itself will divert from upstream. Is that really a direction we should be going..?

How about these names for the source rpms:

crossdesktop-filesystem - Contains the binary RPMs mingw32-filesystem, mingw64-filesytem and (later) darwinx-filesystem
mingw-binutils - Contains the binary RPMs mingw32-binutils and mingw64-binutils
mingw-gcc - Contains the binary RPMs mingw32-gcc and mingw64-gcc
mingw-headers - Contains the binary RPMs mingw32-headers and mingw64-headers
mingw-crt - Contains the binary RPMs mingw32-crt and mingw64-crt

and in the future, once legal issues get cleared :
darwinx-odcctools - Contains the binutils equivalent for Mac OS X
darwinx-gcc - Contains Apple's version of GCC(In reply to comment #6)
darwinx-sdk - Contains the various headers and libraries of a default Mac OS X environment

All mingw32-* packages could then get renamed to crossdesktop-* packages and produce binary RPMs called mingw32-*, mingw64-* (and later darwinx-*)

Comment 14 amorilia 2011-02-12 09:50:24 UTC
I am no packager (yet), but I really would like to help out. Any objections if I take this for review, or is this against the rules? For clarity: I've so far only done one Fedora package review in the past (mingw32-win-iconv, BZ #642208), so this would be my second one.

Comment 15 Jason Tibbitts 2011-02-15 19:36:31 UTC
If you are not a packager, you cannot approve packages or take review tickets but of course you are welcome to make all the comments you like.

Comment 16 amorilia 2011-02-21 20:51:33 UTC
Ok. Informal review follows.


+ OK
! Needs to be looked into
/ Not applicable
* Overridden by MinGW guidelines
? Unsure


=======
Rpmlint
=======

$ rpmlint cross-filesystem.spec 
cross-filesystem.spec:75: W: unversioned-explicit-provides mingw32(kernel32.dll)
cross-filesystem.spec:76: W: unversioned-explicit-provides mingw32(msvcrt.dll)
cross-filesystem.spec:77: W: unversioned-explicit-provides mingw32(advapi32.dll)
cross-filesystem.spec:78: W: unversioned-explicit-provides mingw32(user32.dll)
cross-filesystem.spec:79: W: unversioned-explicit-provides mingw32(dnsapi.dll)
cross-filesystem.spec:80: W: unversioned-explicit-provides mingw32(ole32.dll)
cross-filesystem.spec:81: W: unversioned-explicit-provides mingw32(shell32.dll)
cross-filesystem.spec:82: W: unversioned-explicit-provides mingw32(shlwapi.dll)
cross-filesystem.spec:83: W: unversioned-explicit-provides mingw32(ws2_32.dll)
cross-filesystem.spec:84: W: unversioned-explicit-provides mingw32(gdi32.dll)
cross-filesystem.spec:85: W: unversioned-explicit-provides mingw32(msimg32.dll)
cross-filesystem.spec:86: W: unversioned-explicit-provides mingw32(comctl32.dll)
cross-filesystem.spec:87: W: unversioned-explicit-provides mingw32(comdlg32.dll)
cross-filesystem.spec:88: W: unversioned-explicit-provides mingw32(imm32.dll)
cross-filesystem.spec:89: W: unversioned-explicit-provides mingw32(crypt32.dll)
cross-filesystem.spec:90: W: unversioned-explicit-provides mingw32(oleaut32.dll)
cross-filesystem.spec:91: W: unversioned-explicit-provides mingw32(opengl32.dll)
cross-filesystem.spec:92: W: unversioned-explicit-provides mingw32(version.dll)
cross-filesystem.spec:93: W: unversioned-explicit-provides mingw32(winmm.dll)
cross-filesystem.spec:94: W: unversioned-explicit-provides mingw32(rpcrt4.dll)
cross-filesystem.spec:95: W: unversioned-explicit-provides mingw32(gdiplus.dll)
cross-filesystem.spec:96: W: unversioned-explicit-provides mingw32(usp10.dll)
cross-filesystem.spec:97: W: unversioned-explicit-provides mingw32(msdmo.dll)
cross-filesystem.spec:98: W: unversioned-explicit-provides mingw32(odbc32.dll)
cross-filesystem.spec:108: W: unversioned-explicit-provides mingw64(kernel32.dll)
cross-filesystem.spec:109: W: unversioned-explicit-provides mingw64(msvcrt.dll)
cross-filesystem.spec:110: W: unversioned-explicit-provides mingw64(advapi32.dll)
cross-filesystem.spec:111: W: unversioned-explicit-provides mingw64(user32.dll)
cross-filesystem.spec:112: W: unversioned-explicit-provides mingw64(dnsapi.dll)
cross-filesystem.spec:113: W: unversioned-explicit-provides mingw64(ole32.dll)
cross-filesystem.spec:114: W: unversioned-explicit-provides mingw64(shell32.dll)
cross-filesystem.spec:115: W: unversioned-explicit-provides mingw64(shlwapi.dll)
cross-filesystem.spec:116: W: unversioned-explicit-provides mingw64(ws2_32.dll)
cross-filesystem.spec:117: W: unversioned-explicit-provides mingw64(gdi32.dll)
cross-filesystem.spec:118: W: unversioned-explicit-provides mingw64(msimg32.dll)
cross-filesystem.spec:119: W: unversioned-explicit-provides mingw64(comctl32.dll)
cross-filesystem.spec:120: W: unversioned-explicit-provides mingw64(comdlg32.dll)
cross-filesystem.spec:121: W: unversioned-explicit-provides mingw64(imm32.dll)
cross-filesystem.spec:122: W: unversioned-explicit-provides mingw64(crypt32.dll)
cross-filesystem.spec:123: W: unversioned-explicit-provides mingw64(oleaut32.dll)
cross-filesystem.spec:124: W: unversioned-explicit-provides mingw64(opengl32.dll)
cross-filesystem.spec:125: W: unversioned-explicit-provides mingw64(version.dll)
cross-filesystem.spec:126: W: unversioned-explicit-provides mingw64(winmm.dll)
cross-filesystem.spec:127: W: unversioned-explicit-provides mingw64(rpcrt4.dll)
cross-filesystem.spec:128: W: unversioned-explicit-provides mingw64(gdiplus.dll)
cross-filesystem.spec:129: W: unversioned-explicit-provides mingw64(usp10.dll)
cross-filesystem.spec:130: W: unversioned-explicit-provides mingw64(msdmo.dll)
cross-filesystem.spec:131: W: unversioned-explicit-provides mingw64(odbc32.dll)
cross-filesystem.spec:174: W: macro-in-comment %{_prefix}
0 packages and 1 specfiles checked; 0 errors, 49 warnings.

[!] Remove lines 173-174 to get rid of the macro-in-comment
    warning. Other warnings are obviously false positives (per
    comments in spec file).

$ rpmlint cross-filesystem-65-1.fc15_cross.src.rpm 
cross-filesystem.src: W: strange-permission cross-find-provides.sh 0775L
cross-filesystem.src: W: strange-permission cross-find-debuginfo.sh 0775L
cross-filesystem.src: W: strange-permission cross-find-requires.sh 0775L
cross-filesystem.src: W: strange-permission cross-scripts.sh 0775L
cross-filesystem.src: W: strange-permission cross-find-lang.sh 0775L
cross-filesystem.src:75: W: unversioned-explicit-provides mingw32(kernel32.dll)
cross-filesystem.src:76: W: unversioned-explicit-provides mingw32(msvcrt.dll)
cross-filesystem.src:77: W: unversioned-explicit-provides mingw32(advapi32.dll)
cross-filesystem.src:78: W: unversioned-explicit-provides mingw32(user32.dll)
cross-filesystem.src:79: W: unversioned-explicit-provides mingw32(dnsapi.dll)
cross-filesystem.src:80: W: unversioned-explicit-provides mingw32(ole32.dll)
cross-filesystem.src:81: W: unversioned-explicit-provides mingw32(shell32.dll)
cross-filesystem.src:82: W: unversioned-explicit-provides mingw32(shlwapi.dll)
cross-filesystem.src:83: W: unversioned-explicit-provides mingw32(ws2_32.dll)
cross-filesystem.src:84: W: unversioned-explicit-provides mingw32(gdi32.dll)
cross-filesystem.src:85: W: unversioned-explicit-provides mingw32(msimg32.dll)
cross-filesystem.src:86: W: unversioned-explicit-provides mingw32(comctl32.dll)
cross-filesystem.src:87: W: unversioned-explicit-provides mingw32(comdlg32.dll)
cross-filesystem.src:88: W: unversioned-explicit-provides mingw32(imm32.dll)
cross-filesystem.src:89: W: unversioned-explicit-provides mingw32(crypt32.dll)
cross-filesystem.src:90: W: unversioned-explicit-provides mingw32(oleaut32.dll)
cross-filesystem.src:91: W: unversioned-explicit-provides mingw32(opengl32.dll)
cross-filesystem.src:92: W: unversioned-explicit-provides mingw32(version.dll)
cross-filesystem.src:93: W: unversioned-explicit-provides mingw32(winmm.dll)
cross-filesystem.src:94: W: unversioned-explicit-provides mingw32(rpcrt4.dll)
cross-filesystem.src:95: W: unversioned-explicit-provides mingw32(gdiplus.dll)
cross-filesystem.src:96: W: unversioned-explicit-provides mingw32(usp10.dll)
cross-filesystem.src:97: W: unversioned-explicit-provides mingw32(msdmo.dll)
cross-filesystem.src:98: W: unversioned-explicit-provides mingw32(odbc32.dll)
cross-filesystem.src:108: W: unversioned-explicit-provides mingw64(kernel32.dll)
cross-filesystem.src:109: W: unversioned-explicit-provides mingw64(msvcrt.dll)
cross-filesystem.src:110: W: unversioned-explicit-provides mingw64(advapi32.dll)
cross-filesystem.src:111: W: unversioned-explicit-provides mingw64(user32.dll)
cross-filesystem.src:112: W: unversioned-explicit-provides mingw64(dnsapi.dll)
cross-filesystem.src:113: W: unversioned-explicit-provides mingw64(ole32.dll)
cross-filesystem.src:114: W: unversioned-explicit-provides mingw64(shell32.dll)
cross-filesystem.src:115: W: unversioned-explicit-provides mingw64(shlwapi.dll)
cross-filesystem.src:116: W: unversioned-explicit-provides mingw64(ws2_32.dll)
cross-filesystem.src:117: W: unversioned-explicit-provides mingw64(gdi32.dll)
cross-filesystem.src:118: W: unversioned-explicit-provides mingw64(msimg32.dll)
cross-filesystem.src:119: W: unversioned-explicit-provides mingw64(comctl32.dll)
cross-filesystem.src:120: W: unversioned-explicit-provides mingw64(comdlg32.dll)
cross-filesystem.src:121: W: unversioned-explicit-provides mingw64(imm32.dll)
cross-filesystem.src:122: W: unversioned-explicit-provides mingw64(crypt32.dll)
cross-filesystem.src:123: W: unversioned-explicit-provides mingw64(oleaut32.dll)
cross-filesystem.src:124: W: unversioned-explicit-provides mingw64(opengl32.dll)
cross-filesystem.src:125: W: unversioned-explicit-provides mingw64(version.dll)
cross-filesystem.src:126: W: unversioned-explicit-provides mingw64(winmm.dll)
cross-filesystem.src:127: W: unversioned-explicit-provides mingw64(rpcrt4.dll)
cross-filesystem.src:128: W: unversioned-explicit-provides mingw64(gdiplus.dll)
cross-filesystem.src:129: W: unversioned-explicit-provides mingw64(usp10.dll)
cross-filesystem.src:130: W: unversioned-explicit-provides mingw64(msdmo.dll)
cross-filesystem.src:131: W: unversioned-explicit-provides mingw64(odbc32.dll)
cross-filesystem.src:174: W: macro-in-comment %{_prefix}
1 packages and 0 specfiles checked; 0 errors, 54 warnings.

[!] "chmod 755" all scripts.

$ rpm -i cross-filesystem-65-1.fc15_cross.src.rpm

Install works.

$ svn co http://svn.openftd.org/svn/fedora_cross/cross-filesystem/
$ diff cross-filesystem ~/rpmbuild/SOURCES/
Only in cross-filesystem: cross-filesystem.spec
Only in cross-filesystem: Makefile
Only in cross-filesystem: .svn

Looks fine.

$ rpmbuild -ba cross-filesystem.spec
...

Build succeeds.

$ rpmlint ~/rpmbuild/RPMS/noarch/cross-filesystem-65-1.fc14.noarch.rpm 
cross-filesystem.noarch: W: no-documentation
1 packages and 0 specfiles checked; 0 errors, 1 warnings.

$ rpmlint ~/rpmbuild/RPMS/noarch/cross-filesystem-scripts-65-1.fc14.noarch.rpm 
cross-filesystem-scripts.noarch: W: unexpanded-macro %description -l C %{description}
cross-filesystem-scripts.noarch: W: only-non-binary-in-usr-lib
1 packages and 0 specfiles checked; 0 errors, 2 warnings.

[!] unexpanded-macro:

    The cross-filesystem-scripts-description needs fixing (the
    packaging guidelines suggest either to avoid macros in the
    description, or to define the macro explicitly in the spec file).

[?] only-non-binary-in-usr-lib:

    This seems to suggest that everything should go into %{_datadir}
    instead (i.e. /usr/share/). Since these all concern rpm scripts,
    am I right that an exception applies (because rpm generally
    installs its scripts in /usr/lib/rpm and nowhere else)?

$ rpmlint ~/rpmbuild/RPMS/noarch/mingw32-filesystem-65-1.fc14.noarch.rpm 
mingw32-filesystem.noarch: W: unexpanded-macro %description -l C %{description}
mingw32-filesystem.noarch: W: obsolete-not-provided mingw32-dlfcn
mingw32-filesystem.noarch: W: no-documentation
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-configure /usr/libexec/cross-scripts
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-configure
mingw32-filesystem.noarch: W: non-standard-dir-in-usr i686-w64-mingw32
1 packages and 0 specfiles checked; 0 errors, 6 warnings.

[!] unexpanded-macro: Fix description.
[!] obsolete-not-provided: Add "Provides: mingw32-dlfcn = 0-0.8.r11%{?dist}".
no-documentation: Bogus warning.
dangling-symlink: Bogus warning (link provided by required subpackage).
no-manual-page-for-binary: Bogus.
non-standard-dir-in-usr: Approved by Fedora MinGW guidelines.

$ rpmlint ~/rpmbuild/RPMS/noarch/mingw64-filesystem-65-1.fc14.noarch.rpm 
mingw64-filesystem.noarch: W: unexpanded-macro %description -l C %{description}
mingw64-filesystem.noarch: W: no-documentation
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-configure /usr/libexec/cross-scripts
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-configure
1 packages and 0 specfiles checked; 0 errors, 4 warnings.

Dito.

============
Dependencies
============

$ su -c 'yum erase mingw*' # make sure everything is clean
$ su -c 'yum install mingw32-filesystem'
$ rpm -qa | grep mingw
mingw32-filesystem-63-1.fc14.noarch
$ su -c 'rpm -Uv /home/amorilia/rpmbuild/RPMS/noarch/cross-filesystem*.rpm /home/amorilia/rpmbuild/RPMS/noarch/mingw??-filesystem*.rpm'
Preparing packages for installation...
cross-filesystem-scripts-65-1.fc14
mingw32-filesystem-65-1.fc14
mingw64-filesystem-65-1.fc14
cross-filesystem-65-1.fc14

$ rpmquery --requires cross-filesystem
setup  
rpm  
rpmlint >= 0.85-2
mingw32-filesystem = 65-1.fc14
mingw64-filesystem = 65-1.fc14
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpmquery --requires cross-filesystem-scripts
/bin/bash  
/bin/sh  
config(cross-filesystem-scripts) = 65-1.fc14
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpmquery --requires mingw32-filesystem
config(mingw32-filesystem) = 65-1.fc14
cross-filesystem-scripts = 65-1.fc14
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpmquery --requires mingw64-filesystem
config(mingw64-filesystem) = 65-1.fc14
cross-filesystem-scripts = 65-1.fc14
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

$ rpmquery --provides cross-filesystem
cross-filesystem = 65-1.fc14

$ rpmquery --provides cross-filesystem-scripts
config(cross-filesystem-scripts) = 65-1.fc14
cross-filesystem-scripts = 65-1.fc14

$ rpmquery --provides mingw32-filesystem
config(mingw32-filesystem) = 65-1.fc14
mingw32(advapi32.dll)  
mingw32(comctl32.dll)  
mingw32(comdlg32.dll)  
mingw32(crypt32.dll)  
mingw32(dnsapi.dll)  
mingw32(gdi32.dll)  
mingw32(gdiplus.dll)  
mingw32(imm32.dll)  
mingw32(kernel32.dll)  
mingw32(msdmo.dll)  
mingw32(msimg32.dll)  
mingw32(msvcrt.dll)  
mingw32(odbc32.dll)  
mingw32(ole32.dll)  
mingw32(oleaut32.dll)  
mingw32(opengl32.dll)  
mingw32(rpcrt4.dll)  
mingw32(shell32.dll)  
mingw32(shlwapi.dll)  
mingw32(user32.dll)  
mingw32(usp10.dll)  
mingw32(version.dll)  
mingw32(winmm.dll)  
mingw32(ws2_32.dll)  
mingw32-filesystem = 65-1.fc14

$ rpmquery --provides mingw64-filesystem
config(mingw64-filesystem) = 65-1.fc14
mingw64(advapi32.dll)  
mingw64(comctl32.dll)  
mingw64(comdlg32.dll)  
mingw64(crypt32.dll)  
mingw64(dnsapi.dll)  
mingw64(gdi32.dll)  
mingw64(gdiplus.dll)  
mingw64(imm32.dll)  
mingw64(kernel32.dll)  
mingw64(msdmo.dll)  
mingw64(msimg32.dll)  
mingw64(msvcrt.dll)  
mingw64(odbc32.dll)  
mingw64(ole32.dll)  
mingw64(oleaut32.dll)  
mingw64(opengl32.dll)  
mingw64(rpcrt4.dll)  
mingw64(shell32.dll)  
mingw64(shlwapi.dll)  
mingw64(user32.dll)  
mingw64(usp10.dll)  
mingw64(version.dll)  
mingw64(winmm.dll)  
mingw64(ws2_32.dll)  
mingw64-filesystem = 65-1.fc14

=======
Testing
=======

$ su -c 'yum install mingw32-gcc'
$ mingw32-configure ...

[!] Obviously breaks stuff at the moment because the scripts refer to
    the new mingw-w64 toolchain. But this is expected behaviour. See

http://fedoraproject.org/wiki/MinGW/CrossCompilerFramework#Roadmap

=================================
Fedora MinGW Packaging Guidelines
=================================

[/] Track Fedora native package versions: stay at same version, include all the same patches as the native Fedora package, and be built with the same configuration options. 
[+] Packages named by prefixing upstream package name with mingw32-
[/] Use of standard mingw RPM macros %{_mingw32_xxx}
[+] Dll dependencies expressed as mingw32(*.dll)
[/] Dependencies: %global _use_internal_dependency_generator 0 %global __find_requires %{_mingw32_findrequires} %global __find_provides %{_mingw32_findprovides}
[/] BuildRequires: mingw32-filesystem >= xx
[+] BuildArch: noarch
[/] All files are installed in %{_mingw32_sysroot}
[/] .dll in %{_mingw32_bindir}, .dll.a (and .la and .a where applicable) in %{_mingw32_libdir}
[/] No man and info files which are already in Fedora native package
[/] Static libraries in -static subpackage
[/] Stripping: %global __strip %{_mingw32_strip} %global __objdump %{_mingw32_objdump}

Not in guidelines, but seems to be policy:

[/] Debuginfo: %define __debug_install_post %{_mingw32_debug_install_post} %{_mingw32_debug_package}  
[/] Package does not contain .exe files.

===========================
Fedora Packaging Guidelines
===========================

[+] MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review.
[+] MUST: The package must be named according to the Package Naming Guidelines .
[+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption. [2] .
[+] MUST: The package must meet the Packaging Guidelines .
[+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines .
[+] MUST: The License field in the package spec file must match the actual license. 
[+] MUST: If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package must be included in %doc.
[+] MUST: The spec file must be written in American English. 
[+] MUST: The spec file for the package MUST be legible. 
[+] MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use md5sum for this task. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this.
[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture. 
[/] MUST: If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch. Each architecture listed in ExcludeArch MUST have a bug filed in bugzilla, describing the reason that the package does not compile/build/work on that architecture. The bug number MUST be placed in a comment, next to the corresponding ExcludeArch line. 
[+] MUST: All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense.
[/] MUST: The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden.
[/] MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun. 
[+] MUST: Packages must NOT bundle copies of system libraries.
[/] MUST: If the package is designed to be relocatable, the packager must state this fact in the request for review, along with the rationalization for relocation of that specific package. Without this, use of Prefix: /usr is considered a blocker. 
[+] MUST: A package must own all directories that it creates. If it does not create a directory that it uses, then it should require a package which does create that directory. 
[+] MUST: A Fedora package must not list a file more than once in the spec file's %files listings. (Notable exception: license texts in specific situations)
[+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example. Every %files section must include a %defattr(...) line. 
[+] MUST: Each package must consistently use macros. 
[+] MUST: The package must contain code, or permissable content. 
[/] MUST: Large documentation files must go in a -doc subpackage. (The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity). 
[+] MUST: If a package includes something as %doc, it must not affect the runtime of the application. To summarize: If it is in %doc, the program must run properly if it is not present. 
[/] MUST: Header files must be in a -devel package. 
[/] MUST: Static libraries must be in a -static package. 
[/] MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package. 
[/] MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release} 
[+] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.
[/] MUST: Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. If you feel that your packaged GUI application does not need a .desktop file, you must put a comment in the spec file with your explanation. 
[+] MUST: Packages must not own files or directories already owned by other packages. The rule of thumb here is that the first package to be installed should own the files or directories that other packages may rely upon. This means, for example, that no package in Fedora should ever share ownership with any of the files or directories owned by the filesystem or man package. If you feel that you have a good reason to own a file or directory that another package owns, then please present that at package review time. 
[+] MUST: All filenames in rpm packages must be valid UTF-8. 
[/] SHOULD: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. 
[/] SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available. 
[+] SHOULD: The reviewer should test that the package builds in mock. 

mock -r fedora-14-x86_64 ~/rpmbuild/SRPMS/cross-filesystem-65-1.fc14.src.rpm
mock -r fedora-14-i386 ~/rpmbuild/SRPMS/cross-filesystem-65-1.fc14.src.rpm

Both work.

[+] SHOULD: The package should compile and build into binary rpms on all supported architectures. 
[/] SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.
[+] SHOULD: If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity. 
[?] SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency. 

We have

cross-filesystem depends on mingw32/64-filesystem
mingw32/64-filesystem depends on cross-filesystem-scripts

This seems ok (e.g. people not wanting mingw64 do not need to install
mingw64-filesystem), so I don't think this needs fixing.

[/] SHOULD: The placement of pkgconfig(.pc) files depends on their usecase, and this is usually for development purposes, so should be placed in a -devel pkg. A reasonable exception is that the main pkg itself is a devel tool not installed in a user runtime, e.g. gcc or gdb. 
[/] SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the file instead of the file itself. 
[/] SHOULD: your package should contain man pages for binaries/scripts. If it doesn't, work with upstream to add them where they make sense.


=================
Summary of issues
=================

1. Remove lines 173-174 in spec to get rid of the macro-in-comment warning.

2. "chmod 755" all scripts.

3. Fix subpackage descriptions (avoid macro, or use a macro that is
   explicitly defined in the spec file).

4. Add "Provides: mingw32-dlfcn = 0-0.8.r11%{?dist}" to mingw32-filesystem.

5. Not an issue, but an important comment: the package breaks the
   current mingw32 toolchain due to the switch to mingw-w64. This is
   unavoidable. Strategy for getting this into rawhide sanely is
   described here:

   http://fedoraproject.org/wiki/MinGW/CrossCompilerFramework#Roadmap

Unsure:

6. The only-non-binary-in-usr-lib rpmlint warning seems bogus (rpm
   scripts should indeed go into /usr/lib?)

7. (Too?) strictly speaking, dependencies do not follow guidelines;
   nevertheless it looks sane to me (see details in review above).

Comment 17 Erik van Pienbroek 2011-03-17 18:10:34 UTC
After discussion with some members of the Fedora MinGW SIG we decided to drop the 'cross-*' prefix for now and stick with 'mingw-*' as prefix. Support for Mac OS X may take a long while to get ready (possible even never because of the legal issues), so we can use 'mingw-*' for now. We've also filed a ticket at the Fedora Packaging Committee with a request to approve the (updated) draft guidelines: https://fedorahosted.org/fpc/ticket/71

Updated package:
Spec URL:
http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL:
http://ftd4linux.nl/contrib/mingw-filesystem-66-1.fc15.src.rpm

* Thu Mar 17 2011 Erik van Pienbroek <epienbro> - 66-1
- Renamed the package to mingw-filesystem
- Fixed rpmlint issues
- Dropped the provides: mingw32-dlfcn for now as we still
  need to discuss whether to retire it or not
- Fixed permissions of the scripts (775 -> 755)
- Fixed description of the various subpackages

I think it's okay to ignore the other rpmlint issues. The RPM files really need to be placed in /usr/lib/rpm (even for x86_64)

Comment 18 Tim Mayberry 2011-04-10 06:36:14 UTC
(In reply to comment #17)
> After discussion with some members of the Fedora MinGW SIG we decided to drop
> the 'cross-*' prefix for now and stick with 'mingw-*' as prefix. Support for
> Mac OS X may take a long while to get ready (possible even never because of the
> legal issues), so we can use 'mingw-*' for now. We've also filed a ticket at
> the Fedora Packaging Committee with a request to approve the (updated) draft
> guidelines: https://fedorahosted.org/fpc/ticket/71
> 
> Updated package:
> Spec URL:
> http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
> SRPM URL:
> http://ftd4linux.nl/contrib/mingw-filesystem-66-1.fc15.src.rpm
> 

Hi, I've been trying out the new cross compiler framework from the repository located at: http://build1.openftd.org/fedora-cross/fedora-cross.repo on Fedora 14

I got an error when trying to install mingw32-curl saying there was a missing provides(wldap32.dll). So I added Provides: mingw32(wldap32.dll) to the mingw32-filesystem package(and similarly for the mingw64-filesystem package) and after rebuilding, curl would install fine.

Looking at the changelog:

* Thu Nov 13 2008 Richard Jones <rjones> - 35-1
- Added mingw32(wldap32.dll) pseudo-provides.

So it seems like it was there at some point but nothing in the changelog indicating why it is no longer.

Anyway, hope this is relevant and helps.

Comment 19 Erik van Pienbroek 2011-04-10 10:25:58 UTC
Thanks for spotting this. I've just published an updated package:

Spec URL: http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL: http://ftd4linux.nl/contrib/mingw-filesystem-67-1.fc15.src.rpm

* Sun Apr 10 2011 Erik van Pienbroek <epienbro> - 67-1
- Merged the provides list from the Fedora mingw32-filesystem package
  Somehow various entries got lost

Comment 20 Richard W.M. Jones 2011-04-10 16:33:25 UTC
Agreed Tim's analysis is correct.  It is (was) a provides that
was accidentally dropped.

Comment 21 Erik van Pienbroek 2011-04-23 12:26:25 UTC
The new packaging guidelines have been approved in the FPC meeting of April 13: http://meetbot.fedoraproject.org/fedora-meeting/2011-04-13/fpc.2011-04-13-15.59.html

In order to comply with these guidelines, some changes have been applied in the mingw-filesystem package, so here's a new package which implements everything mentioned in the packaging guidelines.

Spec URL:
http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL: http://ftd4linux.nl/contrib/mingw-filesystem-68-1.fc15.src.rpm

* Thu Apr 14 2011 Erik van Pienbroek <epienbro> - 68-1
- Make the various macros compliant with the new packaging guidelines:
  https://fedorahosted.org/fpc/ticket/71
- Dropped the macro %{_mingw_default_requires} as it isn't needed
  anymore with the new guidelines

Comment 22 Erik van Pienbroek 2011-05-01 12:46:36 UTC
Kalev Lember has just applied a change in the current mingw32-filesystem package. To keep everything in sync, I've also applied his change to the new mingw-filesystem package:

Spec URL:
http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL: http://ftd4linux.nl/contrib/mingw-filesystem-69-1.fc15.src.rpm

* Sun May 01 2011 Kalev Lember <kalev> - 69-1
- Override boost library suffix in cmake toolchain file

Comment 23 Michael Cronenworth 2011-05-06 00:32:48 UTC
My first review. Go easy on me!

+ OK
! needs attention

rpmlint output:
$ rpmlint mingw-filesystem mingw-filesystem-scripts mingw32-filesystem mingw64-filesystem
mingw-filesystem.noarch: W: obsolete-not-provided cross-filesystem
mingw-filesystem.noarch: W: no-documentation
mingw-filesystem-scripts.noarch: W: obsolete-not-provided cross-filesystem-scripts
mingw-filesystem-scripts.noarch: W: only-non-binary-in-usr-lib
mingw-filesystem-scripts.noarch: E: incorrect-fsf-address /usr/libexec/mingw-scripts
mingw-filesystem-scripts.noarch: E: incorrect-fsf-address /usr/share/doc/mingw-filesystem-scripts-69/COPYING
mingw32-filesystem.noarch: W: no-documentation
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-configure /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-configure
mingw64-filesystem.noarch: W: no-documentation
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-configure /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-configure
4 packages and 0 specfiles checked; 2 errors, 10 warnings.

I don't think the FSF address is an issue, but you may want to correct it. The rest of the messages look harmless.

+ rpmlint output
+ The package is named according to the latest Fedora MinGW packaging guidelines
+ The spec file name matches the package base name
+ The package meets the Packaging Guidelines
+ The package is licensed with a Fedora approved license and meets the
  Licensing Guidelines.
+ The license field in the spec file matches the actual license
+ The stated license is the same as the one for the corresponding
  native Fedora package
+ The package contains the license file (COPYING)
+ Spec file is written in American English
+ Spec file is legible
? Upstream sources match sources in the srpm.
  They are all plain-text scripts, but where is upstream?
+ The package builds in koji
  http://koji.fedoraproject.org/koji/taskinfo?taskID=3053279
n/a ExcludeArch bugs filed
+ BuildRequires look sane
n/a The spec file MUST handle locales properly
n/a ldconfig in %post and %postun
+ Package does not bundle copies of system libraries
n/a Package isn't relocatable
+ Package owns all directories it creates
+ No duplicate files in %files
+ Permissions are properly set
+ Consistent use of macros
+ The package must contain code or permissible content
n/a Large documentation files should go in -doc subpackage
+ Files marked %doc should not affect package
n/a Header files should be in -devel
    Fedora MinGW guidelines allow headers in main package
n/a Static libraries should be in -static
n/a Library files that end in .so must go in a -devel package
n/a -devel must require the fully versioned base
n/a Packages should not contain libtool .la files
    Fedora MinGW guidelines allow .la files
n/a Packages containing GUI apps must include %{name}.desktop file
+ Directory ownership sane
+ Filenames are valid UTF-8

If you want to, you can also remove the %clean section and the BuildRoot lines
which are also no longer required in current Fedora releases, before importing
the package to git.
http://fedoraproject.org/wiki/PackagingGuidelines#.25clean

I'll approve it once I know where the upstream is. I feel a comment should be put where a VC system containing the scripts is. If there is no VC system then I guess it passes. I don't see a guideline that prohibits script-only packages.

Comment 24 Kalev Lember 2011-05-06 09:10:41 UTC
Could you please rebase the rpm changelog on top of the current mingw32-filesystem (and keep rebasing it when there are new changes to mingw32-filesystem)? It's a bit hard to see right now what changes were accidental and what was intended. When importing the rename into Fedora, I think the changes should apply cleanly on the existing package, without rewriting much of the (Fedora package's) history.

Comparing the package to the existing mingw32-filesystem, the following symlinks are no longer there. Is it intentional?
/usr/bin/mingw32-cmake
/usr/bin/mingw32-make
/usr/bin/mingw32-pkg-config
/usr/bin/mingw32-qmake-qt4


> Obsoletes:      cross-filesystem <= 67-1

<= comparision doesn't work as intended here, it's better to use 'Obsoletes:      cross-filesystem < 67-2' to take into account the .fcXX prefixes in release.


> Requires:       setup
> Requires:       rpm
> Requires:       rpmlint >= 0.85-2

These requires should surely be in the -scripts subpackage.

Comment 25 Erik van Pienbroek 2011-05-06 10:22:33 UTC
Thank you both for reviewing this!

Michael:
Upstream for this package is the Fedora MinGW SIG. We don't have a separate VCS as we use the Fedora VCS for this

The FSF rpmlint warnings have just been fixed

I've kept the %clean and BuildRoot lines in so this package can also be built on EL-6. Perhaps those lines can be dropped for EL-6 packages as well, but I couldn't find any documentation about that yet.

Kalev:
This diverge in changelog history was caused by the fact that a long time ago (back in May 2010) I forked the mingw32 toolchain to add mingw-w64 support. Recently I tried to merge everything back together but apparently some things got lost. I've just re-added the wrapper scripts you mentioned. Wrapper scripts for the mingw-w64 part have also just been added. 

The original changelog has also been merged now

The obsoletes and requires tags should be good now


Spec URL:
http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL: http://ftd4linux.nl/contrib/mingw-filesystem-70-1.fc15.src.rpm

* Fri May 06 2011 Erik van Pienbroek <epienbro> - 70-1
- Use the correct FSF-address in some scripts
- Moved some Requires tags to the mingw-filesystem-scripts subpackage
- Fixed the Obsoletes tags
- Re-added the wrapper scripts mingw32-cmake, mingw32-make,
  mingw32-pkg-config and mingw32-qmake-qt4
- Added the wrapper scripts mingw32-cmake, mingw64-make,
  mingw64-pkg-config, i686-w64-mingw32-pkg-config,
  x86_64-w64-mingw32-pkg-config and mingw64-qmake-qt4

Comment 26 Kalev Lember 2011-05-06 11:07:37 UTC
The Provides: mingw32() and Provides: mingw64() would probably look better in alphabetical order.


Sorry for not noticing it earlier, but the Requires: setup, rpm, rpmlint and BuildRequires: rpmlint were all dropped from mingw32-filesystem a while ago:
http://pkgs.fedoraproject.org/gitweb/?p=mingw32-filesystem.git;a=commit;h=d8bcc2f5ac2ba0cde140fe0682286dfaf5c2a2fb
http://pkgs.fedoraproject.org/gitweb/?p=mingw32-filesystem.git;a=commit;h=7034ac899f074b4bed02090fb271ecb10d7266fb

I think the rationale for NOT Requiring 'setup' and 'rpm' was that these are all so low level packages that they are in all Fedora installations and therefore it's not worth requiring them, similar to not requiring the 'filesystem' package.

With rpmlint there's a different story. Rpmlint used to be required dependency because we install a file in /etc/rpmlint/. However, directory ownership guidelines were updated a while ago and now it's perfectly fine to have multiple directory ownership on /etc/rpmlint/ in order to avoid needlessly dragging in the rpmlint package.
http://fedoraproject.org/wiki/PackagingGuidelines#The_directory_is_owned_by_a_package_which_is_not_required_for_your_package_to_function


I'd suggest the following changes:

-BuildRequires:  rpmlint >= 0.85-2

-Requires:       setup
-Requires:       rpm
-Requires:       rpmlint >= 0.85-2

+%dir %{_sysconfdir}/rpmlint
 %config(noreplace) %{_sysconfdir}/rpmlint/mingw-rpmlint.config

Comment 27 Michael Cronenworth 2011-05-06 12:47:02 UTC
(In reply to comment #26)
> +%dir %{_sysconfdir}/rpmlint
>  %config(noreplace) %{_sysconfdir}/rpmlint/mingw-rpmlint.config

Thanks for the help, Kalev.

I think for the rpmlint folder simply:
%{_sysconfdir}/rpmlint
is enough. (no %dir)

After the above fixes are applied I'll give it one more review.

Comment 28 Erik van Pienbroek 2011-05-06 15:21:56 UTC
For the rpmlint folder I didn't use one global %{_sysconfdir}/rpmlint entry as the file which is placed in that folder isn't a regular file, but a %config file.

Spec URL:
http://svn.openftd.org/svn/fedora_cross/mingw-filesystem/mingw-filesystem.spec
SRPM URL: http://ftd4linux.nl/contrib/mingw-filesystem-71-1.fc15.src.rpm

* Fri May 06 2011 Erik van Pienbroek <epienbro> - 71-1
- Dropped the BR and R for setup, rpm and rpmlint as they aren't needed anymore
- Own the folder %{_sysconfdir}/rpmlint (to avoid dependency on rpmlint)
- Sorted the list with mingw32(xxx) and mingw64(xxx) provides for improved readability

Comment 29 Michael Cronenworth 2011-05-06 15:48:32 UTC
Scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=3054732

Rpmlint:
$ rpmlint mingw-filesystem mingw-filesystem-scripts mingw32-filesystem mingw64-filesystem
mingw-filesystem.noarch: W: obsolete-not-provided cross-filesystem
mingw-filesystem.noarch: W: no-documentation
mingw-filesystem-scripts.noarch: W: obsolete-not-provided cross-filesystem-scripts
mingw-filesystem-scripts.noarch: W: only-non-binary-in-usr-lib
mingw-filesystem-scripts.noarch: E: incorrect-fsf-address /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: no-documentation
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-qmake-qt4 /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-cmake /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-configure /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/i686-w64-mingw32-pkg-config /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-pkg-config /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: dangling-symlink /usr/bin/mingw32-make /usr/libexec/mingw-scripts
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-make
mingw32-filesystem.noarch: W: no-manual-page-for-binary i686-w64-mingw32-pkg-config
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-qmake-qt4
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-cmake
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-configure
mingw32-filesystem.noarch: W: no-manual-page-for-binary mingw32-pkg-config
mingw64-filesystem.noarch: W: no-documentation
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-qmake-qt4 /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-configure /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-make /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-pkg-config /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/mingw64-cmake /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: dangling-symlink /usr/bin/x86_64-w64-mingw32-pkg-config /usr/libexec/mingw-scripts
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-pkg-config
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-make
mingw64-filesystem.noarch: W: no-manual-page-for-binary x86_64-w64-mingw32-pkg-config
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-qmake-qt4
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-cmake
mingw64-filesystem.noarch: W: no-manual-page-for-binary mingw64-configure
4 packages and 0 specfiles checked; 1 errors, 30 warnings.

Looks like there's still one FSF address issue. The man pages are obvious dupes of native tools so they aren't required. It looks good to me.

APPROVED

Comment 30 Erik van Pienbroek 2011-05-06 18:31:42 UTC
New Package SCM Request
=======================
Package Name: mingw-filesystem
Short Description: MinGW cross compiler base filesystem and environment
Owners: epienbro rjones kalev
Branches: 
InitialCC:

Comment 31 Jason Tibbitts 2011-05-10 15:14:26 UTC
Git done (by process-git-requests).

Comment 32 Fedora Update System 2012-02-23 19:24:01 UTC
mingw-filesystem-69-15.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/mingw-filesystem-69-15.fc17

Comment 33 Fedora Update System 2012-02-23 22:29:22 UTC
mingw-filesystem-69-15.fc17 has been pushed to the Fedora 17 testing repository.

Comment 34 Fedora Update System 2012-02-28 10:45:05 UTC
mingw-filesystem-69-15.fc17 has been pushed to the Fedora 17 stable repository.

Comment 35 Erik van Pienbroek 2014-12-23 18:56:40 UTC
Package Change Request
======================
Package Name: mingw-filesystem
New Branches: el6
Owners: epienbro
InitialCC:

Comment 36 Gwyn Ciesla 2014-12-23 19:59:21 UTC
Git done (by process-git-requests).


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