Win-builds and Mingw-w64: Package manager and modern toolchains for Windows
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Nader, Adrien
Building for Windows is not the pain it used to be. This talk is an introduction to the history, philosophy, and current status of two FOSS projects mingw-w64 and win-builds which, when combined, offer a package manager and up-to-date toolchains and packages for Windows. This talk will present two projects: First, mingw-w64 which has brought most of the current changes for Windows toolchains: better API coverage in headers, GCC and binutils improvements, better standard conformance and Windows-related tooling. Second, win-builds.org, a software distribution for Windows which can be installed on Windows or GNU/Linux through a package manager. Roughly the first third of the presentation will be dedicated to mingw-w64. The remaining time will be for win-builds and will feature a status report for both the package manager and the packages it handles (i.e. your code). The intended audience is not limited to Wine users but also includes anyone interested in Windows support for free software. One of the goal of the talk is to foster cooperation between free software developers for this particular issue.
 And with any further ado, present Adrian Nader. So, yeah, please. Yes, alright. So, it's actually a bit tangential to wine because I'm going to talk about both Mimby 64, which wine works with, well, both wines. And a project of mine which is winbills.org, which is, which shows you make packages, binary packages for windows. So, you can build from a Linux one on windows, well, build on windows 2 and at some point the other way around, if possible. So, yeah. First, let's cover a third of the talk, Mimby 64, what it is, what it wants to do in the future, another view of winbills, and then some more technical details and a few, and some advice. Yeah, alright. So, Mimby 64 was started several years ago by a German company who had some program which required like more than 2 gigabytes of memory, so quite a lot more. And, well, because they had huge images, so they did changes to Mimby, to those port, to GCC, to binitials, to everything they required. And the really nice thing they did is donate the code to Kai Teeth. And Kai then went on and upstreamed it. He did all the paperwork with the FSS, but maybe he had it before, I don't know. And instead of working on GCC, he continued working for several years. So I think it's been like at least 6, 7 years maybe. And most of it, most of the changes have been upstream, but the changes to Mingulotog, there's been some politics involved. And Mingulotog saying no, we are already doing 64 big stuff, or we'll be doing it in the future. I won't get into the details, it's always nice. And that gave the Minguli 64 project, which is now hosted on SoForg. So what's similar to Mingulotog is that Header's information comes from MSian. That's a public source of information, no issue. But one big theoretical difference is Header's can also be built through Weverse and Generating. Mingulotog does not want anything with that. They want to stay clear of any legal issue. So they stay with MSian. But MSian isn't exhaustive, it's not even covered sometimes. And especially when you go in the lower layers, you're going to have issues with it. So that's why you can't reunite Header's, for example, of both projects. Right, that's that easily. Another big difference is if you try to build something with Mingulotog, you'll see that usually you couldn't just take the FSL GCC, everything from the website, you had to add some patches. And Minguli 64, there's no patches required. It can happen, but usually you're fine with anything else. One thing I really enjoyed with Minguli 64 is that it's much more welcoming. And that makes it nice to work with. So one goal is to reach the ABI of MSDC for C++ because right now you can't mix objects from the two. But that's the goal, it's getting closer. And that's why if we want a two GCC version, you have to rebuild all your C++ stuff because the ABI has changed and Kali is a cool player. But I don't think he's here for YouTube, he's supposed to turn that team. He was here, by the time he was done. He told me so, I don't see him here. He's probably hiding here, so that's already gone. Oh, yeah, he collected four. So, yeah, what's in the Minguli 64 code? So we have headers, of course, which go up to Windows 8, so I think that. You get additional things quite regularly, like Minguli.org, which was last time I looked at it at like 5, 6, 7 years. That's why also several projects collaborate, do things together because the Deotix headers come from wine and the Dedica ones come from ReactOS. And also, that for headers, there's also some code, which is mostly when the human time of Microsoft doesn't handle C99, C11, well, that's all of it, and Minguli 64 adds code to fill in the gaps. And the last thing is for libm, actually, Minguli 64's code is faster than Microsoft's. And if you want to build for, what, with Minguli 64, you have way quite a series of possibilities. You can cross-compile from Linux. You can build from any of the projects like environments, which run on Windows or Segrin, or mt2, which, well, mt2 is a fork from Segrin from like 10 or 15 years ago. mt2 is a fork from Segrin, which has pretty much the same difference, but the code from Segrin is only from last year. And then there's Ewing, which is made by DevKorn, and I know no one who uses it, maybe, besides him, and I'm really curious to know how it performs, and when it should be used instead of Segrin, for instance, but I have no info on that. Yeah. Yeah, but what I know, they have licensing differences, so I think human life is something that people can use, kind of, most. Yeah, I said, yeah, Segrin's GL is GPL, you will not, but, I don't know if you have differences in, like, performance or... Okay, fine. I asked Dave too, but haven't gotten an answer yet. Well, last point, you can also do native compilation, and the lesson to know is that you will be without any shell, without any predict shell, so that's mostly when you run from an IDE. One thing that is actually... You have many of these, almost as many line-up distributions, people who make banners, but out of two chains, and possibly libraries, and other banners with other executive. So OpenSuzi and Fedora, they have teams which handle that. They've been using Minimo 64 for quite some time, and if you're running on one of these distributions, just go with them. They are, like, at least 2,000 packages, probably more. It's fairly aggressive, well-attested, and I think in both cases, you have either another or that which at least uses the packages. So users who care about quality. MXA is based on source, and they have quite a lot of packages, sometimes a bit weird with some weird pictures, and they do static linking of LGPL libraries, which means you might have troubles with license, because you won't be able to easily swap the LGPL binary for the one. Okay, I'm going to make it shorter. Ruben Vibi, he had some nice builds, he does many builds, and he had some nice ones with a tongue, and he's been working on LLVM more recently. Seguin, there's a close compiler in it, which is from Jonathan Young, who is a core member of Minimo 64. Well, yeah. I will build, which is my own, which is obviously awesome. All right. Are you sure there's no Debian or you will be able to access it? Yeah, right. There are Debian, there are actually, not actually directly, but are you there? There are going to be some simple ones, but the difference is that OpenSystem and Fedora, they have many libraries. If you want LLVM, if you want to live, I don't know what, they're going to ship it. Debian, they have the compiler, they have the toolchain, they have a few other ones, but not that many. Yeah. Some of them have been building like with more recently, but it's still very small. Yeah. All right. So, another view of Windows. Oh, yeah. The goal, really, the goal was to, I noticed that everyone was doing their own builds, especially a few years ago. Everyone would build GCC, would build libraries, it took ages, it wasn't easy, and it's really frustrating. So, I thought maybe with a more systematic approach, I could make it less painful. I also wanted to make it, to have better free software on Windows. If people spend less time building, they can spend more time coding, that would give nice results. And the last goal is that if you can bring more to date and faster, like with everything to Windows, then we can probably get companies which do proprietary software to use them instead of other proprietary components, and then they can be supported on Linux, either because they are going to switch to Linux, or it's more easily. So, yeah. As for current status, you need new Linux to build. You can run it on Linux too, if you want, obviously, it's cross-compilation. You can run the compiler on Linux. For the brainwaves, you can install everything on XP to 2012. I've tested four versions of them. The only thing is that XP is on issues at the OS level, not mine, and I can't do anything to fix them or maybe work on them. So, avoid it. Yeah. I've been meaning to... Right now, there are only 60 packages. It's not that much, but it actually covers quite a lot of things you might want to do that won't be... I don't think there will be more than a thousand packages, you know. Like, you don't need a package for a modprobe or K-mod on Windows. It makes no sense. So that really means we have less packages. I think the package is actually pretty easy. I'll get to that a bit later. But what took time was really to work on the architecture, to make it nice, use it everywhere, to make installers for Windows. And that was awful. But version 1.3 was released a few weeks ago, and it works. It should be easy to set up, even if some people seem to have issues with it. But I will see you soon. And version 1.4, which should have many more packages, at least. I hope it's 10 to 20 more in two or three months. All right. As for what's available in more details, you have C++, we see 11 and C++11 support. There's a lot of... I haven't tried other 4.1 parallel, mostly because I need a project to build against them and to use. I have no idea what people want, which is... I haven't used parallel, so I'll test it. Yeah. I think that limits it, because since I do cross-compilation, I like to... test it a bit more difficult to run. And also, I don't know the parallel one, but I know the GCC one on Windows, I think it would take like 24 hours to run on some very powerful hardware. It's very difficult to run in practice. And because you can't come several tasks at the same time, because otherwise the output is going to be mixed. You won't see anything. That's on Windows, yeah. Yeah, so, GCC, I had them, but I built nothing, which is Objective-C. I know someone who used the next step on Windows. And the compiler worked, but I went twice since then. Oh yeah. If you care about Java or Objective-C GCC support, well, you can tell me something now, because I can't build... GCC, GCAG, 64 bit cannot be built. The copy of libGCC, which is in GCC, is from 2007, so it doesn't have 64 bit support, and no one is taking care of it. Honestly, it's probably going to die soon. Yeah, I've also been working on an OQMAT post-compiler, and for Python, I think they're still weak for MSVC to build or to... Well, at some point, they don't handle it, but they're working on it. So, that could come by the end of the year, actually. Okay, so, status again. You can run GCC apps, past that, only 2.x for now, and you only have 32 bit support. GCC has a 64 bit simple network. You have enlightenment stuff, several other libraries, and Qt is actually missing, because Qt is the weird beast. I haven't been able to... Well, I should try again with Qt5, but with 4-something, it was not very nice. Always. Small woodlap, as I said, more packages. I seriously need to work on the test suite. When I have to try something out, I need to reboot on Windows, even if I need to do something by hand with even as few as 60 packages. It's going to take a good chunk of the day. When I want to make a release, it's going to take a weekend. That's something which I need to improve on. If someone is interested in that, get in touch. I see what I can do to on my side. I don't mention it, but I really want to get security fixed on Windows, of languages and Windows in an efficient manner. I'm still sure how to do it efficiently. Which people? Longer term, more packages. I'd like to include the package manager inside Installer's directly. The idea is that you get the package manager, you append some payload, maybe not at the end, but you insert some payload, and you get an exit which you can run, which you will install the package manager, possibly update older versions of some packages. That's the plan. I'll be working on that with one Enlightenment people, you know, E17, so maybe in 10 years. One on Windows, I'd really like to get that. I don't know if it's going to be used much, but it's fine. First, I'll buy it out from Windows. No, sorry, there was only one. From Windows to Linux, actually no companies which do that, because they have been migrating the product to Windows, but people are still working on Windows. They've been used to Windows as an environment for years, or there are some Enlightenment people who don't want to migrate away from Windows, but they're doing Linux on their usage. If you want to start your new get, I found the documentation is pretty much exhausted. At least for users, simple users should be good. If you want to package, well, you're supposed to do it from Linux. It's easier, but you can also do it from Windows if you like to pay. Prefer 1.4.1, which has some much nicer changes. But if you only want to run it on Windows, 1.3, which is the current version advertised on the website, you should not have any issues with it. Well, I hope so. As I mentioned, if you want to help on something, testing is really, really needed. Especially testing on various versions of Windows, that's something I can do, but it's horribly painful. For the previous release, I've been testing installers for, I think I spent one month testing and fixing installers from XP to 2012. That's something I really like to share the pain with others. Yeah, also if you have some code, please build it. I'll show you why at the end of the talk, there are many, many small issues which take nothing to fix. Usually, most of the things mix cleanly. Well, mostly cleanly. That's actually pretty nice. It was on the case like 3, 4, 5 years ago. Yeah, that's quite about it to our websites. It's because there are quite a lot of websites which, when you have new projects or projects which change web homepage, links are not updated and you get really old results in such engines. So, just a quick check. You don't have to, I'm not telling you to remove Mingri.org and to never mention it again, just to add Mingri 64 next to it for instance. Ah, right. So, users. I think from 1,000 to 2,000 installations during January. From the one-day start, I've collected for February, it might be doubled for February. The only thing is that, well, I'll show you how you install on Windows. Like so. So, you just fire your website, you go there, you see the doc, so you are forced to read the doc. You say, you say Z file, and then you simply export it. Simple. And then, you have several binaries which are going to be combined. And you have an install script for MC source segran if you wanted it. You have an install script for when you are outside of them. You want only Windows stuff. I mean, you are outside of any projects layer. That's why it's a batch file. Hey. And you have a script which you use for MC source segran, which is going to switch which environment you use. So, 32-bit or 64-bit, because this does not have utility tool chains because of main clashes. And, yeah, so, you just run doc, and then it installs automatically. All right. And see something. The thing is that from downloading the Z file to... It's very fast because it was actually on a gigabit pipe. From downloading the Z file to running the script, it seems like as many as 50% of people give up. I have no idea why. I mean, all right, this script is not very pretty, but come on, 50% of people. Maybe you should call it setup. She tries that, yeah. Well, when I take it, I just run Z, and I take it, so I'm probably not going to need to run it. Actually... Oh, yeah, that was just putting a few things. But, yeah, that's why I actually put the links inside the doc. You're supposed to win it, but, yeah, it's possible on that. So, that's why I want to put a GUI to make it. I'm not sure it's a good idea to support people who will never win any documentation. And I feel like we'll never use a movie. That too. Yeah, well, I'm going to finish the video so directly. For just winning stuff, the thing is that if you look here in the back one, you actually see many, many files. That's all the packages. That's what you get pretty much automatically. So it has a very nice current window. But a bit from that, there's almost nothing involved to use it. And that's Elementorist stuff. There's been some people who have been doing nice jobs to make it work. It's not perfect. It's trying to save things in the home, like on Linux. But apart from that, it's almost working. Alright. So, yeah, that's it for the video. Yeah, now, the stats come from Apache Logs. I haven't planned to have any stats at first. And I've only been able to guess that from values, bits here and there. So, 15% of people are winning from Linux. And five from Segrin. That's really a guess for Segrin, but I think it should be... I'm pretty confident in it. Almost no one gives feedback, of course. I have no idea if for most people it works or if they don't like it. So, yeah, again, I really like feedback on that. I have had a few people who have been up here with it, though, so I'm fairly confident. Yeah, Western version of Windows for most people and 64-bit for Apache. It's like almost everyone who views the website from Windows uses a 64-bit OS. I'm really expecting some people, but not 90% of them all. So, I think that's why people might run Windows on their browser, but then copy this into somewhere else. You're going to need an internet connection, at least. But, yeah, they could do that, too. I want to collect some more stats. I only need some guesses from Apache Logs. That many user-games. Actually, one which has been put into this thing is WGate, because that's the one I ship in the Installer. I think, like, it's on the point of pop-up, I think, in January, I'll say more. 90,000 downloads from WGate, something like that, from WGate on Windows. And 5,000 WGate for Linux. That's how I guess how many installations there are. How they are balanced. For the number of installations, I just check which files have been downloaded and how many times. And, yeah, as I said, I want to put more stats in it. I don't think much. I only need 32-bits, 64-bits, Windows, Linux, something else, and which version. Yeah, MCC green or outside of any. Because, yeah, I'm confused. I'm really blind. Oh, yeah, right. So, stupid and difficult details. Yeah, I've written a package manager from scratch. It's a very simple one. It only meant to work like that. You install, you tar XVF, you store the list. When you want to install, you remove the files which are in the list. You can remove files from the package, but that's it. Not exactly, but it's fully 90% of the work. There's some weird things to handle, stillings. Now I hate stillings on Windows. I hate junctions. I even hate hard links. I had to go into React2S code to understand how to use junctions on Windows. Very happy about that. It took me like three days to do one junction. And, yeah, the package manager actually opened the code because, well, I know a channel. It wasn't too bad. And it compares to native code and it works. There are ported most functions. You can use the same code on Linux and Windows. You're not going to have to do if, if, one or the other. I think I've watched it on Linux, made it work on Linux. Switched to Windows, to Pyke. I don't know, five, six hours to get everything working. Yeah, basecripts, they are from Slackware. Actually, the reason is that I'm going to try to find that again. That's the reason. That's expected. It's only an empty disk. So, yeah, just, for example, that's for LibreKive or BeezItar. There are many changes. Actually, you can't say anything actually. You change, you set a few paths like you want to install and leave all 64. You keep, I've kept all that. Changes like 10 lines, which are cookie paths. That's the same. That's simply exporting sources, getting to the term directory. You can do some same, safe, use it as permissions. You will configure. Same as other, no problem. That variable is not defined as well. You change, post, you set it. And then you replace else when looking for executables to strip with p. And instead of calling Slackware's makePKG, which takes a folder and makes another bit, you call makePKG, which is my tool. Same here, cookie paths. Porting is very simple. It's like 30 seconds to one minute of work for porting the script itself. Yeah, you're okay. Of course, that only works when the source can be ported. And if your software has been packaged, or something you are interested in, you can just go to the load, check what is in it. You should see everything. Configure options. So if you want one, which is on there, shout. If you see a warning, which looks dubious, say, well, you can fix it. And that's the scary thing. There is one less package to build for 64 bits. And you have half, you have 6,000 running for 62 bits and 9,000 for 64. So that means I think we're pretty lucky that most of the software actually run. They're probably built everywhere. For the difference, I don't know maybe because you have different sizes for some types. I don't know. We have that for 29% of those. Yeah, quite a lot of those. Actually, there's also x264, which adds a dash speak to every C file in this build. And GCC is going to say, hey, that's useless for each and every file. That probably is only one or two handwritten warnings. Yeah, and I cannot subscribe to every word tracker and start saying, hey, you need to fix that line with that thing. I think that people doing the other way around. I'd like to. That means get a source of rebuilds and look for that tree. It will mean there is a small patch right after that. So you look for it. If you like live org, you see there's a patch to it. There's a change to it. Read it and maybe apply it. Let me know. Yeah. As for the secret issues, there is a big system. When there's no post-convehition, I cannot put that in the packages. I'm trying to have reproducible builds, but not fully reproducible builds, but at least something which is not just pure log that it works once. That means I'm doing it from Linux. Everything is supposed to be post-compiled because on Windows, you are unlikely to be able to keep the same untimely month for more than a few, I don't know, Windows changes. You're not going to have five years of support for your Windows distribution. Also, if you see something which uses libpng.conf or anything similar, please convince the author to not use them anymore to use pkg.conf. The other one does not handle post-compilation. We have one of the systems. It's in slash user, slash bin, and it's going to say use the Linux one, even to fail, but the last one I need to fix is that libpng.conf. It's a bit annoying to have to do that nowadays. There were a few missing.exe extensions, but not many. That's the kind of thing which is very easy to fix. Libsup was failing because it was using sgrch, it hadn't included string.h, and it was said to fail on warnings. It could have failed anyway, but it was really a one line change which applies to everything. If that version of libpng had been tried to build for Windows, it would have been fixed at once. Another issue, open SSA. We can flex a little bit. Open SSA does a lot of weird things, including adding the same from SSL2 to the same one, but uppercase. I don't think anyone calls that main page, but anyway. The last one which many people don't know is that the L5 usually goes to Bindi and not libdi. Next to.exe5. Push on the website if you want to look for things. Open a box. You focus very much on getting all sorts of libraries compiled under it, but I'm still interested in the actual compiler and linker part, because it's still stuck in the solve there. It's working well. The main changes that are left seem like C++, Pdb support, a few things like that, but otherwise it's a quote for... I tried to use around November last year, for example, and the linker has an error handling strategy in the last four, which wasn't part of the user interface. Haven't had issues with that. I use a separate disk with an version. I like Slackware because it's not too old and not too new either. I'm going to like a dating version, but sometimes it should be fairly stable. There's also one thing with BindiTales, you have two versions. You have the FSS1 and one which is meant for Linux, which has five number strings, and that one you cannot use it for Windows. Sorry, so I tried to use Linux host Windows. Yeah, but I meant the two BindiTales. The FSS1 and the one used the most line-up distributions for the old purpose, I mean, for two-tiger line-ups, and at some point I made a mistake of using it that would not work because there are line-up specific patches which are not yet upstream. You can recognize them because they are not like BindiTales 1.2.3, but 1.2.3, 0.5, 0. something, and something. The only one you cannot. Is there an option to treat include files, open a case in sensitive and cross-compile it from Linux to Windows? I don't think so. I don't think that. So I filed a future request. So I was trying to compile some Windows code and included the queue first in the wrong case and failed. Well, basically if you build with, while using NTFS 3G on Linux, you have a mount option which says... But that's what's on X or what? Yeah, yeah. You need to be bound to that one. I don't think so. When you run this Windows installer, how much downloads a lot of libraries? How big is the whole bunch of it? The number is, you will be downloading like 50 to 60 megabytes, because it's actually XA, as the DMA2 compression, it compresses nicely, and I think it spans to 2,050 something. Maybe with more I need to check. The landing is really small, but it can span to three times more, but pretty silly. And 50 to 60 is for 32 bits, and you also get 50 to 60 for 64 bits, so twice. No. I will wait. I'm going to pop that myself. Thank you. Thank you.
 And with any further ado, present Adrian Nader.  So, yeah, please.  Yes, alright. So, it's actually a bit  tangential to wine because I'm going to talk about  both Mimby 64, which wine works with, well,  both wines. And a project of mine which is  winbills.org, which is, which shows you  make packages, binary packages for windows.  So, you can build from a Linux one on windows,  well, build on windows 2 and at some point  the other way around, if possible. So, yeah.  First, let's cover a third of the talk, Mimby 64,  what it is, what it wants to do in the future,  another view of winbills, and then some more technical details  and a few, and some advice. Yeah, alright.  So, Mimby 64 was started several years ago  by a German company who had some program which required  like more than 2 gigabytes of memory, so quite a lot more.  And, well, because they had huge images, so  they did changes to Mimby, to those port, to GCC,  to binitials, to everything they required.  And the really nice thing they did is donate the code to  Kai Teeth. And Kai then went on and upstreamed it.  He did all the paperwork with the FSS, but maybe he had it before, I don't know.  And instead of working on GCC, he continued working for several years.  So I think it's been like at least 6, 7 years maybe.  And most of it, most of the changes have been upstream,  but the changes to Mingulotog, there's been some politics involved.  And Mingulotog saying no, we are already doing 64 big stuff,  or we'll be doing it in the future.  I won't get into the details, it's always nice.  And that gave the Minguli 64 project, which is now hosted on SoForg.  So what's similar to Mingulotog is that  Header's information comes from MSian.  That's a public source of information, no issue.  But one big theoretical difference is Header's can also be built through  Weverse and Generating. Mingulotog does not want anything with that.  They want to stay clear of any legal issue.  So they stay with MSian.  But MSian isn't exhaustive, it's not even covered sometimes.  And especially when you go in the lower layers, you're going to have issues with it.  So that's why you can't reunite Header's, for example, of both projects.  Right, that's that easily.  Another big difference is if you try to build something with Mingulotog,  you'll see that usually you couldn't just take the FSL GCC,  everything from the website, you had to add some patches.  And Minguli 64, there's no patches required.  It can happen, but usually you're fine with anything else.  One thing I really enjoyed with Minguli 64 is that it's much more welcoming.  And that makes it nice to work with.  So one goal is to reach the ABI of MSDC for C++  because right now you can't mix objects from the two.  But that's the goal, it's getting closer.  And that's why if we want a two GCC version, you have to rebuild all your C++ stuff  because the ABI has changed and Kali is a cool player.  But I don't think he's here for YouTube, he's supposed to turn that team.  He was here, by the time he was done.  He told me so, I don't see him here.  He's probably hiding here, so that's already gone.  Oh, yeah, he collected four.  So, yeah, what's in the Minguli 64 code?  So we have headers, of course, which go up to Windows 8, so I think that.  You get additional things quite regularly,  like Minguli.org, which was last time I looked at it at like 5, 6, 7 years.  That's why also several projects collaborate, do things together  because the Deotix headers come from wine  and the Dedica ones come from ReactOS.  And also, that for headers, there's also some code,  which is mostly when the human time of Microsoft doesn't handle C99, C11,  well, that's all of it, and Minguli 64 adds code to fill in the gaps.  And the last thing is for libm, actually, Minguli 64's code is faster than Microsoft's.  And if you want to build for, what, with Minguli 64,  you have way quite a series of possibilities.  You can cross-compile from Linux.  You can build from any of the projects like environments,  which run on Windows or Segrin,  or mt2, which, well, mt2 is a fork from Segrin from like 10 or 15 years ago.  mt2 is a fork from Segrin, which has pretty much the same difference,  but the code from Segrin is only from last year.  And then there's Ewing, which is made by DevKorn,  and I know no one who uses it, maybe, besides him,  and I'm really curious to know how it performs,  and when it should be used instead of Segrin, for instance, but I have no info on that.  Yeah.  Yeah, but what I know, they have licensing differences,  so I think human life is something that people can use, kind of, most.  Yeah, I said, yeah, Segrin's GL is GPL, you will not, but,  I don't know if you have differences in, like, performance or...  Okay, fine.  I asked Dave too, but haven't gotten an answer yet.  Well, last point, you can also do native compilation,  and the lesson to know is that you will be without any shell,  without any predict shell, so that's mostly when you run from an IDE.  One thing that is actually...  You have many of these, almost as many line-up distributions,  people who make banners,  but out of two chains, and possibly libraries,  and other banners with other executive.  So OpenSuzi and Fedora, they have teams which handle that.  They've been using Minimo 64 for quite some time,  and if you're running on one of these distributions,  just go with them.  They are, like, at least 2,000 packages, probably more.  It's fairly aggressive, well-attested,  and I think in both cases, you have either another or that which  at least uses the packages.  So users who care about quality.  MXA is based on source, and they have quite a lot of packages,  sometimes a bit weird with some weird pictures,  and they do static linking of LGPL libraries,  which means you might have troubles with license,  because you won't be able to easily swap the LGPL binary for the one.  Okay, I'm going to make it shorter.  Ruben Vibi, he had some nice builds,  he does many builds, and he had some nice ones with a tongue,  and he's been working on LLVM more recently.  Seguin, there's a close compiler in it,  which is from Jonathan Young, who is a core member of Minimo 64.  Well, yeah.  I will build, which is my own, which is obviously awesome.  All right.  Are you sure there's no Debian or you will be able to access it?  Yeah, right.  There are Debian, there are actually, not actually directly, but are you there?  There are going to be some simple ones,  but the difference is that OpenSystem and Fedora,  they have many libraries.  If you want LLVM, if you want to live, I don't know what,  they're going to ship it.  Debian, they have the compiler, they have the toolchain,  they have a few other ones, but not that many.  Yeah.  Some of them have been building like with more recently,  but it's still very small.  Yeah.  All right. So, another view of Windows.  Oh, yeah.  The goal, really, the goal was to, I noticed that everyone was doing their own builds,  especially a few years ago.  Everyone would build GCC, would build libraries,  it took ages, it wasn't easy, and it's really frustrating.  So, I thought maybe with a more systematic approach,  I could make it less painful.  I also wanted to make it, to have better free software on Windows.  If people spend less time building, they can spend more time coding,  that would give nice results.  And the last goal is that if you can bring more to date and faster,  like with everything to Windows,  then we can probably get companies which do proprietary software  to use them instead of other proprietary components,  and then they can be supported on Linux,  either because they are going to switch to Linux,  or it's more easily.  So, yeah.  As for current status, you need new Linux to build.  You can run it on Linux too,  if you want, obviously, it's cross-compilation.  You can run the compiler on Linux.  For the brainwaves, you can install everything on XP to 2012.  I've tested four versions of them.  The only thing is that XP is on issues at the OS level, not mine,  and I can't do anything to fix them or maybe work on them.  So, avoid it.  Yeah.  I've been meaning to...  Right now, there are only 60 packages.  It's not that much, but it actually covers quite a lot of things  you might want to do that won't be...  I don't think there will be more than a thousand packages, you know.  Like, you don't need a package for a modprobe or K-mod on Windows.  It makes no sense.  So that really means we have less packages.  I think the package is actually pretty easy.  I'll get to that a bit later.  But what took time was really to work on the architecture,  to make it nice, use it everywhere, to make installers for Windows.  And that was awful.  But version 1.3 was released a few weeks ago,  and it works.  It should be easy to set up, even if some people seem to have issues with it.  But I will see you soon.  And version 1.4, which should have many more packages, at least.  I hope it's 10 to 20 more in two or three months.  All right.  As for what's available in more details, you have C++,  we see 11 and C++11 support.  There's a lot of...  I haven't tried other 4.1 parallel, mostly because I need a project to build against them and to use.  I have no idea what people want, which is...  I haven't used parallel, so I'll test it.  Yeah.  I think that limits it, because since I do cross-compilation,  I like to...  test it a bit more difficult to run.  And also, I don't know the parallel one, but I know the GCC one on Windows,  I think it would take like 24 hours to run on some very powerful hardware.  It's very difficult to run in practice.  And because you can't come several tasks at the same time,  because otherwise the output is going to be mixed.  You won't see anything.  That's on Windows, yeah.  Yeah, so, GCC, I had them, but I built nothing, which is Objective-C.  I know someone who used the next step on Windows.  And the compiler worked, but I went twice since then.  Oh yeah.  If you care about Java or Objective-C GCC support,  well, you can tell me something now, because I can't build...  GCC, GCAG, 64 bit cannot be built.  The copy of libGCC, which is in GCC,  is from 2007, so it doesn't have 64 bit support,  and no one is taking care of it.  Honestly, it's probably going to die soon.  Yeah, I've also been working on an OQMAT post-compiler,  and for Python, I think they're still weak for MSVC to build or to...  Well, at some point, they don't handle it, but they're working on it.  So, that could come by the end of the year, actually.  Okay, so, status again.  You can run GCC apps, past that, only 2.x for now,  and you only have 32 bit support.  GCC has a 64 bit simple network.  You have enlightenment stuff, several other libraries,  and Qt is actually missing, because Qt is the weird beast.  I haven't been able to...  Well, I should try again with Qt5, but with 4-something, it was not very nice.  Always.  Small woodlap, as I said, more packages.  I seriously need to work on the test suite.  When I have to try something out, I need to reboot on Windows,  even if I need to do something by hand with even as few as 60 packages.  It's going to take a good chunk of the day.  When I want to make a release, it's going to take a weekend.  That's something which I need to improve on.  If someone is interested in that, get in touch.  I see what I can do to on my side.  I don't mention it, but I really want to get security fixed on Windows,  of languages and Windows in an efficient manner.  I'm still sure how to do it efficiently.  Which people?  Longer term, more packages.  I'd like to include the package manager inside Installer's directly.  The idea is that you get the package manager, you append some payload,  maybe not at the end, but you insert some payload,  and you get an exit which you can run, which you will install the package manager,  possibly update older versions of some packages.  That's the plan.  I'll be working on that with one Enlightenment people,  you know, E17, so maybe in 10 years.  One on Windows, I'd really like to get that.  I don't know if it's going to be used much, but it's fine.  First, I'll buy it out from Windows.  No, sorry, there was only one.  From Windows to Linux, actually no companies which do that,  because they have been migrating the product to Windows,  but people are still working on Windows.  They've been used to Windows as an environment for years,  or there are some Enlightenment people who don't want to migrate away from Windows,  but they're doing Linux on their usage.  If you want to start your new get,  I found the documentation is pretty much exhausted.  At least for users, simple users should be good.  If you want to package, well, you're supposed to do it from Linux.  It's easier, but you can also do it from Windows if you like to pay.  Prefer 1.4.1, which has some much nicer changes.  But if you only want to run it on Windows,  1.3, which is the current version advertised on the website,  you should not have any issues with it.  Well, I hope so.  As I mentioned, if you want to help on something, testing is really, really needed.  Especially testing on various versions of Windows,  that's something I can do, but it's horribly painful.  For the previous release, I've been testing installers for,  I think I spent one month testing and fixing installers from XP to 2012.  That's something I really like to share the pain with others.  Yeah, also if you have some code, please build it.  I'll show you why at the end of the talk,  there are many, many small issues which take nothing to fix.  Usually, most of the things mix cleanly.  Well, mostly cleanly.  That's actually pretty nice.  It was on the case like 3, 4, 5 years ago.  Yeah, that's quite about it to our websites.  It's because there are quite a lot of websites which,  when you have new projects or projects which change web homepage,  links are not updated and you get really old results in such engines.  So, just a quick check.  You don't have to, I'm not telling you to remove Mingri.org  and to never mention it again,  just to add Mingri 64 next to it for instance.  Ah, right.  So, users.  I think from 1,000 to 2,000 installations during January.  From the one-day start, I've collected for February,  it might be doubled for February.  The only thing is that, well,  I'll show you how you install on Windows.  Like so.  So, you just fire your website, you go there,  you see the doc, so you are forced to read the doc.  You say, you say Z file, and then you simply export it.  Simple.  And then, you have several binaries which are going to be combined.  And you have an install script for MC source segran if you wanted it.  You have an install script for when you are outside of them.  You want only Windows stuff.  I mean, you are outside of any projects layer.  That's why it's a batch file.  Hey.  And you have a script which you use for MC source segran,  which is going to switch which environment you use.  So, 32-bit or 64-bit, because this does not have utility tool chains  because of main clashes.  And, yeah, so, you just run doc, and then it installs automatically.  All right.  And see something.  The thing is that from downloading the Z file to...  It's very fast because it was actually on a gigabit pipe.  From downloading the Z file to running the script,  it seems like as many as 50% of people give up.  I have no idea why.  I mean, all right, this script is not very pretty, but come on, 50% of people.  Maybe you should call it setup.  She tries that, yeah.  Well, when I take it, I just run Z,  and I take it, so I'm probably not going to need to run it.  Actually...  Oh, yeah, that was just putting a few things.  But, yeah, that's why I actually put the links inside the doc.  You're supposed to win it, but, yeah, it's possible on that.  So, that's why I want to put a GUI to make it.  I'm not sure it's a good idea to support people who will never win any documentation.  And I feel like we'll never use a movie.  That too.  Yeah, well, I'm going to finish the video so directly.  For just winning stuff,  the thing is that if you look here in the back one,  you actually see many, many files.  That's all the packages.  That's what you get pretty much automatically.  So it has a very nice current window.  But a bit from that, there's almost nothing involved to use it.  And that's Elementorist stuff.  There's been some people who have been doing nice jobs to make it work.  It's not perfect.  It's trying to save things in the home, like on Linux.  But apart from that, it's almost working.  Alright.  So, yeah, that's it for the video.  Yeah, now, the stats come from Apache Logs.  I haven't planned to have any stats at first.  And I've only been able to guess that from values, bits here and there.  So, 15% of people are winning from Linux.  And five from Segrin.  That's really a guess for Segrin, but I think it should be...  I'm pretty confident in it.  Almost no one gives feedback, of course.  I have no idea if for most people it works or if they don't like it.  So, yeah, again, I really like feedback on that.  I have had a few people who have been up here with it, though, so I'm fairly confident.  Yeah, Western version of Windows for most people and 64-bit for Apache.  It's like almost everyone who views the website from Windows uses a 64-bit OS.  I'm really expecting some people, but not 90% of them all.  So, I think that's why people might run Windows on their browser,  but then copy this into somewhere else.  You're going to need an internet connection, at least.  But, yeah, they could do that, too.  I want to collect some more stats.  I only need some guesses from Apache Logs.  That many user-games.  Actually, one which has been put into this thing is WGate,  because that's the one I ship in the Installer.  I think, like, it's on the point of pop-up, I think, in January, I'll say more.  90,000 downloads from WGate, something like that, from WGate on Windows.  And 5,000 WGate for Linux.  That's how I guess how many installations there are.  How they are balanced.  For the number of installations, I just check which files have been downloaded and how many times.  And, yeah, as I said, I want to put more stats in it.  I don't think much.  I only need 32-bits, 64-bits, Windows, Linux, something else, and which version.  Yeah, MCC green or outside of any.  Because, yeah, I'm confused. I'm really blind.  Oh, yeah, right.  So, stupid and difficult details.  Yeah, I've written a package manager from scratch.  It's a very simple one.  It only meant to work like that.  You install, you tar XVF, you store the list.  When you want to install, you remove the files which are in the list.  You can remove files from the package, but that's it.  Not exactly, but it's fully 90% of the work.  There's some weird things to handle, stillings.  Now I hate stillings on Windows.  I hate junctions.  I even hate hard links.  I had to go into React2S code to understand how to use junctions on Windows.  Very happy about that.  It took me like three days to do one junction.  And, yeah, the package manager actually opened the code because, well, I know a channel.  It wasn't too bad.  And it compares to native code and it works.  There are ported most functions.  You can use the same code on Linux and Windows.  You're not going to have to do if, if, one or the other.  I think I've watched it on Linux, made it work on Linux.  Switched to Windows, to Pyke.  I don't know, five, six hours to get everything working.  Yeah, basecripts, they are from Slackware.  Actually, the reason is that I'm going to try to find that again.  That's the reason.  That's expected.  It's only an empty disk.  So, yeah, just, for example, that's for LibreKive or BeezItar.  There are many changes.  Actually, you can't say anything actually.  You change, you set a few paths like you want to install and leave all 64.  You keep, I've kept all that.  Changes like 10 lines, which are cookie paths.  That's the same.  That's simply exporting sources, getting to the term directory.  You can do some same, safe, use it as permissions.  You will configure.  Same as other, no problem.  That variable is not defined as well.  You change, post, you set it.  And then you replace else when looking for executables to strip with p.  And instead of calling Slackware's makePKG, which takes a folder and makes another bit,  you call makePKG, which is my tool.  Same here, cookie paths.  Porting is very simple.  It's like 30 seconds to one minute of work for porting the script itself.  Yeah, you're okay.  Of course, that only works when the source can be ported.  And if your software has been packaged, or something you are interested in,  you can just go to the load, check what is in it.  You should see everything.  Configure options.  So if you want one, which is on there, shout.  If you see a warning, which looks dubious, say, well, you can fix it.  And that's the scary thing.  There is one less package to build for 64 bits.  And you have half, you have 6,000 running for 62 bits and 9,000 for 64.  So that means I think we're pretty lucky that most of the software actually run.  They're probably built everywhere.  For the difference, I don't know maybe because you have different sizes for some types.  I don't know.  We have that for 29% of those.  Yeah, quite a lot of those.  Actually, there's also x264, which adds a dash speak to every C file in this build.  And GCC is going to say, hey, that's useless for each and every file.  That probably is only one or two handwritten warnings.  Yeah, and I cannot subscribe to every word tracker and start saying, hey,  you need to fix that line with that thing.  I think that people doing the other way around.  I'd like to.  That means get a source of rebuilds and look for that tree.  It will mean there is a small patch right after that.  So you look for it.  If you like live org, you see there's a patch to it.  There's a change to it.  Read it and maybe apply it.  Let me know.  Yeah.  As for the secret issues, there is a big system.  When there's no post-convehition, I cannot put that in the packages.  I'm trying to have reproducible builds, but not fully reproducible builds,  but at least something which is not just pure log that it works once.  That means I'm doing it from Linux.  Everything is supposed to be post-compiled because on Windows,  you are unlikely to be able to keep the same untimely month for more than a few,  I don't know, Windows changes.  You're not going to have five years of support for your Windows distribution.  Also, if you see something which uses libpng.conf or anything similar,  please convince the author to not use them anymore to use pkg.conf.  The other one does not handle post-compilation.  We have one of the systems.  It's in slash user, slash bin, and it's going to say use the Linux one,  even to fail, but the last one I need to fix is that libpng.conf.  It's a bit annoying to have to do that nowadays.  There were a few missing.exe extensions, but not many.  That's the kind of thing which is very easy to fix.  Libsup was failing because it was using sgrch,  it hadn't included string.h,  and it was said to fail on warnings.  It could have failed anyway, but it was really a one line change  which applies to everything.  If that version of libpng had been tried to build for Windows,  it would have been fixed at once.  Another issue, open SSA.  We can flex a little bit.  Open SSA does a lot of weird things,  including adding the same from SSL2 to the same one, but uppercase.  I don't think anyone calls that main page, but anyway.  The last one which many people don't know is that the L5  usually goes to Bindi and not libdi.  Next to.exe5.  Push on the website if you want to look for things.  Open a box.  You focus very much on getting all sorts of libraries compiled under it,  but I'm still interested in the actual compiler and linker part,  because it's still stuck in the solve there.  It's working well.  The main changes that are left seem like C++,  Pdb support, a few things like that,  but otherwise it's a quote for...  I tried to use around November last year, for example,  and the linker has an error handling strategy in the last four,  which wasn't part of the user interface.  Haven't had issues with that.  I use a separate disk with an version.  I like Slackware because it's not too old and not too new either.  I'm going to like a dating version, but sometimes it should be fairly stable.  There's also one thing with BindiTales,  you have two versions.  You have the FSS1 and one which is meant for Linux,  which has five number strings,  and that one you cannot use it for Windows.  Sorry, so I tried to use Linux host Windows.  Yeah, but I meant the two BindiTales.  The FSS1 and the one used the most line-up distributions  for the old purpose, I mean, for two-tiger line-ups,  and at some point I made a mistake of using it  that would not work because there are line-up specific patches  which are not yet upstream.  You can recognize them because they are not like BindiTales 1.2.3,  but 1.2.3, 0.5, 0. something, and something.  The only one you cannot.  Is there an option to treat include files,  open a case in sensitive and cross-compile it from Linux to Windows?  I don't think so.  I don't think that.  So I filed a future request.  So I was trying to compile some Windows code  and included the queue first in the wrong case and failed.  Well, basically if you build with,  while using NTFS 3G on Linux,  you have a mount option which says...  But that's what's on X or what?  Yeah, yeah.  You need to be bound to that one.  I don't think so.  When you run this Windows installer,  how much downloads a lot of libraries?  How big is the whole bunch of it?  The number is, you will be downloading like 50 to 60 megabytes,  because it's actually XA,  as the DMA2 compression,  it compresses nicely,  and I think it spans to 2,050 something.  Maybe with more I need to check.  The landing is really small,  but it can span to three times more, but pretty silly.  And 50 to 60 is for 32 bits,  and you also get 50 to 60 for 64 bits, so twice.  No.  I will wait.  I'm going to pop that myself.  Thank you.  Thank you.
_FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_0_155.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_156_203.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_204_299.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_300_383.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_384_515.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_516_683.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_684_923.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_924_1811.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_1812_2087.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_2088_2231.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_2232_5039.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_5040_5615.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_5616_6899.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_6900_7139.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_7140_7511.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_7512_10007.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_10008_12731.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_12732_12815.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_12816_22619.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_22620_26039.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_26040_26543.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_26544_34583.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_34584_35339.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_35340_35939.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_35940_36095.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_36096_36359.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_36360_36515.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_36516_37019.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_37020_39419.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_39420_39587.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_39588_39971.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_39972_40103.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_40104_41027.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_41028_45551.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_45552_45635.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_45636_48347.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_48348_48827.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_48828_49787.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_49788_50555.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_50556_51335.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_51336_51383.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_51384_51563.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_51564_51659.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_51660_55043.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_55044_55295.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_55296_59819.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_59820_61487.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_61488_62495.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_62496_62675.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_62676_63311.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_63312_64343.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_64344_65939.png _FOSDEM_2014__Win-builds_and_Mingw-w64__Package_manager_and_modern_toolchains_for_Windows_65940_66048.png