Conversation

It is annoying to me that Arch, Nix, Guix, and Portage are four different package formats. Since they're all instructions for building source, it seems to me they should be one format, or else there should be a format that can "compile" to the other four.

(NOTE TO PERSON LINKING ME THE XKCD "NOW THERE ARE FIVE FORMATS" STRIP: Yes, that is my proposal. I am proposing creating a fifth format. On purpose.)

6
1
1

@mcc

This sounds a bit like the goals of pkgsrc.

0
0
0

https://mastodon.art/@RussSharek/117441833838533758

Had not heard of https://www.pkgsrc.org but it sounds very appealing

- Native platform is NetBSD— exactly the OS I'll probably have to wind up using after the AIpocalypse

- "Code exists in pkgsrc to support 20+ Unix-like operating systems and 15+ CPU architectures." Curious what those 20 are! Nix? Guix? dpkg?

EDIT: Not what I thought it was, pkgsrc is a package manager that can be installed on 20+ operating systems, similar to homebrew. Alas

0
0
1

@mcc mmm, so you could do a portable subset, but how are you going to translate e.g. USE flags outside of portage?

1
0
1

@dysfun i'd probably build a portable subset. since i don't know what a USE flag is, presumably i won't miss… it … being… gone ?

1
0
1

@mcc you would if you were a gentoo user. it controls e.g. whether you use gtk+ or qt or whatever

1
0
1

@dysfun sounds important. fortunately it also sounds a lot like rust "features" and possibly nix configuration options? so presumably you'd have some kind of high level abstraction for converting to different option types and/or have a list of which (portage, nix, etc) flags correspond to which flags in the meta-package file

1
0
1

@mcc they're sort of analogous to rust features, but good luck mapping them cleanly.

1
0
1

@dysfun i think i was imagining the meta-package format having one section for "shared stuff" and one section for "stuff that has to be specialized between different concrete-package formats"

1
0
1

@mcc @dysfun there is exact the meta package manager ;) https://codeberg.org/guix/guix/src/commit/dda91ea6f9ee4f769f85f0e535cd408ad337d95d/gnu/packages/package-management.scm#L1239

By the way Guix package is not just a metadata but build recipe as well
Is short
- source of origin
- name
- version
- build backend to use: zoo of make, cmake, conan, meson, jinja, uv, pdm, asdf, cargo, rake, lake, blue, ant, bezel <...>
- all environment variables
- all required inputs (sources or other packages)
- build artifacts
- home page
- short synopsis
- long description
- licences

0
1
1

@mcc Many who build their own try to derive it from the Gentoo one, so I think that's where one should start.

The imo only problem with Portage is it's dependency on bash and python3.

1
0
1

@mcc I don't like python because it's going the slop way.

Maybe someone should rewrite it in Perl, that's pretty stable (since most people abandoned it… which is a good thing in current times).

0
0
1

@mcc

Wouldn't it be better to analyze all of them, pick the best one, add the missing features, deprecate the bad ones, and let it win?

1
0
0

@jcurioso Not possible. The split between Nix and Guix is based on ideology rather than technical matters, which means neither can win.

Now, one option is to pick Guix as if it were my "fifth format", and then use the tool (already existing?) for recompiling that to Nix, and additionally maybe modify the tool to create Arch packages. However: Parenthesis

1
0
1

@mcc

Then it makes sense for both of them to exist.

Recompiling packages sounds like the kind of thing that makes downloading a tar.gz, installing dependencies and compiling something nice. Some applications are really easy to compile that way.

I think I will keep using precompiled packages; they seem much less troublesome.

1
0
1

@jcurioso doesn't help; several of these package formats have paired binary formats. but in order to create the binary package. you first have to create a source package. to build the binary package from.

0
0
1

@mcc i think it did kind of originate as one single unified collection, with the berkeley software distribution (now split many ways) and then later the ports tree (also split multiple ways + other similar systems like portage and homebrew being based on it conceptually)

1
0
0

@mcc i think the closest to universal would be some BSD ports tree, followed by portage since they technically aren’t limited to just their native host operating system. haven’t tried them outside their home turf but it’s supposedly an option

0
0
0