Repository navigation
Add file-io 0.2.0 to git-annex build environment - #295
Conversation
Our debianstandalone builds report no OsPath in "build flags", e.g.
10.20260901+git60-g7c2e8019c9-1~ndall+1:
build flags: Assistant Webapp Inotify DBus DesktopNotify TorrentParser
MagicMime Benchmark Feeds Testsuite S3 WebDAV Servant
The OsPath flag is Default: True but not Manual, so `./Setup configure`
quietly turns it off when a dependency is missing. In this image
(GHC 9.10.3) filepath 1.5.4.0, os-string 2.0.7 and directory 1.3.8.5
already satisfy its bounds; only file-io is absent. Since 10.20260213
git-annex requires file-io >= 0.2.0, while Debian ships only
libghc-file-io-dev 0.1.5, so `apt-get build-dep` cannot provide it.
Build file-io 0.2.0 from Hackage (checksum-pinned) into the global GHC
package db. It only depends on GHC boot packages. Verified in the
current image: `./Setup configure -v2` of git-annex 10.20260901 goes
from "ospath=False" to "Dependency file-io >=0.2.0: using file-io-0.2.0".
Without OsPath, git-annex keeps known issues fixed only in OsPath
builds, e.g. https://git-annex.branchable.com/bugs/35_failed_tests_on_beegfs/
and fd leaks to child processes (per upstream CHANGELOG).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv
|
The No fix exists for that yet. Hardening it (e.g. The new step itself was verified locally, layered on the current
Generated by Claude Code |
The buildenv image build for #295 hung for the full 6h job limit right after nd_freeze printed "INFO: Refreshing apt cache", with no further output. After that first `apt-get update`, nd_freeze scrapes snapshot.debian.org via get_www_content(): a raw-socket HTTP/1.1 GET without "Connection: close" and with no timeout, reading until EOF, and it logs nothing there unless --debug. A stalled connection there hangs forever silently. Write deb822 sources for snapshot.debian.org ourselves instead, as of DEBIAN_SNAPSHOT (an ARG, now 20260924T000000Z). snapshot.debian.org serves the latest snapshot at or before the given timestamp. This also drops what only existed to work around nd_freeze: the neurodebian-freeze install from deb.debian.org, disabling debian.sources, and the sed adding deb-src lines (the deb822 stanzas carry "Types: deb deb-src"). Add Acquire::http::Timeout so a stalled transfer fails and gets retried (Acquire::Retries 10) instead of hanging. build-linux-buildenv.yaml derived the image tag's date by grepping for nd_freeze; it now reads DEBIAN_SNAPSHOT (YYYYMMDD part), so tags keep the forky-YYYYMMDD-<commit> shape. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv
|
The re-run hung at the same point: Most likely cause. After its first Change:
Note: the snapshot date moves from 2026-04-25 to 2026-09-24, so the GHC / Tested locally only up to apt: the ARG expands, apt accepts the sources, and Generated by Claude Code |
Summary
This change adds the
file-ioHaskell package (version 0.2.0) to the git-annex build environment Docker image to enable the OsPath build flag in git-annex.Key Changes
file-io0.2.0 from Hackage into the global GHC package databaseImplementation Details
The
file-iopackage is required because:file-io >= 0.2.0since version 10.20260213libghc-file-io-devpackage only provides version 0.1.5, which is insufficientThe installation:
libghc-file-io-dev >= 0.2.0https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv