Skip to content

[basil] v1.8.2, new package#14172

Merged
giordano merged 2 commits into
JuliaPackaging:masterfrom
wenrongcao:basil-jll
Jul 13, 2026
Merged

[basil] v1.8.2, new package#14172
giordano merged 2 commits into
JuliaPackaging:masterfrom
wenrongcao:basil-jll

Conversation

@wenrongcao

@wenrongcao wenrongcao commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

basil is a 2-D viscous-flow finite-element code (plane-strain / thin-sheet / axisymmetric) from the Houseman group. GPL-3.0.

Ships 9 executables: the solver basil, the headless PostScript post-processor sybilps, and seven xpoly mesh/inversion helpers.

Notes for reviewers

One bundled patch. Upstream's 1.7.7c -> 1.8.2g merge dropped the NOR() node-renumbering indirection, which breaks every regular-mesh case during assembly. The patch restores it, and is a no-op when NOR(k) == k, so the triangle-mesh path is untouched. Not yet upstream.

sybil (the interactive GUI) is excluded — it requires Motif, which is not packaged in Yggdrasil. sybilps covers the non-interactive workflow; its X11 code is #ifdef XSYB-guarded and the built binary links no X libraries.

Windows is deferred. basil writes gfortran unformatted sequential records through relative cwd paths; that has never been validated on Windows, and a solver that silently mis-writes solution files is worse than an absent one.

basil is a 2-D viscous-flow finite-element code (plane-strain / thin-sheet /
axisymmetric) from the Houseman group, GPL-3.0.

Ships 9 executables: the solver `basil`, the headless PostScript
post-processor `sybilps`, and the seven `xpoly` mesh/inversion helper tools.

Notes for reviewers:
- The source is pinned to a personal fork rather than greg-houseman/basil
  because the fork carries a fix for a regular-mesh (NOR) regression that
  upstream does not yet have.
- The interactive `sybil` GUI is excluded: it needs Motif, which is not
  packaged in Yggdrasil. `sybilps` covers the non-interactive workflow and
  links no X11 libraries.
- Windows is deferred. basil writes gfortran unformatted sequential records
  through relative cwd paths; that path has never been validated on Windows.
- i686-linux-musl is excluded: triangle.c only clamps the x87 control word
  under -DLINUX (glibc-only fpu_control.h) or -DCPU86 (MSVC), so its
  exact-arithmetic mesh predicates would run with 80-bit x87 intermediates
  there. i686-linux-gnu gets -DLINUX and is unaffected.
- The upstream build system is imake; its generated Makefile is host-specific,
  so we drive the hand-written MakeSimple files instead.
@wenrongcao

wenrongcao commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto master; dropped i686-linux-musl, leaving 15 targets. That target can't clamp the x87 FPU, so the code gives wrong results there. i686-linux-gnu is unaffected.

Separately, one job per build hangs in the auditor, a different target each time (i686-linux-musl in build 30959, aarch64-linux-gnu in 30984, different agents). basil itself finishes normally (~4 s, exit code 0), then stalls after Beginning audit of ... until SIGTERM (~4 h). It never reaches check_libgfortran_version, so the hang appears to be in check_isa (${target}-objdump -d under AUDITOR_SANDBOX_LOCK). Since the other 14 jobs finish in 101–247 s on the same machine, this doesn't look like load.

@giordano — could someone with pipeline access retry just the aarch64-linux-gnu job in build 30984?

Comment thread B/basil/build_tarballs.jl
# basil links libgfortran, and polyutils.cc leaves std::string values in the
# binary. Neither expansion adds build jobs (both emit only the new ABIs).
platforms = expand_gfortran_versions(platforms)
platforms = expand_cxxstring_abis(platforms)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since you are not providing a library with an external ABI, I don't think you need to expand the C++ string ABIs (this is used whenever you are passing C++ std::string objects across the boundary).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@wenrongcao

wenrongcao commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for checking. Marking ready for review.

@wenrongcao wenrongcao marked this pull request as ready for review July 10, 2026 17:20
Comment thread B/basil/build_tarballs.jl Outdated
Address review: pin greg-houseman/basil and carry the regular-mesh (NOR)
regression fix as a bundled patch, so the recipe no longer depends on a
personal fork staying alive.

The upstream commit is the same tree the fork was based on; the patch is the
only source change the fork contributed to the build.
@wenrongcao

Copy link
Copy Markdown
Contributor Author

@lgoettgens Done — now builds from greg-houseman/basil at a06c9ff, with the NOR fix as a bundled patch.

That upstream commit is the exact tree the fork was based on, so the patch is the only source delta the fork ever contributed to the build. Verified locally: patched upstream produces all 9 binaries and a solution bit-identical to the fork's reference on the regular-mesh case (only the embedded run timestamp differs).

@lgoettgens lgoettgens dismissed their stale review July 13, 2026 17:37

Point was addressed

@giordano giordano merged commit a879fa1 into JuliaPackaging:master Jul 13, 2026
19 checks passed
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.

4 participants