On 05/19/2011 02:19 PM, Panu Matilainen wrote:
On 05/19/2011 01:49 PM, Kalev Lember wrote:
This is the contents of the mingw32.attr file: %__mingw32_provides %{_rpmconfigdir}/mingw32-find-provides.sh %__mingw32_requires %{_rpmconfigdir}/mingw32-find-requires.sh %__mingw32_magic ^PE32 executable.* Intel 80386.*, for MS Windows$ %__mingw32_path ^%{_mingw32_prefix}/.*$
Note that this doesn't work quite as you want it to, just yet: in rpm 4.9.0 path and magic are handled as an inclusive or, whereas this (and various other things) needs an and-rule. Adding support for this is technically trivial, just the naming is under consideration: http://lists.rpm.org/pipermail/rpm-maint/2011-May/003022.html
Ah, good catch. I would love to see the "and-rule" in RPM, it would certainly make things easier.
I am planning to add the new mingw32.attr file to the mingw32-filesystem package in rawhide soon. Any objections?
Depends on how soon your "soon" is :) - you'll probably want to wait until the and-rule support lands in rawhide rpm. OTOH if you're in hurry, I guess you could get away with just defining mingw32_magic and leaving the path out for now, Wine is probably the only thing besides mingw32 having Windows PE32 executables (and you could have an exclude-rule for the wine-paths just to be on the safe side).
Mono assemblies also have a very similar magic, which is somewhat hard to discern from the usual PE32 magic.
mingw32 cross compiled zlib1.dll: PE32 executable (DLL) (console) Intel 80386 (stripped to external PDB), for MS Windows Mono assembly nunit.core.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
If we currently don't have the "and-rule", I would go for a simple path based regex that matches all the .dll and .exe files in the mingw32 sysroot and forget about the libmagic matches for now. Once the "and-rule" makes it in rawhide, we can switch over to using that.
The advantages with plain path based regexes are: - It's similar to how we are matching the files right now, so it would be harder to regress something; - It would work with RPM 4.9.0 and we would be able to backport the mingw32-filesystem changes to F15 to provide compatibility for maintainers who want to keep F15 and rawhide spec files in sync; - We wouldn't have to worry about excluding strange paths where some .dll files might be, like /usr/share/.
Depends on how soon your "soon" is :)
I would actually like to get the fileattr dependency extraction in rather sooner than later. There's no guarantee I would have time to work on it in a month or two and I'd rather finish it now when I have the time.