Skip to content
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

Fix bugzilla issue 24389 - Make Phobos compile on FreeBSD 14 again. #8918

Merged
merged 1 commit into from
Feb 23, 2024

Conversation

jmdavis
Copy link
Member

@jmdavis jmdavis commented Feb 23, 2024

zlib can't be built with importC on FreeBSD 14, because qsort_r in stdlib.h uses some asm instructions, which dmd can't handle.

dlang/dmd#16184 fixed it so that we got a proper error message about it (and theoretically making it so that zlib could be compiled on FreeBSD 14 with gdc or ldc, though I haven't tried that), but it didn't fix it so that it could build on dmd, since that would require that dmd be able to handle GNU assembly code, which isn't a planned feature AFAIK.

#8914 fixed it so that it's possible to build Phobos without using importC by providing a make variable, but it didn't do anything for FreeBSD specifically.

This commit changes it so that FreeBSD sets that make variable in the makefile so that you don't have to do it manually to get FreeBSD 14 to build. It's not necessary for FreeBSD 13.2 (which is what the auto testers currently use), but it will be necessary for FreeBSD 14 (14.0 currently being the latest release of FreeBSD).

I can confirm from testing that explicitly setting USE_IMPORTC=1 on the command line will overrides this change, so that variable can still be set one way or the other on FreeBSD. It's just now 0 by default so that it will build by default on FreeBSD 14.

@dlang-bot
Copy link
Contributor

Thanks for your pull request, @jmdavis!

Bugzilla references

Auto-close Bugzilla Severity Description
24389 normal importC: Building zlib in Phobos with importC fails on FreeBSD 14

Testing this PR locally

If you don't have a local development environment setup, you can use Digger to test this PR:

dub run digger -- build "master + phobos#8918"

zlib can't be built with importC on FreeBSD 14, because qsort_r in
stdlib.h uses some asm instructions, which dmd can't handle.

dlang/dmd#16184 fixed it so that we got a
proper error message about it (and theoretically making it so that zlib
could be compiled on FreeBSD 14 with gdc or ldc, though I haven't tried
that), but it didn't fix it so that it could build on dmd, since that
would require that dmd be able to handle GNU assembly code, which isn't
a planned feature AFAIK.

dlang#8914 fixed it so that it's possible
to build Phobos without using importC by providing a make variable, but
it didn't do anything for FreeBSD specifically.

This commit changes it so that FreeBSD sets that make variable in the
makefile so that you don't have to do it manually to get FreeBSD 14 to
build. It's not necessary for FreeBSD 13.2 (which is what the auto
testers currently use), but it will be necessary for FreeBSD 14 (14.0
currently being the latest release of FreeBSD).

I can confirm from testing that explicitly setting USE_IMPORTC=1 on the
command line will overrides this change, so that variable can still be
set one way or the other on FreeBSD. It's just now 0 by default so that
it will build by default on FreeBSD 14.
@thewilsonator
Copy link
Contributor

Just double checking you want this to go into master and not stable, Or is this a master only regression?

@thewilsonator
Copy link
Contributor

Oh I see #8914 was to master

@thewilsonator thewilsonator merged commit 89403c3 into dlang:master Feb 23, 2024
9 of 10 checks passed
@jmdavis
Copy link
Member Author

jmdavis commented Feb 24, 2024

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants