[Nix-dev] mxe on NixOS

James Cook james.cook at utoronto.ca
Sun Aug 16 09:58:59 CEST 2015


(Note there's a bit of conversation at the upstream issue Andrew
linked to; one person claims the autotools are looking for
/usr/share/aclocal/pkg.m4, although for Andrew aclocal --print-ac-dir
shows a path under /nix/store/...)

On 16 August 2015 at 00:55, James Cook <james.cook at utoronto.ca> wrote:
> 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