Skip to content

[libgiac_julia] New recipe v0.4.0#13230

Open
s-celles wants to merge 15 commits intoJuliaPackaging:masterfrom
s-celles:feat_libgiac_julia_jll_v030
Open

[libgiac_julia] New recipe v0.4.0#13230
s-celles wants to merge 15 commits intoJuliaPackaging:masterfrom
s-celles:feat_libgiac_julia_jll_v030

Conversation

@s-celles
Copy link
Contributor

@s-celles s-celles commented Mar 2, 2026

  • New BinaryBuilder recipe for libgiac_julia v0.3.0
  • Julia/CxxWrap wrapper for the GIAC computer algebra system
  • Provides libgiac_wrapper shared library with Gen type operations, function dispatch, type introspection, and value extraction
  • Depends on GIAC_jll (merged in feat: add GIAC v2.0.0 build recipe #13101), libcxxwrap_julia_jll, GMP_jll, MPFR_jll

@s-celles s-celles marked this pull request as draft March 2, 2026 14:06
s-celles added 3 commits March 2, 2026 17:06
- Handle Windows import libraries (.dll.a) in ${prefix}/lib/
- Build only giac_wrapper target (skip test linking on Windows)
- Restrict to Linux and Windows (macOS/FreeBSD ABI mismatch)
- Update libcxxwrap_julia_jll compat to ~0.14.9 for Julia 1.13/1.14
On macOS/FreeBSD, GIAC_jll (g++/libstdc++) and libcxxwrap_julia_jll
(clang++/libc++) have incompatible std::string ABIs. This adds a
dual-compiler build: giac_impl.cpp is compiled with g++, giac_wrapper.cpp
with clang++, bridged by extern "C" functions.

All platforms now supported (macOS/FreeBSD no longer filtered out).
@s-celles s-celles changed the title [libgiac_julia] New recipe v0.3.0 [libgiac_julia] New recipe v0.4.0 Mar 2, 2026
On aarch64-apple-darwin, GCC's static libstdc++.a has iOS platform
tags causing ld64.lld to reject it. Building libgiac_cabi as a shared
library lets g++ resolve its own runtime libraries internally, so
clang++ doesn't need to link libstdc++ or libgcc at all.
@s-celles s-celles marked this pull request as ready for review March 2, 2026 20:48
@s-celles
Copy link
Contributor Author

s-celles commented Mar 9, 2026

https://buildkite.com/julialang/yggdrasil/builds/27855/steps/canvas?sid=019cd19b-6bd9-42cd-91e2-68e4cce9f795&tab=output

seems hanging. Any idea @giordano what is going only?

Maybe you can retrigger just that platform?

Comment on lines +101 to +102
Dependency("GMP_jll"),
Dependency("MPFR_jll"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You must specify compat bounds for GMP and MPFR, see other packages

Copy link
Contributor Author

@s-celles s-celles Mar 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @giordano. I don't publish much Yggdrasil recipes. I changed it to (try to) align both with other packages and also to GIAC_jll

BuildDependency(PackageSpec(;name="libjulia_jll", version="1.11.0")),
Dependency("GMP_jll"; compat="~6.2"),
Dependency("MPFR_jll"; compat="~4.2"),
Dependency("libcxxwrap_julia_jll"; compat = "~0.14.9"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tying to minor versions is too restrictive and won't actually work in newer Julia versions

Suggested change
Dependency("libcxxwrap_julia_jll"; compat = "~0.14.9"),
Dependency("GMP_jll"; compat="6.2.1"),
Dependency("MPFR_jll"; compat="4.1.1"),

Dependency("GMP_jll"; compat="~6.2"),
Dependency("MPFR_jll"; compat="~4.2"),
Dependency("libcxxwrap_julia_jll"; compat = "~0.14.9"),
Dependency("GIAC_jll"; compat = "~2.0.0"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why tilde? Does upstream break ABI/API in every minor release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants