Comments (13)
llvm13 is used via brew for 8.10.7
from bytestring.
Ugh. It doesn't make sense to fail because of -Wundef
inside of compiler-supplied headers. But there's no obvious convenient way to say "just -Werror=undef
for the code in this package."
Thanks for reporting. Does adding --ghc-options="-optP -Wno-error=undef -optc -Wno-error=undef"
work around the problem?
from bytestring.
I think the immediate action is to make a revision for bytestring-0.12.1.0
prohibiting any builds with GHC < 9. While blunt, I don't believe it to hurt anyone and should resolve @hasufell's immediate issue (which is, I imagine, Cabal keen to use the latest and greatest releases).
from bytestring.
I was thinking rather of making a revision that just removes the -Werror=undef
bits. Or is that not allowed? I'm not too clear on the extent of what Hackage revisions can and can't do.
from bytestring.
No, you cannot change build flags, only dependency versions: https://hackage.haskell.org/package/bytestring-0.12.1.0/bytestring.cabal/edit
from bytestring.
I see. It also looks possible to use our existing if (arch(aarch64))
block to only add the old-ghc-blocking base >= 4.15
constraint on that platform, which is a fair amount less blunt if it works. (But without having traced the bad included #if
on a failing platform it's not a priori obvious exactly what the right condition is.)
from bytestring.
IIRC my experiments at https://github.com/haskell/bytestring/actions/runs/7791721116/job/21289850270, nothing before GHC 9.4 worked reliably on macOS aarch64.
from bytestring.
It looks like this gets worked around on GHC's end since !10750 which appears starting with 9.4.6, 9.6.3, and 9.8.1.
from bytestring.
Conveniently, both of the minor releases 9.4.6 and 9.6.3 bumped the base
version. I've pushed a revision that checks for the corresponding base
versions on aarch64. (It occurs to me now that a user could probably still get into trouble with -fpure-haskell
on ghc-9.6.2
. I'm inclined to not worry about that unless someone complains.)
from bytestring.
The defaults should be the most portable imo, not the most performant.
from bytestring.
I'm not sure what you're getting at.
from bytestring.
I misread the flags, I was under the impression this is related to the standard C routines.
Then I'd suggest to make a new point release that removes Werror and manually enables it for CI.
from bytestring.
I agree about removing -Werror=undef
from the package configuration in the future to reduce the likelihood of this sort of problem re-occurring.
If there was an easy way to make -Werror=undef
apply to only our CPP (and not stupid upstream CPP like this) I'd really like to keep it on, though, because if it fires in our code that is nearly 100% likely to be a bug. (And the flag has saved me a lot of debug time while refactoring already...)
from bytestring.
Related Issues (20)
- bytestring-0.11.5.1 (ghc-9.4.6) fails to build on Fedora HOT 4
- isValidUtf8 is broken HOT 4
- Compatibility with GHC's JavaScript backend HOT 1
- Overhaul Data.ByteString.Builder.RealFloat HOT 5
- Float and Double standard with precision 0 outputs incorrectly HOT 2
- Positive and Negative Zero Print Incorrect Precision
- Guidelines for using with WriterT HOT 2
- RealFloat Zero Padded Exponent HOT 7
- Faster Printing for Known Normal and Subnormal IEEE754 Floating Point Values
- Broken links in haddocks of `ShortByteString` HOT 1
- Audit `foreign import ccall` types
- Drop support for GHCs older than 8.4 HOT 1
- Add a splice of ShortByteString builder
- Create strict bytestrings from FixedPrim with zero copy HOT 6
- Lazy `zip` is stricter than expected
- unsafeUseAsCString(Len) may return a NULL pointer. HOT 9
- Document that `Data.ByteString.Lazy.appendFile` is not threadsafe.
- Eq and Ord for Builder
- Offer conversion with `Natural`. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bytestring.