Skip to content

[HWORKS-2991][APPEND][HWORKS-3040] Correct conda-era docs claims, and document installing a compiler - #639

Merged
robzor92 merged 2 commits into
logicalclocks:mainfrom
robzor92:HWORKS-3040-document-compiler-removal
Aug 26, 2026
Merged

[HWORKS-2991][APPEND][HWORKS-3040] Correct conda-era docs claims, and document installing a compiler#639
robzor92 merged 2 commits into
logicalclocks:mainfrom
robzor92:HWORKS-3040-document-compiler-removal

Conversation

@robzor92

@robzor92 robzor92 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Two commits.

[HWORKS-2991][APPEND] Two docs claims left over from the conda era

The uv migration is already documented — the retired conda / .egg / environment.yml installs in python_install.md, and export-is-not-an-import in python_env_export.md. Two claims elsewhere were missed:

  • concepts/dev/inside.md still listed conda channels as a source you can install dependencies from. The backend refuses that install, and refuses a conda-channel search too.
  • environment_history.md said the per-version YAML file is kept "so that if you want to restore an older environment you can use it". Importing an environment.yml is no longer supported and the history API is read-only (getAll / getEnvironmentDelta, no restore endpoint), so the file is a record and nothing more.

HWORKS-3040 Installing a compiler

Documentation for docker-images#926, which removes build-essential and the -dev packages that pull in the kernel headers from the base images. Asked for on Slack as the condition for merging it: document the compiler issue, with a custom commands example for installing one.

One new section: which environments have a compiler and why the others do not, what the failure looks like, and a script that installs one, builds the library and purges it again so the environment does not end up carrying the kernel headers either. Plus when not to purge — more installs to follow, a -dev package that owns a shared library the wheel loads, or the PyTorch and Ray environments, which use their compiler at runtime.

Also BUILD_PATHBUILD_DIR in the artifacts bullet: the generated Dockerfile sets BUILD_DIR, and nothing sets BUILD_PATH.

Verified end to end on a cluster

The python-feature-pipeline base image in a cluster's registry was replaced with one built from docker-images#926 (gcc, cc, build-essential and linux-libc-dev all absent, confirmed from an imagePullPolicy: Always pod), and a project environment was cloned from it.

  1. Installing thriftpy2==0.5.2 from the library API fails. The environment build log ends with error: [Errno 2] No such file or directory: 'cc', under uv's × Failed to build framing — the environment build installs with uv, so that is the error quoted here rather than pip's.
  2. The script in the docs, uploaded to HopsFS and run as a custom command, succeeds. The environment goes to version .1 with thriftpy2 0.5.2, cython 3.3.0 and ply 3.11 installed.
  3. The resulting environment image is clean. No gcc, no cc, no build-essential, linux-libc-dev uninstalled, while thriftpy2 imports and its compiled cpython-312-x86_64-linux-gnu.so extensions are present and load. hopsworks, pandas and psycopg2 still import, and /etc/sudoers.d holds only README, so the sudo grant really is build-scoped as documented.

The script exactly as written here was also run verbatim as yarnapp, with the same /etc/sudoers.d/yarnapp grant the build creates, and exits 0 with the same end state.

markdownlint-cli2 is clean. Backports to branch-5.0 / branch-4.8 are owed whenever #926 is backported, and not before.

🤖 Generated with Claude Code

@robzor92
robzor92 force-pushed the HWORKS-3040-document-compiler-removal branch from 6385ad1 to 073a67b Compare August 26, 2026 08:30
@robzor92 robzor92 changed the title [HWORKS-3040] Document that the environments no longer ship a compiler [HWORKS-3040] Document installing a compiler with custom commands Aug 26, 2026
@robzor92
robzor92 force-pushed the HWORKS-3040-document-compiler-removal branch 3 times, most recently from 1c9f354 to ac00560 Compare August 26, 2026 10:09
@robzor92 robzor92 changed the title [HWORKS-3040] Document installing a compiler with custom commands [HWORKS-2991][HWORKS-3040] Document uv, and installing a compiler with custom commands Aug 26, 2026
@robzor92
robzor92 force-pushed the HWORKS-3040-document-compiler-removal branch 4 times, most recently from ca180a6 to 709cfb7 Compare August 26, 2026 12:11
@robzor92 robzor92 changed the title [HWORKS-2991][HWORKS-3040] Document uv, and installing a compiler with custom commands [HWORKS-2991][APPEND][HWORKS-3040] Document uv, and installing a compiler with custom commands Aug 26, 2026
@robzor92
robzor92 force-pushed the HWORKS-3040-document-compiler-removal branch from 709cfb7 to c19379f Compare August 26, 2026 12:16
robzor92 and others added 2 commits August 26, 2026 14:19
…a era

HWORKS-2991 replaced Miniconda with a uv virtualenv in the base images, and
the backend followed: conda-channel, .egg and environment.yml installs are
refused, a conda-channel search is refused too, and package listings and the
dependency check now read uv's output. The install guide already carries the
warning about the retired sources; two claims elsewhere still described the
conda world.

- The concepts page listed conda channels as a source you can install from.
- The environment-history guide said the per-version YAML file is there so
  you can restore an older environment. Importing an environment.yml is no
  longer supported and the history API is read-only (getAll and
  getEnvironmentDelta, with no restore endpoint), so the file is a record and
  nothing more.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docker-images#926 removes build-essential and the -dev packages that pull in
the Linux kernel headers from the base images, so a library published only as
a source distribution can no longer be built during a library install.

Documents that, and the workaround: install the compiler, build the library
and purge the compiler again in one custom-command script, so the environment
does not end up carrying the headers either. The example installs with uv, and
the quoted failure is uv's, since that is what the environment build runs.

Verified end to end on a cluster whose python-feature-pipeline base image was
replaced with one built from #926. Installing thriftpy2==0.5.2 from the
library API fails with "No such file or directory: 'cc'"; running this script
as a custom command then succeeds, and the resulting environment image has
thriftpy2 with its compiled extensions, no gcc, no build-essential and no
linux-libc-dev.

Also corrects the artifact path variable, which is BUILD_DIR and not
BUILD_PATH; nothing sets BUILD_PATH.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@robzor92
robzor92 force-pushed the HWORKS-3040-document-compiler-removal branch from c19379f to bd2ca02 Compare August 26, 2026 12:19
@robzor92 robzor92 changed the title [HWORKS-2991][APPEND][HWORKS-3040] Document uv, and installing a compiler with custom commands [HWORKS-2991][APPEND][HWORKS-3040] Correct conda-era docs claims, and document installing a compiler Aug 26, 2026
@robzor92
robzor92 merged commit fc18d04 into logicalclocks:main Aug 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants