Dear David, your suggestion and pointers are very very interesting, and I was admittedly completely ignorant of Nix until now! I will give it a closer look soon, but its something that will require a bit of learning on my side (or at least a review of my current work style) :-) :-)
All the best, Mario On 20.02.2017 17:20, David Grayson wrote: > Hello, Mario. > > Currently, I'm working on making a set of recipes using the Nix > functional package manager that will let me compile native software > for Windows. Nix has its own language for specifying how to build > software and *compositions* of software. The recipes are typically > stored in a Git repository. The nixpkgs repository, for instance, has > thousands of recipes for software in it and there are hundreds of > users actively working on it: > > https://github.com/nixos/nixpkgs > > For people desiring stability, with Nix, you don't have to rely on a > central package repository: when you build a piece of software, you > get exactly what was specified in the local Nix recipes on your > computer. These recipes specify exactly how to build all the > dependencies of your software, including the compiler toolchain. So, > you will almost always be able to rebuild all of the software you > depend on, as long as you keep track of those recipes (e.g. in Git). > > Of course, it would be very slow to rebuild compiler toolchains every > time you wanted to build a package. Nix speeds things up for you in > several ways. First of all, builds are identified with long hash > codes that take into account everything about the build and its > dependencies. The hash codes are used as a key for a local cache on > your computer called the Nix store (/nix/store/) so you don't have to > build software that you already have. There is also a centralized > binary cache that is built from the nixpkgs repository so you don't > have to compile a lot of things yourself and can just download them > instead, as long as the download was built in exactly the same way as > the recipe on your computer. > > Because of the hash code, Nix can tell if you change any of the > recipes for the software you depend on. The next time you build your > software, Nix will know to rebuild the changed package and everything > that depends on it. Compared to pacman, this causes lots of unneeded > rebuilding, but it gives us a lot more confidence that the final > software will work correctly, instead of failing because some DLL name > changed or a library's ABI changed. > > Since Nix does not run in Windows, I would be cross-compiling from > Linux to Windows. Nix could probably work inside the Windows > Subsystem for Linux, which would allow us to easily run test suites > for the software we compile, but I have not looked in to that. > > The nixpkgs repository itself has support for cross-compiling to > Windows but I get the impression that it's not very good, because the > main toolchain does not even have winpthreads, and thus things like > std::future do not work. Ericson2314 on GitHub has made a bunch of > pull requests to clean up the architecture for cross-compiling > recently. But the way that they build GCC and other things in nixpkgs > is so complicated that I think I'd like to try writing my own > expressions. I have succeeded in making a mingw-w64 cross-compiler > and compiling some console apps for Windows, like the pdcurses demos. > My recipes are here: > > https://github.com/DavidEGrayson/nixcrpkgs > > Feel free to email me privately if you want to try out nixcrpkgs and > want some help getting set up. > > --David Grayson > > On Wed, Sep 21, 2016 at 3:04 AM, Mario Emmenlauer <ma...@emmenlauer.de> wrote: >> >> Hi, >> >> anything I can do to get started? Any pointers how your current >> continuous integration system works? Somebody mentioned that the >> CI on github is broken a while ago, is that still true? >> >> Cheers, Mario >> >> >> On 30.08.2016 13:27, Mario Emmenlauer wrote: >>> On 30.08.2016 13:06, Alexpux wrote: >>>>> 30 авг. 2016 г., в 11:16, Mario Emmenlauer <ma...@emmenlauer.de> >>>>> написал(а): >>>>> >>>>> I was wondering if people would like to have a "stable" repository? >>>>> >>>>> I was thinking that when a plateau is reached (majority of packages >>>>> compiles fine), the current snapshot could be copied to stable. In my >>>>> eyes, the essential requirement would be that all base packages compile >>>>> fine. Everything else could be handled a bit ad-hoc. >>>> >>>> >>>> Hi, Mario! >>>> If someone want to support «stable» repo - we can talk about it. >>>> There are some problem from my POV to support this. >>>> 1. Who will decide that package is stable? >>>> 2. You can’t just copy builded package from current repository and place >>>> it «stable». You must rebuild it agains «stable» set of packages. >>>> 3. Who will maintain all of this work? I will not do any work with this >>>> sorry because my time is limited and now I have many other priorities than >>>> MSYS2. >>> >>> I can maybe do parts of this work. My company has a bit of free >>> resources. But you must help me understand what am I up against? >>> What is your current build system? Is it Windows-based? How many >>> resources does it need? What is the size of the package repository? >>> How much traffic do you currently have? >>> >>> I have one idle build server (4 Core Xeon with 16GB Ram) that can >>> host a build system. I guess "stable" does not change hourly, so >>> maybe one machine is sufficient? My company webserver has 0.5TB of >>> free disk, and 100MBit internet link in a good IT centre in Europe. >>> I could host some packages, and maybe even your dokuwiki(?) -- BioDataAnalysis GmbH, Mario Emmenlauer Tel. Buero: +49-89-74677203 Balanstr. 43 mailto: memmenlauer * biodataanalysis.de D-81669 München http://www.biodataanalysis.de/ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Msys2-users mailing list Msys2-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/msys2-users