New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
postgis: allow on Darwin #65460
postgis: allow on Darwin #65460
Conversation
To get PostGIS going on Darwin: 1. Add libiconv, as is often required. 2. Expand platforms to `platforms.all`. 3. Deal with PostGIS' quirky build system. PostGIS' configure.ac has the following gem: AC_MSG_RESULT([------------------------------------------------------------------------]) AC_MSG_RESULT([ WARNING: You have set the --prefix to '$prefix'. But we mostly ]) AC_MSG_RESULT([ ignore the --prefix. For your info, using the values determined from ]) AC_MSG_RESULT([ $PG_CONFIG we will be installing: ]) AC_MSG_RESULT([ * postgis shared library in $PGSQL_LIBDIR ]) AC_MSG_RESULT([ * postgis SQL files in $PGSQL_SHAREDIR/contrib/postgis-$POSTGIS_MAJOR_VERSION.$POSTGIS_MINOR_VERSION ]) AC_MSG_RESULT([ * postgis executables in $PGSQL_BINDIR ]) AC_MSG_RESULT([------------------------------------------------------------------------]) This is suggestive of some assumptions in the build system, which are revealed when building in Nix on Darwin: the build fails because the postgres binary cannot be found in the install prefix specified for postgis; vis. cc x -bundle_loader $POSTGIS_PREFIX/bin/postgres This bundle_loader parameter is only available on Darwin, and this problem doesn't appear to affect Linux systems. The solution presented here is to symlink the postgres binary where PostGIS expects it to be, and then remove it after the build completes.
@GrahamcOfBorg build postgis |
|
Borg's build did succeed on Darwin. I actually don't remember what's status of the Darwin sandbox. I assume further improvements can be left for later (in any case I'd leave some time for others to react). |
''; | ||
|
||
# create aliases for all commands adding version information | ||
postInstall = '' | ||
rm $out/bin/postgres | ||
for prog in $out/bin/*; do # */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Although this is not a change in this PR, do you know why there's a */
comment here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That clearly seems to unbreak syntax highlighting in editors that get confused by /*
on that same line. One can see similar ones all over nixpkgs.
b71f8e5
to
c1da476
Compare
@GrahamcOfBorg build postgis |
Resolves #65452.
To get PostGIS going on Darwin:
platforms.all
.PostGIS' configure.ac has the following gem:
This is suggestive of some assumptions in the build system which are
revealed when building in Nix on Darwin: the build fails because the
postgres binary cannot be found in the install prefix specified for
postgis; viz.
The bundle_loader parameter is only available on Darwin
ld
, and thisproblem doesn't appear to affect Linux systems.
The solution presented here is to symlink the postgres binary where
PostGIS expects it to be, and then remove it after the build completes.
Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
)nix path-info -S
before and after)