Hacker News new | ask | show | jobs
by jiveturkey 966 days ago
> dependencies vendored

did you mean versioned? if you really meant vendored, could you elaborate?

I don't know about brew, but MacPorts wasn't ready when Sonoma came out. So that's a bit of a bummer for early adopter types, or folks that need to develop their own app against beta macOS and depend on ports for their setup.

3 comments

Vendoring means to bundle dependencies into a project directly (often this means copying source code and using/maintaining the copy) rather than from some other source (other packages, OS, package repo, etc). Here's an article from LWN that talks about it with a real world example: https://lwn.net/Articles/842319/
Early adopters can upgrade MacPorts before it officially supports the latest OS by building from source if they have the patience and are willing to debug any broken ports.
Isn't that the point of using a package manager to avoid the compiling from source and manually handling the dependency tree? Seems the better advice would be to wait for MacPorts is ready before upgrading if the software from it is that critical
No? Ports (and thus MacPorts) is source based. For FreeBSD, pkg provides binaries for ports, but is separate.
>Isn't that the point of using a package manager to avoid the compiling from source and manually handling the dependency tree?

The point of using a package manager is to avoid "manually handling the dependency tree". Whether you build from source or not is orthogonal.

Eh, the "package" in package manager kind of implies ready to use packages, not a bunch of code to be compiled if you have the environment for it.
You'd be surprised.

It just implies code collected into a bundle. Whether it's compiled into binary or not, is open.

There are lots of environments where the package manager just brings "code to be compiled", sometimes as an optional feature, other times as the preferred or only mode. Gentoo, Arch, FreeBSD Ports are classic examples of "source first" approaches. IIRC that was the case for Python packages that needed binary (e.g. C) dependencies: they were downloaded as dependencies and compiled locally, until the introduction of "wheels" (pre-built).

either as the prefered more, or as the only mode. MacPorts

vendored just means copying the upstream code dependencies into your project.

Golang, where it is (or used to be) a common practice, even has special tooling for this, and dedicates the "vendor" directory to that.