[ANNOUNCE] Fedora MinGW - Windows cross-compiler for Fedora

Daniel P. Berrange berrange at redhat.com
Mon Sep 22 10:12:46 UTC 2008


On Sun, Sep 21, 2008 at 05:10:40PM +0100, Richard W.M. Jones wrote:
> [This project is still at a draft stage, but since we've put together
> a test repository, hopefully people can now very easily try out what
> we've been working on].
> 
> What is MinGW?
> ----------------------------------------------------------------------
> MinGW is a C and C++ cross-compiler, based on gcc, that targets
> Windows.
> 
> What is Fedora MinGW?
> ----------------------------------------------------------------------
> 
> The Fedora MinGW project's mission is to provide an excellent
> development environment for Fedora users who wish to cross-compile
> their programs to run on Windows, minimizing the need to use Windows
> at all.  In the past developers have had to port and compile all of
> the libraries and tools they have needed, and this huge effort has
> happened independently many times over.  We aim to eliminate
> duplication of work for application developers by providing a range of
> libraries and development tools which have already been ported to the
> cross-compiler environment.  This means that developers will not need
> to recompile the application stack themselves, but can concentrate
> just on the changes needed to their own application.

I'd like to point out that since our major announcement on the MinGW work
we've been attempting to reduce the maintainence burden of carrying builds
of various packages. eg the pain of keeping changes to 'libjpeg' in sync
with changes to 'mingw-libjpeg'. We recognise that person maintaining the
native Fedora version of the package may well not be the same person 
maintaining the mingw (or other cross compiled) versions. The key is thus
enabling the maintainer of the cross compiled version to track changes.

Our current experiment in this area is to write a python tool to compare
two spec files and report on important differences - particularly those
related to source versions / patches because closely following security
patches is the single most important thing. Ensuring consistent versions,
source URLs & licensing metdata is also pretty important. In the MinGW
repo we've got a tool called 'compare.py' which takes 2 spec files and
compares them and reports on likely problems

Taking our current (broken) mingw-libxml2 specfile as an example

$ python compare.py \
     $HOME/src/fedora/libxml2/devel/libxml2.spec \
     $HOME/src/fedora-mingw--devel/libxml2/mingw-libxml2.spec \
     $HOME/src/fedora-mingw--devel/libxml2/compare.supp
WARNING different version: 'libxml2': '2.7.1' != 'mingw-libxml2': '2.6.32'
WARNING different license: 'libxml2': 'MIT' != 'mingw-libxml2': 'LGPLv2+'
WARNING different URL: 'libxml2': 'http://xmlsoft.org/' != 'mingw-libxml2': 'http://www.xmlsoft.org/'
WARNING missing source: 'libxml2-2.7.1.tar.gz'
WARNING extra source: 'libxml2-2.6.32.tar.gz'
WARNING missing patch 'libxml2-multilib.patch'

So it can show that the mingw version has incorrect Licensing data, 
minor difference in URL, and is lagging the latest rawhide release.
All things I need to fix before we submit this package to Fedora.
The libxml2-multilib.patch is a irrelevant problem for mingw which 
doesn't care about multilib, so I can add that to the compare.supp
suppressions file, so next time it'll not include that line noise. 

Once the Fedora MinGW is approved  and starts to get into Fedora CVS,
the aim will be to generate nightly reports on all mingw packages.
This compare.py script could also be of use to any other cross-compiled
archs added to Fedora such as ARM, or for people for fork the Fedora
repos such as OLPC, to help them keep in sync.

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the fedora-devel-list mailing list