Since commit fb777be7d2, linking programs
in /tmp will no longer work, since with this commit (hardcoded) /tmp
will no longer be treated a valid temporary directory by the purity
checking logic.
Essentially what that logic does is checking whether the link target is
either relative, in some temporary directory or in the Nix store and if
that's not the case, an error is thrown like in this case:
gcc -c /tmp/build.24.tmp.c -o /tmp/build.24.tmp.c.o
gcc /tmp/build.24.tmp.c.o -o /tmp/build.24.tmp.out
impure path `/tmp/build.24.tmp.out' used in link
collect2: error: ld returned 1 exit status
Note here, that $TMP and $TMPDIR point to /build while the output here
still refers to /tmp. This is because the custom build system of uqm
simply hardcodes /tmp and doesn't honor any of these variables.
To fix this, all we need to do is the latter and we're now using $TMPDIR
instead of /tmp for these compile-tests during configure.
While the pull request[1] introducing said commit has a few comments
regarding other issues and it could still be either reverted or changed,
using $TMPDIR in the uqm build script is entirely backwards-compatible
and shouldn't hurt in any case.
[1]: https://github.com/NixOS/nixpkgs/pull/93560
Signed-off-by: aszlig <aszlig@nix.build>
I've bisected the introduction of the build failure to be the glibc 2.26
upgrade with commit 9bb67d5c1e.
At first I was somewhat stumped why an glibc update could cause
undeclared identifiers, but after looking at the changes of glibc and
the source code of The Ur-Quan Masters the problem quickly turned out to
be this very change:
https://sourceware.org/git/?p=glibc.git;a=commit;h=7b037c095e31c2396d0a9b0e6356bc566ee4812f
So string.h now in turn includes strings.h, which in theory wouldn't be
a problem.
However, both strings.h and the strings.h in the uqm source code use
constant _STRINGS_H, which causes the glibc strings.h to be included but
the one from uqm basically includes an empty file.
Signed-off-by: aszlig <aszlig@nix.build>
The only functional change here is that I've dropped unzip, because that
dependency doesn't seem to be necessary at all. Despite the broken build
state I've tried building and running The Ur-Quan Masters with an older
nixpkgs revision and it works fine.
Other than that there are no references in the source code for unzip
except in the binary installer and some of the INSTALL files.
The reason why I'm removing the "with pkgs.lib;" is that it makes it
easier to quickly check for errors with "nix-instantiate --parse".
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @jcumming
* lib: introduce imap0, imap1
For historical reasons, imap starts counting at 1 and it's not
consistent with the rest of the lib.
So for now we split imap into imap0 that starts counting at zero and
imap1 that starts counting at 1. And imap is marked as deprecated.
See c71e2d4235 (commitcomment-21873221)
* replace uses of lib.imap
* lib: move imap to deprecated.nix
It was dropped in 324719a5a6.
The UQM package itself doesn't require Haskell, but in order to extract
contents from the 3do version of the game, we need to have a small
helper utility which I wrote in Haskell a while ago. In order to switch
it to Haskell NG, only very minor modifications were necessary, which
are now done with this commit instead of dropping the whole game.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Copying these over to the output path of the main derivation will just
unnecessarily blow up the size of it with files we already have in the
store anyway.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
The remix packs are a collection of newly remixed versions of the
old music from the PC/3DO versions. By using useRemixPacks these are
fetched as well and added to the game.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
As we now have a tagged first release, it really doesn't make sense to
introduce additional dependencies by using fetchgit.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This is optional because you have to have an image of a Star Control II 3DO CD
image. I decided to hack together a small OperaFS (that's the proprietary
filesystem used with 3DO CD-ROMs) file extractor, which should possibly make
it as painless as possible to include those videos.
It may be a good idea to split off the haskell package into another attribute
set (possibly haskellPackages?), but I really don't think there is a need for
that, because it's really just UQM and 3DO specific.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>