From Fedora Project Wiki
(Table was broken at 12:37) |
m (internal link cleaning) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
=== Resources === | === Resources === | ||
* | * [[Features/Windows_cross_compiler]] | ||
* http://annexia.org/tmp/fedora-classroom-mingw-talk.txt | * http://annexia.org/tmp/fedora-classroom-mingw-talk.txt | ||
Line 8: | Line 8: | ||
{| | {| | ||
|- id="t12:14" | |- id="t12:14" | ||
| colspan="2" | -!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Using the Windows cross-compiler with your teacher Richard Jones ( rwmjones ) - See | | colspan="2" | -!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Using the Windows cross-compiler with your teacher Richard Jones ( rwmjones ) - See [[Classroom]] for todays class schedule and more info. | ||
|| [[#t12:14|12:14]] | || [[#t12:14|12:14]] | ||
|- id="t12:14" | |- id="t12:14" | ||
Line 1,452: | Line 1,452: | ||
|| [[#t13:17|13:17]] | || [[#t13:17|13:17]] | ||
|- id="t13:18" | |- id="t13:18" | ||
| colspan="2" | -!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Next Class at 20:45UTC - See | | colspan="2" | -!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Next Class at 20:45UTC - See [[Classroom]] for todays class schedule and more info. | ||
|| [[#t13:18|13:18]] | || [[#t13:18|13:18]] | ||
|- id="t13:18" | |- id="t13:18" |
Latest revision as of 09:28, 18 September 2016
Resources
IRC Log
-!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Using the Windows cross-compiler with your teacher Richard Jones ( rwmjones ) - See Classroom for todays class schedule and more info. | 12:14 | |
@rwmjones | herlo, about time to start I think | 12:14 |
---|---|---|
@nirik | ok, it's time to start in on our first class of the day. | 12:14 |
@nirik | take it away rwmjones! :) | 12:15 |
@rwmjones | Morning/afternoon/evening Fedora users from around the world! | 12:15 |
@rwmjones | I've got a short prepared talk about APIs and cross-compilers, | 12:15 |
@rwmjones | followed by a practical demonstration which you can follow along. | 12:15 |
@rwmjones | If you want to follow the practical demonstration, go here to see how | 12:15 |
@rwmjones | to set it up (best to start now): | 12:15 |
@rwmjones | http://annexia.org/tmp/setup.txt | 12:15 |
DiscordianUK | good evening | 12:15 |
@rwmjones | Short, general interest questions are welcome any time. If you have | 12:15 |
@rwmjones | long, deep technical questions or you want to argue with me about "why | 12:15 |
@rwmjones | are we helping Windows users" etc then please leave it til the end. | 12:15 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: API basics | 12:16 | |
@rwmjones | What is an API? A collection of functions that you can call. Linux | 12:16 |
@rwmjones | has hundreds of APIs, some with thousands of functions. | 12:16 |
@rwmjones | Examples: | 12:16 |
@rwmjones | POSIX/C99/libc: fork, getenv, fopen, ctime, printf, ... | 12:16 |
@rwmjones | Gtk+: gtk_button_new, gtk_object_ref, gdk_colormap_query_color, ... | 12:16 |
@rwmjones | libcurl: curl_easy_init, curl_easy_perform, curl_formadd, ... | 12:16 |
@rwmjones | openssl: SSL_CIPHER_get_version, SSL_CTX_sess_connect, ... | 12:16 |
@rwmjones | Most real world programs call just a few functions from a small number | 12:16 |
@rwmjones | of APIs. | 12:16 |
@rwmjones | (Diagram: http://www.annexia.org/tmp/02-win-api.pdf ) | 12:16 |
@rwmjones | (Diagram: http://www.annexia.org/tmp/02-win-api.pdf ) | 12:16 |
@rwmjones | Looking at the diagram above, I've tried to summarise a few of the | 12:16 |
@rwmjones | APIs you'll find on Linux. Thanks to the huge efforts of many free | 12:16 |
@rwmjones | software developers over many years, those APIs are also available on | 12:16 |
@rwmjones | Windows. | 12:16 |
DiscordianUK | which version of windows is that? | 12:17 |
@rwmjones | DiscordianUK, that's windows xp and "above" | 12:17 |
@rwmjones | although some applies to '95, '98 and 2K | 12:17 |
DiscordianUK | Okay thanks | 12:17 |
DiscordianUK | right | 12:17 |
@rwmjones | The one obvious exception is POSIX/libc. libc is so directly tied to | 12:17 |
@rwmjones | specifics of how Unix works that it's hard to port it (that's what | 12:17 |
@rwmjones | Cygwin emulates). But it turns out most programs don't make too many | 12:17 |
@rwmjones | calls to libc directly. Mostly they call higher level APIs (Gtk, Qt). | 12:17 |
@rwmjones | Portability libraries and higher level APIs can replace a lot of libc | 12:18 |
@rwmjones | calls and make software easier to port. | 12:18 |
@rwmjones | Examples: Gnulib, glib2, Qt, NSPR, APR, kdewin32, Boost, POCO | 12:18 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: Cross-compiler basics | 12:18 | |
@rwmjones | Cross-compilers are like ordinary compilers, but they generate code | 12:18 |
@rwmjones | for another machine. A common example are cross-compilers that | 12:18 |
@rwmjones | generate code for embedded machines (the embedded machine isn't "big | 12:18 |
@rwmjones | enough" to run a compiler on its own). | 12:18 |
@rwmjones | Terminology: | 12:19 |
@rwmjones | Build: The machine on which we build the software. (Fedora) | 12:19 |
@rwmjones | Host: The system where the software will run. (Windows) | 12:19 |
@rwmjones | Target: (You don't need to worry about 'target'. | 12:19 |
@rwmjones | Technically it's different from 'host', but the terms | 12:19 |
@rwmjones | are often wrongly used interchangably.) | 12:19 |
@rwmjones | We treat Windows as a strange embedded machine (!) | 12:19 |
DiscordianUK | haha! | 12:19 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: Practical demonstration | 12:20 | |
@rwmjones | ok on to the practical part | 12:20 |
@rwmjones | So you need to set up your machine as described: | 12:20 |
@rwmjones | http://annexia.org/tmp/setup.txt | 12:20 |
@rwmjones | While you're doing that, download the sources: | 12:20 |
@rwmjones | http://www.annexia.org/_file/tictactoe-1.0.tar.gz | 12:20 |
@rwmjones | and unpack them somewhere as a non-root, ordinary user. | 12:20 |
@rwmjones | wget 'http://www.annexia.org/_file/tictactoe-1.0.tar.gz' | 12:21 |
@rwmjones | zcat tictactoe-1.0.tar.gz | tar xvf - | 12:21 |
@rwmjones | cd tictactoe-1.0 | 12:21 |
@rwmjones | how far are people with yum downloads? | 12:21 |
DiscordianUK | i've got it all installed | 12:22 |
* nirik has stuff down, but has a local mirror, so it was pretty fast. ;) | 12:22 | |
* Plouj is afraid to hose his system by installing so many "testing" packages | 12:22 | |
@rwmjones | it's certainly killing that server | 12:23 |
delhage | ? | 12:23 |
baconfork | haha | 12:23 |
linuxguru | haha | 12:23 |
* rahmanangel is keep downloading, it will take time becoz of slow net, so forget about him | 12:23 | |
DiscordianUK | building ttt the unix way gives me something that almost works | 12:23 |
Plouj | What is the point of the wine* packages? Why aren't the ones provided by fedora good enough? | 12:24 |
@nirik | rwmjones: you can place them on fedorapeople too if you like... should have lots of BW available. | 12:24 |
delhage | I'm curious, can we use the F10 shipped rpms instead of setting up according to http://annexia.org/tmp/setup.txt? | 12:24 |
@rwmjones | delhage, yes of course, but there are a few missing from Fedora (not yet reviewed) | 12:24 |
@nirik | are the missing ones needed for this demo? | 12:24 |
@rwmjones | for the full gtk there's like 3 or 4 missing ones | 12:24 |
@rwmjones | yup | 12:24 |
delhage | ok | 12:24 |
@rwmjones | the server is still up, just being a bit slow. I'll keep going anyway | 12:24 |
@rwmjones | Once the 'yum' command has finished, you can compile simple test | 12:25 |
@rwmjones | programs using the cross-compiler easily. For exampl | 12:25 |
@rwmjones | cat > test.c | 12:25 |
@rwmjones | #include <stdio.h> | 12:25 |
@rwmjones | main () { printf ("hello, world!\n"); } | 12:25 |
@rwmjones | (press Ctrl D) | 12:25 |
@rwmjones | i686-pc-mingw32-gcc test.c -o test.exe | 12:25 |
@rwmjones | file test.exe | 12:25 |
@rwmjones | $ file test.exe | 12:26 |
@rwmjones | test.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit | 12:26 |
@nirik | rwmjones: so that exe would run on any win ">" xp ? | 12:26 |
@rwmjones | nirik, yes | 12:26 |
@rwmjones | $ i686-pc-mingw32-nm test.exe | tail | 12:26 |
@rwmjones | 00401330 T _main | 12:26 |
@rwmjones | 00401130 T _mainCRTStartup | 12:26 |
@rwmjones | 00402008 d _p.1598 | 12:26 |
@rwmjones | 00401570 T _puts | 12:26 |
@rwmjones | 004015a0 t _register_frame_ctor | 12:26 |
@rwmjones | 00401558 T _signal | 12:26 |
@rwmjones | 004050a4 i fthunk | 12:26 |
rahmanangel | n using wine? | 12:26 |
@rwmjones | 0040508c i fthunk | 12:26 |
@rwmjones | 00405058 i hname | 12:26 |
@rwmjones | 00405040 i hname | 12:26 |
@rwmjones | rahmanangel, coming to that :-) | 12:26 |
@rwmjones | i686-pc-mingw32-objdump -p test.exe | 12:26 |
@rwmjones | and finally you can do: | 12:26 |
@rwmjones | ./test.exe | 12:26 |
@rwmjones | $ ./test.exe | 12:27 |
@rwmjones | hello, world! | 12:27 |
@rwmjones | $ wine test.exe | 12:27 |
@rwmjones | hello, world! | 12:27 |
@rwmjones | (If you get an error about missing DLLs, read | 12:27 |
@rwmjones | http://fedoraproject.org/wiki/MinGW/Configure_wine ) | 12:27 |
linuxguru | ok. what's the difference between the two | 12:27 |
@rwmjones | linuxguru, when wine is installed, it installs a linux kernel handler which detects Win32 PE executables and runs wine | 12:27 |
@rwmjones | linuxguru, so the two commands are the same | 12:27 |
@rwmjones | except as you'll see below | 12:28 |
@rwmjones | I guess you can see from that, commands are just the same but | 12:28 |
@rwmjones | preceeded by 'i686-pc-mingw-'. Also if Wine is installed then it adds | 12:28 |
@rwmjones | a special handler to the Linux kernel so you can just run Windows | 12:28 |
@rwmjones | binaries. | 12:28 |
@rwmjones | [Except when that doesn't work for reasons we don't fully understand -- | 12:28 |
@rwmjones | but 'wine prog.exe' always works]. | 12:28 |
@rwmjones | Back to the Tic-Tac-Toe example | 12:28 |
@rwmjones | http://www.annexia.org/_file/tictactoe-1.0.tar.gz | 12:28 |
@rwmjones | If you've downloaded and unpacked this example, and the 'yum install' | 12:28 |
@rwmjones | has finished, then you should be ready to compile this program which | 12:28 |
@rwmjones | comes from the Gtk tutorial. | 12:28 |
@rwmjones | To compile for Linux, you do: | 12:29 |
@rwmjones | ./configure | 12:29 |
@rwmjones | make | 12:29 |
@rwmjones | ./ttt | 12:29 |
DiscordianUK | i did that | 12:29 |
@rwmjones | (It's a really stupid demo, so don't even try to play the game :-) | 12:29 |
@rwmjones | Cross-compiling for Windows is just as easy: | 12:29 |
@rwmjones | make clean # cleans up the Linux binary | 12:29 |
DiscordianUK | i tried to play the game | 12:29 |
@rwmjones | mingw32-configure | 12:30 |
@rwmjones | make | 12:30 |
@rwmjones | ./ttt.exe | 12:30 |
@rwmjones | that final command runs the game locally using wine | 12:30 |
* nirik finds it pretty slick how transparent that is. | 12:30 | |
@rwmjones | If you try the menu Help -> About you should see the Windows look and | 12:30 |
@rwmjones | feel. | 12:30 |
linuxguru | does the configure file modified for this particular thing ? | 12:30 |
@rwmjones | linuxguru, take a look at configure.ac | 12:30 |
@rwmjones | it is IIRC identical | 12:31 |
* rwmjones checks | 12:31 | |
@rwmjones | yeah, basically it's the same | 12:31 |
linuxguru | yeah | 12:31 |
@rwmjones | 'mingw32-configure' is just a wrapper around configure. It really | 12:31 |
@rwmjones | does: ./configure --host=i686-pc-mingw32 | 12:31 |
@rwmjones | plus a few other flags and environment variables. | 12:31 |
@rwmjones | That worked for everyone? | 12:31 |
DiscordianUK | yeah | 12:31 |
@rwmjones | it worked for one person, good! | 12:32 |
* delhage is far behind | 12:32 | |
* nirik nods. | 12:32 | |
linuxguru | yeah | 12:32 |
@rwmjones | all of this gets archived on the fedora-classroom webpage later, so you can follow it at your leisure | 12:32 |
* delhage nods | 12:32 | |
baconfork | I'm almost there | 12:32 |
@rwmjones | but we've got plenty of time so I'll wait a few mins | 12:33 |
@rwmjones | The 'ttt.exe' binary won't run directly on Windows. | 12:36 |
@rwmjones | The reason is that it needs all the Gtk DLLs and Gtk | 12:36 |
@rwmjones | configuration files. But we provide a way to wrap that up easily. | 12:36 |
linuxguru | okay | 12:36 |
@rwmjones | First, for reasons which are obscure / a bug, you will need to install | 12:36 |
@rwmjones | that ttt.exe binary, so do this *as root*: | 12:36 |
@rwmjones | make install | 12:37 |
@rwmjones | # make install | 12:37 |
@rwmjones | make[1]: Entering directory /tmp/tictactoe-1.0'
|
12:37 |
@rwmjones | if test -z "/usr/i686-pc-mingw32/sys-root/mingw/bin" ; then /bin/mkdir -p "/usr/i686-pc-mingw32/sys-root/mingw/bin" ; fi | 12:37 |
@rwmjones | /usr/bin/install -c 'ttt.exe' '/usr/i686-pc-mingw32/sys-root/mingw/bin/ttt.exe' | 12:37 |
@rwmjones | make[1]: Nothing to be done for install-data-am'. | 12:37 |
@rwmjones | make[1]: Leaving directory `/tmp/tictactoe-1.0' | 12:37 |
@rwmjones | Then (as non-root again): | 12:37 |
@rwmjones | make installer.exe | 12:37 |
@rwmjones | ls -l installer.exe | 12:37 |
@nirik | if you do a command line exe would that work on windows without needing a bunch of libs? ie, it's only gui libs you need to add? | 12:37 |
@rwmjones | nirik, yes, if it really didn't need any libs at all, eg. zlib | 12:38 |
@rwmjones | if it just made win32 calls | 12:38 |
@nirik | ok, cool. thanks. | 12:38 |
@rwmjones | but almost any non-trivial program, particularly if it comes from the Linux side of the world, will use one of these APIs | 12:38 |
@rwmjones | I'm going to cover that later | 12:38 |
@rwmjones | $ ls -l installer.exe | 12:39 |
@rwmjones | -rw-rw-r-- 1 rjones rjones 12932585 2009-03-08 18:38 installer.exe | 12:39 |
@rwmjones | 13MB, as you can see it's quite large, because it includes all of Gtk | 12:39 |
@rwmjones | and because windows doesn't have any packaging system, every app ends up with its own copy of Gtk | 12:40 |
@rwmjones | That gives you a Windows installer that contains everything (program, | 12:40 |
@rwmjones | dependent DLLs, configuration files, desktop icon, menu entry, | 12:40 |
@rwmjones | uninstaller). You can copy that file onto a Windows box and run it. | 12:40 |
@rwmjones | Anyone got any questions about the practical part? | 12:41 |
@herlo | ? | 12:41 |
npmccallum | how is the installer different than simply doing a static build? | 12:42 |
@rwmjones | npmccallum, good question! | 12:42 |
dimion | ? can it link statical | 12:42 |
npmccallum | i.e. why not just do a static build, if you are bundling gtk2, etc | 12:42 |
@rwmjones | the installer is a windows installer, so you can also put other stuff in there, like license files, more menu items and so on | 12:42 |
@herlo | yeah, it seems I've tried to install the mingw32-gtk2 but yum can't find it. I assume that's why my make after the mingw32-configure failed? | 12:42 |
@rwmjones | now, several people on the list have asked us to build mingw32-foo-static libraries | 12:42 |
@rwmjones | and although originally everything was a DLL, we now also have some -static subpackages | 12:43 |
@rwmjones | although not yet for Gtk | 12:43 |
AleBaStr | can it be done without make install (in case i have no root password/sudo)? | 12:43 |
@rwmjones | AleBaStr, not at the moment, but that is just a bug in mingw32-nsiswrapper | 12:43 |
npmccallum | and that installer is using nsis? | 12:43 |
@rwmjones | herlo, you followed the instructions http://annexia.org/tmp/setup.txt ? | 12:43 |
@rwmjones | npmccallum, yes | 12:44 |
@herlo | yes | 12:44 |
@herlo | rwmjones: except when I go to your http://homes.merjis.com/~rich/mingw/ | 12:44 |
@rwmjones | herlo, it's probably because that webserver is being killed with downloads at the moment | 12:44 |
@herlo | yeah, kind of figured, I'll keep trying | 12:44 |
* herlo likes this stuff so far though.. | 12:44 | |
linuxguru | how can one customize the installer ? | 12:45 |
npmccallum | rwmjones: is the installer.exe target transparently added to any makefile when using the normal autotools setup and mingw32-configure ? | 12:45 |
@rwmjones | npmccallum, as the name suggests, nsiswrapper is a wrapper which generates the script used by nsis | 12:45 |
@rwmjones | npmccallum, see Makefile.am | 12:45 |
npmccallum | k | 12:45 |
@rwmjones | linuxguru, yes, do: | 12:45 |
@rwmjones | linuxguru, man nsiswrapper is your best bet actually | 12:45 |
@rwmjones | npmccallum, in case it's not obvious, scroll down a bit in Makefile.am | 12:46 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: Crossreport | 12:46 | |
@rwmjones | A final point about porting your own programs. Use our | 12:46 |
@rwmjones | 'mingw32-crossreport' tool to help you. You just run it on an | 12:46 |
@rwmjones | existing Linux (C/C++) compiled program, and it will tell you where | 12:46 |
@rwmjones | potential problems might arise. | 12:46 |
@rwmjones | mingw32-crossreport /usr/bin/eog | less | 12:46 |
linuxguru | okay | 12:47 |
npmccallum | rwmjones: this is really slick, you rock | 12:47 |
baconfork | got it working good deal | 12:47 |
@rwmjones | for people who don't have this installed, look at the output of that command here: | 12:47 |
@rwmjones | http://www.annexia.org/tmp/eog.txt | 12:47 |
* npmccallum wonders about building libraries... | 12:48 | |
@rwmjones | npmccallum, you'll prob want to look at some examples here: | 12:48 |
@rwmjones | http://hg.et.redhat.com/cgi-bin/hg-misc.cgi/fedora-mingw--devel/file/tip | 12:49 |
@rwmjones | so you can see from the report, it highlight potential problems you might have when porting a program to Windows | 12:49 |
npmccallum | rwmjones: and that will allow for development *on windows* using the dll? | 12:49 |
@rwmjones | in that case, eog = Eye Of Gnome | 12:49 |
@rwmjones | npmccallum, yes and mostly yes ... with C++ we are still resolving problems with exception handling across libraries compiled by different compilers | 12:50 |
@rwmjones | npmccallum, for plain C you should be OK | 12:50 |
npmccallum | ok | 12:50 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: Future directions (Win64, Mac OS X ?) | 12:50 | |
@rwmjones | Future directions: We have a working Win64 cross-compiler thanks to | 12:51 |
@rwmjones | the excellent work of the mingw-w64 upstream project. We haven't | 12:51 |
@rwmjones | cross-compiled any libraries for Win64 yet, but it's something we're | 12:51 |
@rwmjones | looking at for a future Fedora. | 12:51 |
@rwmjones | You can download the Win64 cross-compiler from the temporary repository, when it starts working again .. | 12:52 |
@rwmjones | mingw64-gcc | 12:52 |
@rwmjones | We have a sort-of-working Darwin (Mac OS X) cross-compiler. There are | 12:52 |
@rwmjones | various issues which I summarised here: | 12:52 |
@rwmjones | https://www.redhat.com/archives/fedora-devel-list/2009-March/msg00397.html | 12:52 |
@nirik | rwmjones: do 32bit exe's typically run on 64 bit windows? or it's only 64bit for those? | 12:52 |
DiscordianUK | Right | 12:53 |
@rwmjones | nirik, yes, but they run in a sandbox/emulator called WoW | 12:53 |
@nirik | ha. I think of something different when I see WoW. ;) ok. | 12:53 |
DiscordianUK | So the idea is that Fedora can be a windows dev env? | 12:53 |
@rwmjones | practically yes they do run fine, but for the usual reasons it's better to have 64 bit executables | 12:53 |
@rwmjones | DiscordianUK, that would be great | 12:53 |
@rwmjones | Anyway, Win64 and Mac OS X are for future versions of Fedora. For Fedora 11 we're concentrating on the Win32 cross-compiler and about 35 libraries. | 12:54 |
DiscordianUK | I like the idea of crossplatform binaries | 12:55 |
@rwmjones | http://fedoraproject.org/wiki/Features/Windows_cross_compiler#Current_status | 12:55 |
-!- rwmjones changed the topic of #fedora-classroom to: Using the Windows cross-compiler: How to get involved | 12:55 | |
@rwmjones | We *always* need volunteers: | 12:55 |
@rwmjones | - people who know about intimate details of compiling on Windows and OS X | 12:55 |
@rwmjones | - Fedora packagers | 12:55 |
@rwmjones | - Fedora reviewers | 12:55 |
@rwmjones | - testers | 12:55 |
@rwmjones | - developers who want to cross-compile their own apps | 12:55 |
@rwmjones | - developers who want to maintain Win32 ports of their own libraries | 12:55 |
@rwmjones | Web site: http://fedoraproject.org/wiki/MinGW | 12:56 |
@rwmjones | Mailing list: https://admin.fedoraproject.org/mailman/listinfo/fedora-mingw | 12:56 |
@rwmjones | IRC: #fedora-mingw on FreeNode | 12:56 |
@rwmjones | Status: http://www.annexia.org/fedora_mingw | 12:56 |
@rwmjones | Any questions? | 12:56 |
DiscordianUK | How does cygwin fit into this? (sorry someone had to ask) | 12:57 |
@rwmjones | Cygwin is quite a different approach. They are emulating POSIX, so you can run Unix programs unchanged (just recompile from the same sources). | 12:57 |
@rwmjones | For Fedora MinGW we do patch the sources, sometimes quite a bit. | 12:58 |
@rwmjones | we actively port to Windows APIs (eg Win32 APIs) | 12:58 |
DiscordianUK | it'd be nice if that was true about cygwin | 12:58 |
@rwmjones | another difference is that we are in Fedora, and we are a cross-compiler | 12:58 |
DiscordianUK | but there are gotchas | 12:58 |
@rwmjones | another difference is the licensing | 12:58 |
linuxguru | how about modifications to my app. un-install and re-install | 12:58 |
linuxguru | ?* | 12:59 |
@rwmjones | linuxguru, not sure I understand? | 12:59 |
linuxguru | suppose i compiled and installed a app in windows and then i change some things and compiled again get a installer.exe i have to un-install the previous one | 12:59 |
@nirik | Q: is there any indication to a windows user running one of these exe's how it was produced? ie, is there a way to note that this was made on linux host via free software? or is that too hard or too close to anoying advertising. | 12:59 |
@rwmjones | linuxguru, right, yes you do | 12:59 |
@herlo | What are the legal issues with compiling for Windows? I'm concerned that if I create something in Fedora using Windows libraries I'll get into a sticky situation... do you have any thoughts/insight? | 13:00 |
@rwmjones | linuxguru, we mainly test using Wine, and use Windows only for very final testing | 13:00 |
DiscordianUK | cygwin doesn't for example grok fork vs vfork | 13:00 |
@rwmjones | nirik, I think if you take apart the executable you could tell ... of course you can always add something in the Help or About box | 13:00 |
@rwmjones | herlo, there are no legal issues that I'm aware of. This is 100% independently produced, open source software. | 13:01 |
npmccallum | herlo: if you are building against win32api it is covered by the base os library provision in the GPL | 13:01 |
delhage | you already anticipated this question in the beginning: "why are we helping Windows users"? ;) | 13:01 |
@herlo | so there aren't any proprietary licenses to concern myself with? | 13:01 |
@rwmjones | herlo, no ... 100% independently made, 100% open source chain | 13:02 |
@herlo | very nice | 13:02 |
@rwmjones | delhage, well, I think there are two arguments here: | 13:02 |
@rwmjones | (1) a user who is using all proprietary apps on Windows, if we give them just one free app, then that gives them just a little bit of freedom that they didn't have before | 13:02 |
@rwmjones | practically, that can be freedom from proprietary lock in that many commercial Windows apps use to control the user | 13:03 |
@rwmjones | (2) no user is seriously going to change to using Linux in one day, because they'd have to change all their apps. However that equation changes as soon as all the apps they're using are free software. | 13:03 |
@rwmjones | because they can then change the underlying OS very easily, probably without noticing | 13:04 |
@rwmjones | so we want to switch people away from proprietary formats and apps that lock you in first | 13:04 |
@rwmjones | 'course it'd be great if none of this was necessary and no one used windows, but that's not the real world unfortunately | 13:04 |
DiscordianUK | Wha | 13:04 |
@rwmjones | for developers, it's also a way to get 10x the potential audience for your software | 13:05 |
* nirik has a few more Q's, but will wait until others finish asking. ;) | 13:05 | |
AleBaStr | Q: is it working with cmake/other alternative build systems? | 13:05 |
DiscordianUK | That' s the bonus rwmjones | 13:05 |
@rwmjones | if I missed any question, just repost it | 13:05 |
delhage | ok, I'm not sure I agree but thanks for explaining | 13:05 |
@rwmjones | AleBaStr, yes cmake is OK, others are troublesome but we've done pretty much all of the common build systems | 13:05 |
@rwmjones | AleBaStr, as in, there will be at least one package in the set that uses a build system and that I've laboured away to make it work as a cross-compiler | 13:06 |
AleBaStr | OK means installer works too?) | 13:06 |
@rwmjones | eg for bjam, there is mingw32-boost | 13:06 |
* npmccallum just found out mingw32-crossreport works on libraries too :) | 13:06 | |
@rwmjones | AleBaStr, usually the installer is independent of the build system, because you can run mingw32-nsiswrapper by hand | 13:07 |
@rwmjones | npmccallum, yes, mingw32-crossreport is just a perl script that wraps around objdump | 13:07 |
npmccallum | rwmjones: I figured as much | 13:08 |
@nirik | Q: you said you support EL-5... are there any issues there? or should we expect the same setup/support as in fedora, just older libs? or same versions? | 13:08 |
* AleBaStr thinks about some macros for cpack to automate this | 13:08 | |
@rwmjones | nirik, it's pretty much the same level, certainly right now there are all the same packages. lfarkas is mainly supporting that. | 13:08 |
@rwmjones | I should say we also support Qt | 13:08 |
@nirik | ok, cool. | 13:09 |
@rwmjones | it's not in fedora yet, but there is a qt-win package in the temp repo | 13:09 |
@rwmjones | mingw32-qt-win IIRC | 13:09 |
@rwmjones | my poor webserver is totally fscked | 13:12 |
DiscordianUK | awww | 13:12 |
@rwmjones | any more questions? | 13:12 |
linuxguru | i guess you should think of putting the repository on fedorapeople as nirik suggested earlier :) | 13:13 |
@rwmjones | yes, I think that's a good idea | 13:13 |
@nirik | is there any repo of rebuilt free software made with mingw? ie, for windows users who want to run a popular opensource app? | 13:13 |
@nirik | I guess it could be hard to do for all fedora packaged applications. | 13:13 |
AleBaStr | what about command like "make installer.nsi", for customizing script? | 13:13 |
npmccallum | what is the likelihood of running into bugs in wine that don't exist in windows? | 13:13 |
@rwmjones | nirik, not really no. We didn't want to get into that game because it's lots of work tracking upstream releases. We want upstream to use our tools to provide the software for windows themselves. | 13:14 |
@rwmjones | AleBaStr, certainly it's something that can be done. The code in that Makefile.am is just a suggestion. | 13:14 |
@nirik | rwmjones: sure, understood. Wonder if it could be automated... but yeah, thats getting complex fast. ;( | 13:14 |
@rwmjones | npmccallum, yes, I've hit one of those so far, when doing inkscape | 13:14 |
@rwmjones | so we have ported inkscape using these tools | 13:15 |
@rwmjones | I've got some pretty screengrabs ... | 13:15 |
@rwmjones | http://camltastic.blogspot.com/2008/10/mingw-inkscape-cross-compiled-from.html | 13:15 |
@rwmjones | in fact, the slide I sent out at the beginning was constructed using mingw32-inkscape on wine | 13:16 |
@nirik | rwmjones: want to repaste your lines about where you are looking for help to wrap things up? | 13:16 |
@rwmjones | this one: http://www.annexia.org/tmp/02-win-api.pdf | 13:16 |
@rwmjones | We *always* need volunteers: | 13:16 |
@rwmjones | - people who know about intimate details of compiling on Windows and OS X | 13:16 |
@rwmjones | - Fedora packagers | 13:16 |
@rwmjones | - Fedora reviewers | 13:16 |
@rwmjones | - testers | 13:16 |
@rwmjones | - developers who want to cross-compile their own apps | 13:16 |
@rwmjones | - developers who want to maintain Win32 ports of their own libraries | 13:16 |
@rwmjones | Web site: http://fedoraproject.org/wiki/MinGW | 13:16 |
@rwmjones | Mailing list: https://admin.fedoraproject.org/mailman/listinfo/fedora-mingw | 13:16 |
@rwmjones | IRC: #fedora-mingw on FreeNode | 13:16 |
@rwmjones | Status: http://www.annexia.org/fedora_mingw | 13:16 |
@rwmjones | ok thanks everyone, have a great morning/evening | 13:17 |
@nirik | excellent. Thanks for the informative talk rwmjones ! | 13:17 |
AleBaStr | thanks) | 13:17 |
DiscordianUK | thank you rwmjones | 13:17 |
-!- nirik changed the topic of #fedora-classroom to: Fedora IRC Classroom - Next Class at 20:45UTC - See Classroom for todays class schedule and more info. | 13:18 | |
linuxguru | yeah thank you rwmjones , it was a great session. :) | 13:18 |
zer0c00l | thanks rwmjones | 13:18 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!