[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Split Packages files based on new section "buildlibs"



Hi Antonio (and anybody else that understands the technical problem involved here),

I've been reading the whole thread and it seems to me that the reason, why Rust/Go build-time "libraries" need to be handled differently from all the other existing stuff in the world and that "no user ever wants to use" the Debian-provided build-time Rust/Go libraries has not been spelled out in plain, comprehensible english yet.

So since you seem to understand a bit about the technical problem involved here and I'd very much appreciate if you could spell it out. I think it would benefit the project as then everybody would be able to understand what this new section is about.

So let me ask a question that could maybe clear things up:

On 11.11.20 14:39, Antonio Terceiro wrote:

In the Rust world there is no such thing as installing a library
globably. A crate that provides a library can only be used to build
other stuff, and is never made available globally. "cargo install" only
applies to creates that provide binaries:

https://doc.rust-lang.org/cargo/commands/cargo-install.html

[I've read the cargo-install.html document in the past but not re-read it now]

So let's say user joe wants to code Go software that depends on Go's third party github.com/tazjin/kontemplate/templater package ("package" in Go's taxonomy not in Debian's!).

Then he'd `export GOPATH=~/src/go` and `go get github.com/tazjin/kontemplate`. Go would then `git clone` everything under `~/src/go/src/github.com/tazjin/kontemplate/`.

So far so good and I think Rust has a similar mechanisms with cargo, right?

Now given that alice wants to package joe's software. She'll do the above plus `go get github.com/joe/joes_app`. All will be under `~/src/go/src/github....`.

The naive thing to do now would be to move `~/src/go/src/` to `/usr/lib/go` and package that as `go-tazjin-kontemplate-dev_0.1.deb` or similar.

Debian's automatic build process for "joes_app" would first install `go-tazjin-kontemplate-dev_0.1.deb`, then make a symlink from `~/src/go/src/github.com/tazjin` (or `~/.local/go` or whereever Go expects its stuff by default) to `/usr/lib/go/src/github.com/tazjin` and build and be done.

A user wanting to develop software based on tazjin's stuff would do the same: `apt-get install go-tazjin-kontemplate-dev`, symlink, done.

This solution seems to be too trivial that nobody would have though of it, so what is it that I (and I guess many Debianers) are missing?
*t


Reply to: