MinGW


  • Considered Harmful

    I need to compile some Sass code dynamically in C#. Sass is natively Ruby, but there is a C++ port called libsass. OK, great, with a little marshaling I can call out to the DLL from C#. I just need a compiled Windows DLL for libsass.

    Someone suggested I use MinGW for this. Now the pain begins.

    I'm getting started with MinGW, so obviously the first place I look is the Getting Started page on mingw.org.

    @MinGW Installation Notes said:
    MinGW Installation Notes

    MinGW may have problems with paths containing spaces, and if not, usually other programs used with MinGW will experience problems with such paths. Thus, we strongly recommend that you do not install MinGW in any location with spaces in the path name reference. You should avoid installing into any directory or subdirectory having names like "Program Files" or "My Documents", etc.

    No version numbering convention exists for MinGW as a whole. Each package has its own version number, and the installer version number does not correlate, in any way, with the version number of any individual package which it installs.

    The preferred installation target directory is C:\MinGW

    The preferred installation method is using the automated installer tool, as described below. While a manual installation is possible, we do not recommend it, unless you have a very old version of MS-Windows which is unable to run the graphical tool. Instructions for manual installation are provided below, if you really want (or need) to resort to it.

    OK, that already bodes ill. Whatever, I just need to get this thing compiled. I install it with the GUI installer, following the installation notes in detail. Then I try to run a build and get this:

    Dafuq?

    Some Googling finds this:

    [quote user="Re: [Mingw-users] No disk in drive error after update to recent version"]
    > Hello everybody! > Yesterday I downloaded the mingw-get-setup.exe to install a newer version of > MinGW. I deleted everything in my MinGW directory and ran the > MinGW-Installer. After the installation completed I opened a command line > and typed "gcc -v" to test if the installation was completed. A windows > error message poped up saying that "There is no disk in the drive. Please > insert disk in drive E:" After I clicked on cancel a couple times the > expected output (gcc version) appeared in the console. The discribed error > happens everytime I try to compile or do anything MinGW related. Needless to > say this makes working impossible. > I tryed to google the problem, but I found nothing, exept one very old entry > post on some forum. The person had the same problem but it was on a Vista > machine and it turned out to be a packaging problem. I am running a Windows > 8 machine and until I tryed to update everything worked fine. > Although I have some years of programming experience this is my first post > on a mailing list, so I hope I got everthing right. If not, please let me > know. I really need some help on this, because right now I can't programm > anything at all!

    Similar messages have been reported. The issue is that the searches
    added by GCC for include files search the paths of my development
    environment by default and you have a device mapped to E: without the
    device being present
    causing the pop-up. Suggestions have been made
    that I will try on the next upload but I don't think those will work
    sufficiently because I do not plan to edit the strings of the
    executable to remove the reference to the disk device
    .

    You can remove the mapped instance of E: on your system or add the
    device pointed to by E: but at present that is the only help I can
    give you unless your are willing to binary edit the strings in the
    executables to remove the references to E: to C: or some other valid
    device on your system.

    [/quote]

    (emphasis added)

    What the fucking fucking fuck? He has a hard-coded reference to E: in his code, so if you have an E: drive, and it does not have a disk inserted, you will get this error. And the status is WONTFIX because he needs it to work on his machine? His recommendation is to remove the E: drive or insert a disk into E:? What the holy mother of fuck?



  • Why don't you just call-out to the Ruby script in the first place? This headache ain't worth it.



  • @joe.edwards said:

    Someone suggested I use MinGW for this. Now the pain begins.

    Who?


  • Considered Harmful

    @Buttembly Coder said:

    @joe.edwards said:

    Someone suggested I use MinGW for this. Now the pain begins.

    Who?

    The guy who wrote the Go wrapper for libsass. Yes, that should have been a warning. I really just wanted to find a precompiled Windows binary but Google failed me.


  • @joe.edwards said:

    @Buttembly Coder said:
    @joe.edwards said:

    Someone suggested I use MinGW for this. Now the pain begins.

    Who?

    The guy who wrote the Go wrapper for libsass. Yes, that should have been a warning. I really just wanted to find a precompiled Windows binary but Google failed me.

    Is this one of those cases where you should just see if the original version works in IronRuby?



  • I was thinking just redist Ruby.


  • Considered Harmful

    @Buttembly Coder said:

    Is this one of those cases where you should just see if the original version works in IronRuby?

    Thanks for that, it never crossed my mind. I'd much rather keep everything in managed code.


  • Considered Harmful

    It's going on our web server so we can manage styles from our enterprisey web CMS without a code deploy. Currently, sass compilation happens as part of our continuous integration build. It was deemed that our weekly production release cycle was too slow for CSS updates.



  • Yeah, then just deploy Ruby to the servers. Easy-peasy.



  • @joe.edwards said:

    @Buttembly Coder said:
    @joe.edwards said:

    Someone suggested I use MinGW for this. Now the pain begins.

    Who?

    The guy who wrote the Go wrapper for libsass. Yes, that should have been a warning. I really just wanted to find a precompiled Windows binary but Google failed me.

    Good luck finding anything pre-compiled in open-source land. Also, I've tried playing with Ruby on Rails on Windows. It's a nightmare. Just say no to anything Ruby related and Windows. And also PHP on Windows. Say no to that as well.



  • @twilsonxpert said:

    Good luck finding anything pre-compiled in open-source land... It's a nightmare.

    Some time ago, I needed PyQt5 on Windows, and while Riverbank provides pre-compiled binaries, at that time they provided an older Qt5 that didn't have a crucial bugfix I needed. So I set out building Qt from scratch:

    • Qt uses a reasonably standard configure-make process. However using the source downloaded from Qt's website, the configure step failed. It turned out it checks for the presence of a .gitignore file, and only builds the configure binary if that exists. Otherwise it assumes the configure binary already exists (presumably they meant to release source snapshots with it pre-built similar to how some programs use autoconf) which it doesn't, and fails. Solution: touch .gitignore before running configure.
    • After running configure, it turned out I'd need to give some more options. The output of configure told me I should run nmake confclean to reset the configuration before re-running configure, however nmake complains confclean isn't a valid target. I never figured out if it was okay to ignore that and re-run configure; I just nuked the entire source tree and re-extracted the source.
    • I wanted to have QML support, which requires me to build QtQuick, which requires me to build Webkit. Webkit requires Perl, Python *and* Ruby to build. And of course all of them need to be in %PATH%
    • Building Webkit still failed, because on 32-bit builds the VS linker aborts when it detects the binary is going to be too large to fit in 32-bit address space. (Firefox has complained about this for some time.) Some Googling led me to a discussion on how the fix for this was to disable LTCG. Apparently the Qt people know about this and conditionally disable LTCG in the project file already... except their condition checks for each VS version separately. They disable it on all versions of VS upto 2012; I was compiling with 2013.
    • Webkit also needs ICU (Intel's Unicode library) which needs Cygwin. MinGW or any other msys did not work because their bash "helpfully" converts arguments to cl.exe such as cl /Gy into cl C:\icu\Gy (assuming C:\icu is the current directory) causing cl to complain about missing files to compile. I don't remember whether the correct invocation was to start Cygwin from the VS command prompt or vice versa; regardless it was annoying to figure it out.

    I got it to work in the end - a self-compiled Qt 5.2 with PyQt 5.1. Then Riverbank released PyQt 5.2 which broke with my Qt - PyQt now required openssl support which my Qt5 didn't have. openssl needs zlib, and while Qt bundles and builds its own zlib as part of its source tree it doesn't bundle openssl, and I didn't want to bother with jiggering with openssl to get it to use Qt's zlib, so in the end I just gave up and used PyQt 5.2's precompiled Qt. (5.2 did have the bugfix I needed).

    I co-maintain Windows builds of GTK+ (plus its dependencies) from source, so I like to think I'm not a greenhorn at getting Linux things to build on Windows, but this shit gets really frustrating at times...


  • Garbage Person

    @Arnavion said:

    @twilsonxpert said:
    Good luck finding anything pre-compiled in open-source land... It's a nightmare.

    Some time ago, I needed PyQt5 on Windows, and while Riverbank provides pre-compiled binaries, at that time they provided an older Qt5 that didn't have a crucial bugfix I needed. So I set out building Qt from scratch:

    • Qt uses a reasonably standard configure-make process. However using the source downloaded from Qt's website, the configure step failed. It turned out it checks for the presence of a .gitignore file, and only builds the configure binary if that exists. Otherwise it assumes the configure binary already exists (presumably they meant to release source snapshots with it pre-built similar to how some programs use autoconf) which it doesn't, and fails. Solution: touch .gitignore before running configure.
    • After running configure, it turned out I'd need to give some more options. The output of configure told me I should run nmake confclean to reset the configuration before re-running configure, however nmake complains confclean isn't a valid target. I never figured out if it was okay to ignore that and re-run configure; I just nuked the entire source tree and re-extracted the source.
    • I wanted to have QML support, which requires me to build QtQuick, which requires me to build Webkit. Webkit requires Perl, Python *and* Ruby to build. And of course all of them need to be in %PATH%
    • Building Webkit still failed, because on 32-bit builds the VS linker aborts when it detects the binary is going to be too large to fit in 32-bit address space. (Firefox has complained about this for some time.) Some Googling led me to a discussion on how the fix for this was to disable LTCG. Apparently the Qt people know about this and conditionally disable LTCG in the project file already... except their condition checks for each VS version separately. They disable it on all versions of VS upto 2012; I was compiling with 2013.
    • Webkit also needs ICU (Intel's Unicode library) which needs Cygwin. MinGW or any other msys did not work because their bash "helpfully" converts arguments to cl.exe such as cl /Gy into cl C:\icu\Gy (assuming C:\icu is the current directory) causing cl to complain about missing files to compile. I don't remember whether the correct invocation was to start Cygwin from the VS command prompt or vice versa; regardless it was annoying to figure it out.

    I got it to work in the end - a self-compiled Qt 5.2 with PyQt 5.1. Then Riverbank released PyQt 5.2 which broke with my Qt - PyQt now required openssl support which my Qt5 didn't have. openssl needs zlib, and while Qt bundles and builds its own zlib as part of its source tree it doesn't bundle openssl, and I didn't want to bother with jiggering with openssl to get it to use Qt's zlib, so in the end I just gave up and used PyQt 5.2's precompiled Qt. (5.2 did have the bugfix I needed).

    I co-maintain Windows builds of GTK+ (plus its dependencies) from source, so I like to think I'm not a greenhorn at getting Linux things to build on Windows, but this shit gets really frustrating at times...

    And I thought MY build process at work was a complete and utter PITA - to the point that I actually don't have it building successfully on my own machine and just rely on the build server - which I spend roughly 1/4 of my time babysitting because the build process breaks every time you add a new dependency or output).

     

    Anyway, we depend on a lot of opensores stuff. We don't build ANY of it dynamically. Precompiled libraries only. If we can't get a binary release, we build it once and that DLL goes into the source repository right next to the licensed commercial stuff. Opensource dependency creep is insane.

    Incidentally, this also means that we don't ever fix any bugs in the opensource stuff, despite encountering them on a routine basis. We just work around them like we would in any out-of-support commercial lib or just throw the damned thing out when it turns out to be not-fit-for-purpose. Yeah, if I have to spend more than twenty minutes setting my environment up just like the egotistic morons who run the opensource project's environment to get to the point where I can even THINK about researching an apparent library bug, I'm not going to do it, because my time (and the time of my minions for that matter) is too valuable to waste on that. If there's literally any way around it, we'll take that course first.

     



  • @joe.edwards said:

    What the fucking fucking fuck? He has a hard-coded reference to E: in his code, so if you have an E: drive, and it does not have a disk inserted, you will get this error. And the status is WONTFIX because he needs it to work on his machine? His recommendation is to remove the E: drive or insert a disk into E:? What the holy mother of fuck?

    Not so much a hard-coded reference as that he couldn't get gcc to find his source, so he just added every fucking drive on his system into the search path until he got a compile. I don't understand why GCC would then go and embed those references into the resulting binary, it definitely sounds like he's fucked something (else) up there.



  • @twilsonxpert said:

    Good luck finding anything pre-compiled in open-source land. Also, I've tried playing with Ruby on Rails on Windows. It's a nightmare. Just say no to anything Ruby related and Windows. And also PHP on Windows. Say no to that as well.
     

    What? It's incredibly rare to find a piece of free software that does not have a pre-compiled version for Windows. Often, there are 3, an installer, one without the installer and a portable version. That's mainly because compiling (or running, by the way) anything on Windows is a nightmare.

    Ok, but I've never tried to do anything Ruby related on Windows, maybe that's why my oppinon differs so much. PHP is quite easy to find compiled for Windows, standalone, bundled with Apache and MySQL, bundled with Nginx, or in any comfiguration you want... Anyway, I completelly agree with your advice: just say NO to that.

     



  • @Mcoder said:

    PHP is quite easy to find compiled for Windows, standalone, bundled with Apache and MySQL, bundled with Nginx, or in any comfiguration you want... Anyway, I completelly agree with your advice: just say NO to that.

     

    Yeah, but just try building PHP yourself on windows. It's not [i]quite[/i] as complex as the aforementioned procedure, but quite hellish all the same. And not everything is build either: just try getting a recent php_svn module for your specific SVN / PHP combination. Last time I tried, I ended up having to build it myself; it's still one of the most downloaded things I posted on my site.

    Another such "fun" project to make yourself: installing Trac on windows. At least in earlier versions, the process as I recall starts with Babel, two versions of Python (since some of the connectors require a different python version), Genshi, some "egg" thingymajig, a build program or other that you need to compile beforehand, and then you get on to the more fun stuff like database connectors and Apache modules. Although the last time I tried it (under linux) the process went a lot smoother, so possibly they streamlined it a bit since 0.11.

    Call me crazy if you like, but as long as (open source) projects keep pulling this shit, I'll gladly choose a closed source version instead.



  • @Mcoder said:

    What? It's incredibly rare to find a piece of free software that does not have a pre-compiled version for Windows.

    For the subset of software that is applications, yes.

    For libraries, you'll be lucky if the library even builds on Windows without needing Cygwin/MinGW. You'll often just find source. If you do find binaries, they'll be compiled with ye olde VS6 making them useless for your application because of CRT hell (unless you compile your application with VS6 as well). If you have to build it yourself, you'll find files with UTF-8 characters that cause cl.exe to complain about code pages, code that assumes long's are 64-bits on Windows and thus stuffs pointers in them, code that assumes all symbols from a DLL are exported by default under all compilers, code which assumes cl.exe takes in all the same switches that gcc takes, build scripts that don't work with paths in spaces in them, code that ignores best practices common sense (uses rundll32 to run a function in a DLL instead of just writing a main() function, and gets the function name wrong to boot) and code that doesn't compile unless you run it through a C99->C89 translator (disregarding whether the compiler or the source is at fault, the annoyance is still there). Atleast in some cases, even if official binaries are not available you can still find unofficial binaries; trusting those in production is another matter of course.

    Compiling on Windows is only a pain because OSS authors can't be arsed to write code and use build tools which work cross-platform, instead of autohell scripts which require a separate pkg-config binary just to be able to run the configure step. Or build steps which assume every executable they want is in %PATH%. Or actually test that their code even compiles in Windows.



  •  yet building can be as easy as finding the dependencies and compiler and if not found ASKING FOR THEM, and then running the compiler a few times

     

    when I compile a new lib I just go back the ye olden days of a bash script that compiles all sources and links them without bothering with makefiles or some such (apart from seeing what switches the code relies on)


  • Trolleybus Mechanic

    @Buttembly Coder said:

    @joe.edwards said:

    Someone suggested I use MinGW for this. Now the pain begins.

    Who?

     

    Fat Grandma, because she's had enough of your Sass.

     



  • @Arnavion said:

    @Mcoder said:
    What? It's incredibly rare to find a piece of free software that does not have a pre-compiled version for Windows.

    For the subset of software that is applications, yes.

    For libraries, you'll be lucky if the library even builds on Windows without needing Cygwin/MinGW. You'll often just find source. If you do find binaries, they'll be compiled with ye olde VS6 making them useless for your application because of CRT hell (unless you compile your application with VS6 as well).

     

    That has not been my experience.

    True, most of my open-source experience has been with Delphi code, which, being Delphi, you can sort of assume will "just work" even if it probably shouldn't.  But even when I've had to build C or C++ libraries such as SDL, FreeType and FTGL, Zlib and libPNG, libModplug, etc, they build just fine on VS 2008 (the last version with a UI that isn't a giant stinking mess of WTF and fail.)

    Actually, the only thing I've had significant problems trying to build from source was Firebird.

     



  • This is one of the cases where it's better to use a command line interface than a code interface. Seriously, just use the tool directly.



  • @Ben L. said:

    This is one of the cases where it's better to use a command line interface than a code interface. Seriously, just use the tool directly.

    My understanding is that he can't get the tool, as there aren't windows binaries.



  • @Buttembly Coder said:

    @Ben L. said:
    This is one of the cases where it's better to use a command line interface than a code interface. Seriously, just use the tool directly.

    My understanding is that he can't get the tool, as there aren't windows binaries.

    I just Googled "sass windows"


  • @Ben L. said:

    @Buttembly Coder said:
    @Ben L. said:
    This is one of the cases where it's better to use a command line interface than a code interface. Seriously, just use the tool directly.

    My understanding is that he can't get the tool, as there aren't windows binaries.

    I just Googled "sass windows"
    Before you start using Sass you will need to install Ruby. The fastest way to get Ruby on your Windows computer is to use Ruby Installer. It's a single-click installer that will get everything set up for you super fast. The installer will also install a Ruby command line powershell application that will let you use the Ruby libraries.

    @joe.edwards said:

    It's going on our web server so we can manage styles from our enterprisey web CMS without a code deploy. Currently, sass compilation happens as part of our continuous integration build. It was deemed that our weekly production release cycle was too slow for CSS updates.

    I had been assuming that the problem is that they don't have/want Ruby on their web server.


  • Considered Harmful

    @Buttembly Coder said:

    I had been assuming that the problem is that they don't have/want Ruby on their web server.

    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.



  • @Mason Wheeler said:

    But even when I've had to build C or C++ libraries such as

    Of the three in your list that I have experience with:

    @Mason Wheeler said:

    FreeType

    No complaints here.

    @Mason Wheeler said:

    Zlib

    Has code that stops working on Win7 if built against the Win8 SDK. The compiled application assumes the existence of the CreateFile2 function that only exists in Win8 due to a botched #ifdef.

    zlib also has the massive clusterfuck where everyone gets the name of the DLL wrong. Some projects want zlib.dll/lib, others want zlib1.dll/lib, zlib itself defaults to zlibwapi.dll/lib. (There is a historical reason behind this involving people building zlib themselves with mutually incompatible settings but leaving the name the same, classic DLL hell.) zlibwapi in particular is named so because it defines ZLIB_WINAPI when building and causes it to have stdcall linkage, which is incompatible with openssl - openssl calls zlib API via function pointers that assume cdecl.

    @Mason Wheeler said:

    libPNG

    Ships project files that were clearly never tested with multiple projects being built at the same time, because the project that runs tests does not depend on the project that builds said tests.

    @Mason Wheeler said:

    True, most of my open-source experience has been with Delphi code, which, being Delphi

    @Mason Wheeler said:
    they build just fine on VS 2008

    This is the graph of dependencies I work with to build GTK+ on Windows. Trust me, I know what I'm talking about.



  • @Arnavion said:

    This is the graph of dependencies I work with to build GTK+ on Windows. Trust me, I know what I'm talking about.
     

    That diagram is a perfect illustration of what is wrong with the open source community - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    Also: what's with that font in the dependency graph image?



  • @joe.edwards said:

    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.

    Blakeyrat is always right.


  • Considered Harmful

    @too_many_usernames said:

    Also: what's with that font in the dependency graph image?

    What's with the horribly pixelated drop shadows?



  • @joe.edwards said:

    @too_many_usernames said:
    Also: what's with that font in the dependency graph image?

    What's with the horribly pixelated drop shadows?

    What's with Harfbuzz?



  • @joe.edwards said:

    @too_many_usernames said:
    Also: what's with that font in the dependency graph image?

    What's with the horribly pixelated drop shadows?

    It's auto-generated from a textual description so I don't control how it looks.


  • ♿ (Parody)

    @blakeyrat said:

    @joe.edwards said:
    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.

    Blakeyrat is always right.

    Is this like those logic puzzles with the guy who always lies or always tells the truth? Are you always right forever or just until you change your mind?


  • ♿ (Parody)

    @too_many_usernames said:

    @Arnavion said:

    This is the graph of dependencies I work with to build GTK+ on Windows. Trust me, I know what I'm talking about.
     

    That diagram is a perfect illustration of what is wrong with the open source communitysoftware development - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    FTFY



  • @boomzilla said:

    @blakeyrat said:
    @joe.edwards said:
    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.
    Blakeyrat is always right.
    Is this like those logic puzzles with the guy who always lies or always tells the truth? Are you always right forever or just until you change your mind?

    No no, it's not a logic puzzle because puzzles aren't usable (or they wouldn't be puzzles).  Blakeyrat doesn't change his mind, because if you were always right why would you?



  • @too_many_usernames said:

    That diagram is a perfect illustration of what is wrong with the open source community - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    So how does that compare to the diagram of what you have to build Microsoft Foundation Classes on Linux? 

     @Arnavion said:

    Compiling on Windows is only a pain because OSS authors can't be arsed to write code and use build tools which work cross-platform, instead of autohell scripts which require a separate pkg-config binary just to be able to run the configure step. Or build steps which assume every executable they want is in %PATH%. Or actually test that their code even compiles in Windows.

    So people who writing for Linux for free or paid by Linux companies are bad, bad people because they didn't test on your preferred platform. Yeah, I'm not feeling it. If you want something guaranteed to work on your preferred platform, look for something labled "for Windows!" or offer someone money to port and maintain it on Windows.

    I would be stunned if any library written for Windows and not tested on Un*x would come close to just compiling on Linux.

     



  • @David1 said:

    @too_many_usernames said:

    That diagram is a perfect illustration of what is wrong with the open source community - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    So how does that compare to the diagram of what you have to build Microsoft Foundation Classes on Linux? 

     @Arnavion said:

    Compiling on Windows is only a pain because OSS
    authors can't be arsed to write code and use build tools which work
    cross-platform, instead of autohell scripts which require a separate
    pkg-config binary just to be able to run the configure step. Or build
    steps which assume every executable they want is in %PATH%. Or actually
    test that their code even compiles in Windows.

    So people who writing for Linux for free or paid by Linux companies are bad, bad people because they didn't test on your preferred platform. Yeah, I'm not feeling it. If you want something guaranteed to work on your preferred platform, look for something labled "for Windows!" or offer someone money to port and maintain it on Windows.

    I would be stunned if any library written for Windows and not tested on Un*x would come close to just compiling on Linux.

     


    Minimalist GNU for Windows?



  • @David1 said:

    look for something labled "for Windows!"

    Oh yeah, none of the OSS mentioned in this thread claims to support Windows. Nope.

    @http://www.gtk.org/ said:

    Where can I use it?

    Everywhere! GTK+ is cross-platform. Take a look at the screenshots to see a number of platforms GTK+ will run. [GIMP on Windows XP] [GIMP on Windows Vista]

    @http://www.zlib.net/zlib_faq.html#faq02 said:

    Where can I get a Windows DLL version?

    The zlib sources can be compiled without change to produce a DLL.

    @http://www.libpng.org/pub/png/libpng.html said:

    Platforms: Unix, DOS, OS/2, Windows, Mac OS, BeOS, Amiga, etc.

    @https://trac.webkit.org/wiki/BuildingOnWindows said:

    WebKit can be built from within Visual Studio

    Yeah, totally don't claim to support Windows.

    @David1 said:

    I would be stunned if any library written for Windows and not tested on Un*x would come close to just compiling on Linux.

    This thread is full of examples of Linux-only software that pretends to support Windows. Give me even one example of Windows-only software that claims to work on Linux.



  • @Arnavion said:

    @David1 said:
    look for something labled "for Windows!"

    Oh yeah, none of the OSS mentioned in this thread claims to support Windows. Nope.

    @http://www.gtk.org/ said:

    Where can I use it?

    Everywhere! GTK+ is cross-platform. Take a look at the screenshots to see a number of platforms GTK+ will run. [GIMP on Windows XP] [GIMP on Windows Vista]

    @http://www.zlib.net/zlib_faq.html#faq02 said:

    Where can I get a Windows DLL version?

    The zlib sources can be compiled without change to produce a DLL.

    @http://www.libpng.org/pub/png/libpng.html said:

    Platforms: Unix, DOS, OS/2, Windows, Mac OS, BeOS, Amiga, etc.

    @https://trac.webkit.org/wiki/BuildingOnWindows said:

    WebKit can be built from within Visual Studio

    Yeah, totally don't claim to support Windows.

    @David1 said:

    I would be stunned if any library written for Windows and not tested on Un*x would come close to just compiling on Linux.

    This thread is full of examples of Linux-only software that pretends to support Windows. Give me even one example of Windows-only software that claims to work on Linux.

    @Arnavion said:
    Linux-only software that pretends to support Windows

    So I was just dreaming when I ran GIMP and Google Chrome on Windows 8.1?



  • Also

    @David1 said:

    @too_many_usernames said:

    That diagram is a perfect illustration of what is wrong with the open source community - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    So how does that compare to the diagram of what you have to build Microsoft Foundation Classes on Linux? 

    I'm not going to make the argument that that dependency graph is bad, because it's the same graph on Linux. But your counter-argument is invalid simply because nobody uses MFC in code they want a Linux user to compile. People do use GTK in code they want Windows users to compile.



  • @Ben L. said:

    So I was just dreaming when I ran GIMP and Google Chrome on Windows 8.1?

    You're just trolling as usual, but I'll bite just this once.

    Let's say you want to write a GTK application that works on Windows and Linux. On Linux you'll get gtk-devel from your package manager and all is well. What will you do on Windows? You can:

    • Get the official Windows binaries from http://www.gtk.org/download/win32.php Of course, the diligent eye will notice that they are built with MinGW and thus use msvcrt.dll. So either you must compile *your* program with MinGW too, or use VS6. All newer VS compile against newer CRTs.
    • Build GTK yourself using the same compiler you want to use to build your application. This runs into the fact that GTK provides VS project files which are... suboptimal to put it lightly. And they don't include dependencies not hosted on GTK (roughly half of that dependency graph I posted earlier.) (In fact they do.) Compiling those dependencies will lead you to discover they don't compile out-of-the-box on Windows either (read my previous posts on this thread).

    That is what I mean by Linux-only software. I linked a patch above to fix where they try to put pointers in a long and then cast the long to a pointer later. I filed that bug myself on their tracker and it's been ignored. Even older Windows compat bugs have gone unfixed for years. There's a patch that is needed because GTK creates device contexts on Windows incorrectly. There's something wrong with compiling cairo that causes optimized release builds to segfault with a weird trace that doesn't happen in non-optimized release builds. A RedHat employee made a commit to GTK 2.24.18 which was supposed to be an optimization to avoid drawing parts of scrolling views, with the justification that it was tested in GIMP and it worked. Of course it caused glitches when used in HexChat, so one of the patches we apply to GTK is to revert that commit.

    GTK in particular is notorious for not even considering non-Gnome software on Linux, let alone any software on Windows. GTK3 went and deprecated icons on buttons and menu entries (I believe) because it goes against the aesthetic sense of the Gnome DE.



  • @Arnavion said:

    This thread is full of examples of Linux-only software that pretends to support Windows. Give me even one example of Windows-only software that claims to work on Linux.
     

    So open-source people are bad because they try to be cross-platform? I've got the world's smallest violin here playing for the poor Windows folk who get the best of both worlds but have to put a little work into compiling the Linux stuff. 

    I'm not going to make the argument that that dependency graph is bad, because it's the same graph on Linux. But your counter-argument is invalid simply because nobody uses MFC in code they want a Linux user to compile. People do use GTK in code they want Windows users to compile.
     

    To find it outrageous that GTK should depend on various other libraries, but not stress about the pile of libraries that MFC depends on is absurd. You want to drag around the core graphical toolkit for GNOME, you'll end up dragging around the various libraries it uses to do its job. If you want the developers of a toolkit to worry about you, you probably need to pay them, and Windows users don't pay RedHat.



  • @David1 said:

    So open-source people are bad because they try to be cross-platform?

    They do?

    Based on the above posts, it sounds like they become "cross-platform" mostly by accident. GTK+, speaking as an end-user and not as a developer, is a steaming pile of cattle vomit on Windows and it's obvious nobody gives a shit. (Compared to Firefox, which is also an open source project, but works acceptably well in Windows.)



  • @David1 said:

    @Arnavion said:

    I'm not going to make the argument that that dependency graph is bad, because it's the same graph on Linux.
    To find it outrageous that GTK should depend on various other libraries, but not stress about the pile of libraries that MFC depends on is absurd.

    Ah good. I see Ben L has a friend who also doesn't read the posts he's responding to.



  • Microsoft says Windows is "in demand" because 23 of the top 25 open source projects (what the fuck does that statistic even mean?) run* on Windows.

    *That is, they will start if you compile and execute them on a Windows machine, not that they require Windows to run.

    Let's try to figure this statistic out. GitHub has a list of the most "starred" projects. Let's start there.

    1. twbs/bootstrap, which is a bunch of CSS and JS files. CSS and JavaScript run in a browser, and almost every browser can run on Windows. That's 1/1 so far.
    2. jquery/jquery, which is a bunch of JS files. Again, Windows is capable of viewing websites. 2/2.
    3. joyent/node, a JavaScript interpreter. Runs on Windows. 3/3.
    4. h5bp/html5-boilerplate, a bunch of HTML files. Once again, Windows is capable of viewing websites. 4/4.
    5. mbostock/d3, another JavaScript library. Windows has not lost the ability to view websites since the start of this post. 5/5.
    6. rails/rails, Ruby on Rails. It runs on Windows. 6/6.
    7. angular/angular.js, yet another JavaScript library. It's amazing that out of the 5 client-side web projects so far, Windows can view the internet. 7/7.
    8. FortAwesome/Font-Awesome, which is some CSS and a few fonts. That's 6/8 web, 8/8 total now.
    9. vhf/free-programming-books. This one isn't even a program or a library. It's a fucking website stored in a code hosting site. 7/9 web, 9/9 total.
    10. bartaz/impress.js. It's a bunch of HTML, CSS, and JavaScript, but somehow Windows still has browsers. 8/10 web, 10/10 total.
    11. jashkenas/backbone, more JS. REDACTED web, 11/11 total.
    12. Homebrew/homebrew. FINALLY THERE IS A PRODUCT THAT IS NOT A WEB THING. Also, it only runs on Mac OS X, so 9/12 web, 11/12 total.
    13. zurb/foundation. JavaScript. 11/13 web, 12/13 total.
    14. blueimp/jQuery-File-Upload. LOOK MAH I'M RUNNING INTERNETS ON MY PC. 12/14 web, 13/14 total.
    15. harvesthq/chosen. Another JavaScript CoffeeScript library. Yawn. 13/15 web, 14/15 total.
    16. adobe/brackets. An open source code editor for the web, written in JavaScript, HTML and CSS. 14/16 web, 15/16 total.
    17. robbyrussell/oh-my-zsh. oh look zsh runs on Windows. 14/17 web, 16/17 total.
    18. mrdoob/three.js. JavaScript that runs in your browser. 15/18 web, 17/18 total.
    19. github/gitignore. This is a bunch of config files. You don't run them anywhere. But yes, they work on Windows. Especially the file that ignores the crap Windows inserts into your folders. 15/19 web, 18/19 total.
    20. jekyll/jekyll runs on Ruby. Ruby runs on Windows. 15/20 web, 19/20 total.
    21. hakimel/reveal.js runs in your browser. Browsers run on Windows. 16/21 web, 20/21 total.
    22. moment/moment runs in your browser. Browsers have not stopped running on Windows since the previous line was transmitted to your face. 17/22 web, 21/22 total.
    23. visionmedia/express runs on node. Node runs on Windows. 17/23 web, 22/23 total.
    24. gitlabhq/gitlabhq does not run on Windows. 17/24 web, 22/24 total.
    25. torvalds/linux runs on Windows. 17/25 web, 23/25 total.

    So Microsoft is right. Of the 16 browser-based libraries, 2 config file collections, 1 website, 3 libraries that run on cross-platform interpreters, and 3 actual compiled programs, Windows can run 16 browser-based libraries, 2 config files, 1 website, and 3 libraries that run on cross-platform interpreters.

    Wait.



  • I LUV THE LINUXES!!!



  • @blakeyrat said:

    @joe.edwards said:
    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.

    Blakeyrat is always right.

    Aha. So Blakeyrat is Wikipedia.


  • Discourse touched me in a no-no place

    @Arnavion said:

    This is the graph of dependencies I work with to build GTK+ on Windows. Trust me, I know what I'm talking about.

    I wish my code had dependency graphs that simple.
    @too_many_usernames said:
    That diagram is a perfect illustration of what is wrong with the open source community - except it's missing the fact that they don't tell you that when you start. Or which versions of each library are required.

    I've not had enough coffee yet. How is it an illustration of what is wrong? (The only way I can figure it out right now is if you think that everything ought to be self-contained, but I already mentioned the lack off coffee. Or are you talking about the crappy PNG-ization of the diagram? Whatever.) Typically, code is best written to not require a specific version; a specific major version and minimum minor version give better results (including the possibility of fixing bugs without breaking everything downstream).

    There's not much with the diagram if used for illustrative purposes. If you put all the version information in (and other critical metadata like where to obtain the code from) then the diagram is better for driving mechanical build systems, yet far harder for people to read.



  • @Ben L. said:


    Let's try to figure this statistic out. GitHub has a list of the most "starred" projects. Let's start there.

    Here's a tip: "Most Starred" <> "Most Downloaded".


  • Discourse touched me in a no-no place

    @boomzilla said:

    @blakeyrat said:
    @joe.edwards said:
    That is a correct assumption; though, by this point, I'm thinking Blakeyrat was right and it's not worth the headache.

    Blakeyrat is always right.

    Is this like those logic puzzles with the guy who always lies or always tells the truth?

    That one's as old as the hills. You simply ask if the next/last post will/did claim that the last/next post was/will be wrong.



  • @David1 said:

    So open-source people are bad because they try to be cross-platform? I've got the world's smallest violin here playing for the poor Windows folk who get the best of both worlds but have to put a little work into compiling the Linux stuff.

    As has been pointed out, it often doesn't work properly or at all on Windows, compiling issues aside.
    If you are going to say something works on Windows, you should damn well test that it actually works on Windows. If you don't, I get to say that any open-source Windows program works on Linux.


  • ♿ (Parody)

    @Salamander said:

    As has been pointed out, it often doesn't work properly or at all on Windows, compiling issues aside.

    If you are going to say something works on Windows, you should damn well test that it actually works on Windows. If you don't, I get to say that any open-source Windows program works on Linux.

    Fuck...even MS's software breaks on Windows.

    Compiling software in environments that weren't designed with compiling all of your software in mind is often hard. Supporting multiple compilers is hard. Even on the same platform. Compiling software for windows that you didn't write yourself is monumental.


Log in to reply