[Nix-dev] mxe on NixOS

James Cook james.cook at utoronto.ca
Sun Aug 16 09:55:45 CEST 2015


To perhaps simplify the problem, does anyone know how to build glib on
a NixOS system the old-fashioned way, without using nix? If I just run
./autogen.sh in a fresh glib checkout, I get a similar error to the
one Andrew is getting.

A parallel question: Andrew, are you familiar enough with nixpkgs to
try writing an nix expression that unpacks mxe and tells it to build
glib? That might be another approach, though I think it would be nice
if users had the option of not doing it that way.

$ ./autogen.sh
You don't have gtk-doc installed, and thus won't be able to generate
the documentation.
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4macros ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running:
/nix/store/prmn46fajbj2ymcw43aqrdfbii1bj8bz-autoconf-2.69/bin/autoconf
--force
configure.ac:88: error: possibly undefined macro: AC_DEFINE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /nix/store/prmn46fajbj2ymcw43aqrdfbii1bj8bz-autoconf-2.69/bin/autoconf
failed with exit status: 1

On 27 July 2015 at 09:19, James Cook <james.cook at utoronto.ca> wrote:
>>> You are trying to build something outside of a nix build environment.
>>> Instead of calling make ecc. like you do on every other distro, in Nix
>>> things are very different. You should write a .nix file describing how the
>>> package should build and build it. It will be easier.
>>>
>>> Also 99% of the times errors like that are not an upstream issue but your
>>> own issue on nixos.
>
> I find I'm usually able to build things on NixOS just by manually
> running configure, make &c. as long as I install all the dependencies
> with nix-env. Sometimes I have to pass some flag to a package's
> configure script to tell it where to find C headers or something like
> that.
>
> Of course under many circumstances it's nicer to have nix build things for you.
>
>> Thanks for the reply.
>>
>> I think I did not succeed in explaining what MXE is and how it works. It
>> would not make sense to create a nix expression for mxe; one does not build
>> mxe like a normal application. Instead, one uses mxe to build for Windows.
>> So compiling software with mxe is more like running a normal application at
>> runtime rather than building a package.
>
> Luca's suggestion may still be workable: if I understand right, you
> could write a nix expression for each Windows library you want. You
> would probably want to set the source to be mxe's source, and override
> the build stage so it runs "make glib" or whatever. Personally, I'm
> guessing you'd run into the same problem, but it could be worth a try.
>
> (Of course, you might not want to use mxe that way, but it could still
> be useful for figuring out what the problem is.)
>
> James


More information about the nix-dev mailing list