Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package just for Debian and get it accepted into the main package repository: $200 bounty #429

Closed
slisznia opened this issue May 6, 2019 · 51 comments

Comments

@slisznia
Copy link

slisznia commented May 6, 2019

Casey: Highjacking the original post for visibility. I'd like to see Just packaged for Debian, but it's something I'm unlikely to do myself, so I'm offering a $200 bounty to the person who both packages it and gets it accepted into the main Debian package repository.

For anyone interested in tackling this, rust packages are packaged by the Debian Rust team. Some useful links:

@casey casey changed the title How long before we can "apt-get just"? Package just for Debian and Ubuntu May 6, 2019
@casey
Copy link
Owner

casey commented May 6, 2019

I would love to see just available in Debian and Ubuntu! I have no idea what the process for getting software into those distributions is though. For example:

  • I know that Ubuntu is a derivative of Debian. If just is packaged for Debian, will it automatically make its way into Ubuntu, or does it also need to be packaged for Ubuntu?
  • Are there any requirements for packages that just doesn't meet? If there are, I'd be very happy to work to rectify those. (For example, do binaries need to have a man page?)

I don't think not being 1.0 is an issue. And if it was, I would just bump to 1.0 right now. I'm not planning any huge, breaking changes in the future.

If anyone out there is willing to help get just into Debian and Ubuntu (or any other distro, linux or not) and I can do something to make the process easier, let me know!

@slisznia
Copy link
Author

slisznia commented May 6, 2019 via email

@casey
Copy link
Owner

casey commented May 6, 2019

Thanks for the link, that's super helpful. I probably won't have time in the near future to package it myself, but I'd be very happy to help anyone who does.

@casey casey added this to the eventually milestone May 27, 2019
@NickeZ
Copy link
Contributor

NickeZ commented Jul 6, 2019

I have some work in progress on packaging just for debian here: https://salsa.debian.org/nickez-guest/debcargo-conf/commits/package-just

I believe that if we get into debian we get into ubuntu automatically.

@NickeZ
Copy link
Contributor

NickeZ commented Jul 6, 2019

It is possible to create a simple man page with help2man. We can do that until we have a proper one.

help2man --name just --no-info --no-discard-stderr --version-string 4.4.0 just > just.1
JUST(1)                          User Commands                         JUST(1)

NAME
       just - just

DESCRIPTION
       just  v0.4.4  Casey  Rodarmor  <casey@rodarmor.com> ???? Just a command
       runner - https://github.com/casey/just

   USAGE:
              just [FLAGS] [OPTIONS] [--] [ARGUMENTS]...

   FLAGS:
       --dry-run
              Print what just would do without doing it

       --dump Print entire justfile

       -e, --edit
              Open justfile with $EDITOR

       --evaluate
              Print evaluated variables

       --highlight
              Highlight echoed recipe lines in bold

       -l, --list
              List available recipes and their arguments

       -q, --quiet
              Suppress all output

       --summary
              List names of available recipes

       -v, --verbose
              Use verbose output

       -h, --help
              Print help information

       -V, --version
              Print version information

   OPTIONS:
       --color <COLOR>

       Print colorful output [default: auto]
              [possible values: auto, always, never]

       -f, --justfile <JUSTFILE>
              Use <JUSTFILE> as justfile.

       --set <VARIABLE> <VALUE>
              Set <VARIABLE> to <VALUE>

       --shell <SHELL>
              Invoke <SHELL> to run recipes [default: sh]

       -s, --show <RECIPE>
              Show information about <RECIPE>

       -d, --working-directory <WORKING-DIRECTORY>

              Use <WORKING-DIRECTORY> as working  directory.  --justfile  must
              also be set

   ARGS:
       <ARGUMENTS>...
              The  recipe(s) to run, defaults to the first recipe in the just‐
              file

just 4.4.0                         July 2019                           JUST(1)

@casey
Copy link
Owner

casey commented Jul 7, 2019

@NickeZ Awesome! I'm always so grateful when people work on packaging just, so thank you very much!

help2man looks like a great option for now. Do you have advice for where I should put the man page to make the life of package maintainers easier? I don't know much about the relevant conventions. I was thinking about putting it in man/just.1.

I notice that you used 4.4.0 for the version string. Was that on purpose, or is using 0.4.4 okay?

@NickeZ
Copy link
Contributor

NickeZ commented Jul 7, 2019

4.4.0 was a typo :). Actually I can generate it during packaging so unless you want to manually keep it in sync you don't have to do anything. I just wanted you to know that this is what it will look like until someone has the time/interest to create a proper one.

edit: I don't know if there are any conventions about where to put the man-file. Maybe ./man, maybe ./doc.

@NickeZ
Copy link
Contributor

NickeZ commented Jul 7, 2019

It seems like this will take a while. I will have to get these packages into unstable before I can submit just.

dirs is actually a bit problematic since it has such a deep tree of non-available packages. First I have to get argon2rs into unstable and then I can get redox_users into unstable and so on. Every iteration takes a few weeks.

├── assert_matches v1.3.0
├── brev v0.2.0
│   ├── dirs v2.0.1
│   │   └── dirs-sys v0.3.3
│   │       ├── redox_users v0.3.0
│   │       │   ├── argon2rs v0.2.5
│   ├── glob v0.3.0
├── dotenv v0.13.0
├── edit-distance v2.1.0
├── target v1.0.0

@casey
Copy link
Owner

casey commented Jul 8, 2019

I think that I'll generate the man page and check it in, so I can tweak it if necessary, and so packagers for other distributions can use it, even if they don't know about help2man. I created #456 to track this. It seems simple, so hopefully I can get to it soon.

Ahhh, gotcha, I assumed that dirs would be easy to package. In that case, I'll probably do one of the following:

  • just only uses brev::output, so I could move brev::output into just itself, and remove the dependency on brev
  • change brev back to using std::env::home_dir
  • move brev::output into its own crate, and depend on that crate instead of brev

I created #457 to track this. This is also easy, so hopefully I manage to do it relatively soon.

@casey
Copy link
Owner

casey commented Jul 19, 2019

@NickeZ I've merged the following pull requests:

Let me know if there's anything else I can do to help!

@casey casey modified the milestones: eventually, 1.0 Nov 7, 2019
@casey casey modified the milestones: 1.0, eventually Nov 21, 2019
@casey
Copy link
Owner

casey commented Jan 30, 2020

There looks to be some good information here in case anyone is interested in picking this up: https://blog.hackeriet.no/packaging-a-rust-project-for-debian/

@casey casey removed this from the eventually milestone Jul 2, 2020
@casey
Copy link
Owner

casey commented May 4, 2021

I'd like to see this happening, so I'll pay the person who gets Just into the main Debian repository $100. Honestly $100 is probably not really enough, since it'll likely take quite a bit of work, so it should be considered a token of my gratitude.

@ItzSwirlz
Copy link

ItzSwirlz commented Sep 1, 2021

Hey everyone. I want to package this so I can get enough contributions in to get higher roles in Debian, however I'm concerned with Rust-team, using debcargo (which allows us to package crates with just a changelog and copyright file) that I may not be counted as the "Maintainer", but for how fun this is I think I'll give it a shot. Other crates I've found are behind on dependencies and I haven't been able to do anything.

so I'll pay the person who gets Just into the main Debian repository $100. Honestly $100 is probably not really enough, since it'll likely take quite a bit of work, so it should be considered a token of my gratitude.

You should again, look at debcargo which has us only deal with two files, but if you still want to do that, split it between me and the Rust team (even though paying me may be chaotic as I don't have a credit card)

Edit: Build immediately fails. Failed to parse manifest in the Cargo.toml file about resolver being required. It considers adding 'cargo-features = ["resolver"]' to the manifest. I'm new to rust so I can't figure this out, so if that can be dealt with and all dependencies are updated in a release this can be packaged

@akshaybabloo
Copy link

Would it be OK if this goes in snap for Ubuntu? I can probably pack it up for that

@casey
Copy link
Owner

casey commented Jun 14, 2022

Would it be OK if this goes in snap for Ubuntu? I can probably pack it up for that

I'd like to get it into the base debian repos, but if getting it it packaged in the snap repos is easy, that would be awesome too.

@casey casey changed the title Package just for Debian and Ubuntu Package just for Debian and Ubuntu: $200 bounty Jul 7, 2022
@casey casey pinned this issue Jul 7, 2022
@sambacha
Copy link

sambacha commented Jul 9, 2022

Would it be OK if this goes in snap for Ubuntu? I can probably pack it up for that

I'd like to get it into the base debian repos, but if getting it it packaged in the snap repos is easy, that would be awesome too.

Hello, thanks for making and maintaining this tool. I have done the initial packaging for you here: https://github.com/sambacha/justfile-debian-pkg

Keep the money!

@sambacha
Copy link

sambacha commented Jul 9, 2022

In the repo you will find the following dir structure:

├── deb
│   └── just
│       ├── completions
│       │   ├── bash
│       │   │   └── just
│       │   └── zsh
│       │       └── _just
│       ├── deb.changelog
│       ├── deb.control
│       ├── deb.copyright
│       ├── deb.docs
│       ├── deb.install
│       └── deb.rules

the files with the deb. prefix are required for packaging. Please check these files and make sure that the descriptions fit the desired verbiage you wish to have for packaging.

Next is a Makefile in the root dir. Yes. I know. It assumes rust / cargo is installed. It generates the build output for the binary.

shell completions are provided for generation. these are boilerplate and I make no claims on their usability!

Additionally I filled out a github workflow that allegedly does all this for you as well, however its always good to have an actual set of files vs. ephemeral CI produced ones.

This work is licensed under the same terms as Justfile is (CC0-1.0)

lmk if you have any questions, cheers

@casey
Copy link
Owner

casey commented Nov 30, 2022

@phitoduck Nope, no movement on this, unfortunately. I'm not a Debian user, so it's impractical for me to package it myself. Debian has a fairly involved packaging process. For anyone interested in tackling this, I added some links to the relevant Debian teams above

@phitoduck
Copy link

Would it be fair to say that the success criteria for this ticket to complete would be: I can run apt-get update && apt-get install just successfully?

@casey
Copy link
Owner

casey commented Nov 30, 2022

Would it be fair to say that the success criteria for this ticket to complete would be: I can run apt-get update && apt-get install just successfully?

Yup, that's right. I mean, it has to be on an vanilla Debian box, but I think that's implied 😅

@benmoss
Copy link
Contributor

benmoss commented Dec 20, 2022

@casey would you be interested in having .deb files as part of the release artifacts? I managed to get that working over at https://github.com/benmoss/just using cargo-deb, you can see em in https://github.com/benmoss/just/releases/tag/v0.0.6

$ docker run -it --rm golang:latest
root@86c174443f54:/go# curl -JLO https://github.com/benmoss/just/releases/download/v0.0.6/just_1.9.0_arm64.deb
root@86c174443f54:/go# dpkg -i just_1.9.0_arm64.deb
Selecting previously unselected package just.
(Reading database ... 15709 files and directories currently installed.)
Preparing to unpack just_1.9.0_arm64.deb ...
Unpacking just (1.9.0) ...
Setting up just (1.9.0) ...
root@86c174443f54:/go# just --version
just 1.9.0

@casey
Copy link
Owner

casey commented Dec 23, 2022

@benmoss I'm open to it! Is installing from a deb much easier for debian users than installing prebuilt binaries? Feel free to open a PR with what you have and we can discuss it there. (Don't worry about making it nice yet!)

@lookfirst
Copy link

It sounds like there are a few 'solutions' to this problem. It is probably worth pulling one of those into the main repo and outputting a .deb asset as part of the CI build and doing a release.

Getting it into Debian itself, next steps are outlined here:

https://www.debian.org/doc/manuals/distribute-deb/distribute-deb.html#itp

  1. You can easily file an ITP using the reportbug tool and specifying “wnpp” as the package you want to report a bug against.
  2. You have to package your product and to ask for a sponsor on the debian-mentors mailing list.

As the owner, I'd suggest that @casey be the one to do the ass kissing on that front.

@casey
Copy link
Owner

casey commented Feb 1, 2023

I'm unable to package just myself, it's just too much of a maintenance burden, especially for OSes that I don't use.

I believe I've opened an ITP, and also pinged the Rust Debian team, but so far no luck. Understandable, since I'm sure there are a million things to package and update.

@lookfirst
Copy link

@benmoss has done most of the heavy lifting work for you and looks pretty good. The .deb gets built as part of the release process.

Yea... I'd jump in the IRC channels and try to do some real time (ass kissing) communication. Try to find a developer who will take pity on your poor soul.

@benmoss
Copy link
Contributor

benmoss commented Feb 2, 2023

I think debian won't merge a cargo-deb style package, that's why the RustPackaging team is working on "properly" building debs for Rust projects. I tried to take a look at their work, there is a package there that @bnoctis uploaded for just 1.4.0, but I don't know what the process/timeline is for these packages making their way to a distro

@nc7s

This comment was marked as outdated.

@rzr
Copy link

rzr commented Mar 1, 2023

Has a debian ITP bug been filled ?

Any attempt to upload deb package to:

https://mentors.debian.net/

As a debian maintainer, I'll be happy to help on this effort, feel free to ping me

https://qa.debian.org/developer.php?login=rzr@users.sf.net

@cberner
Copy link

cberner commented May 30, 2023

@rzr yes, I believe the ITP is here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=971726

@rzr
Copy link

rzr commented May 30, 2023

Yes I noticed there is also wip at:

https://salsa.debian.org/rust-team/debcargo-conf/-/tree/master/src/just

Let's hope it will backported to debian 12 later ?

To be tracked

@tgross35
Copy link
Contributor

tgross35 commented Dec 4, 2023

What exactly is the status? The ITP was last updated last year, and it seems like the package isn’t yet in the repos despite being in salsa (not sure what exactly makes that connection)

@nc7s
Copy link
Contributor

nc7s commented Jan 1, 2024

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://tracker.debian.org/news/1491148/accepted-rust-just-1140-1-amd64-source-into-unstable/

I hereby claim the bounty and ask that it be donated to The Debian Project (https://www.debian.org/donations).
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQS48iEZIAfDfZumFPwsia9f/Rx2fAUCZZMwkQAKCRAsia9f/Rx2
fBvpAQCpCGFf16yzKrrD6CDpm5NFMh8kSxAivSeSZK3EY8+sewEAswiR7K/Iohx3
Cmk6Q49FifXpv5J2MoPUBicWaK4VNAU=
=ZiZc
-----END PGP SIGNATURE-----

@casey
Copy link
Owner

casey commented Jan 1, 2024

@nc7s Incredible! Thank you so much! Which organization would you like the donation to be made to? I see that there a bunch of different entities listed on the donations page, and it doesn't seem to be possible to donate money to the main Debian project or organization.

@casey casey closed this as completed Jan 1, 2024
@nc7s
Copy link
Contributor

nc7s commented Jan 1, 2024

@casey the "bunch of different entities" are actually all dedicated to Debian (SPI does have a few other associated projects, but it's started by people of and deeply involved with Debian; you can direct the donation to Debian). Just pick the one that presents least friction for you.

And happy new year!

@casey
Copy link
Owner

casey commented Jan 1, 2024

Just donated $400 to SPI:

Screenshot 2024-01-01 at 2 51 21 PM

❤️

@rzr
Copy link

rzr commented Jan 2, 2024

Thanks a lot, track package status at:

https://tracker.debian.org/pkg/rust-just

As well as

https://repology.org/project/rust:just/packages

@yonas
Copy link

yonas commented Jan 26, 2024

This seems to have stalled due to #855

@casey
Copy link
Owner

casey commented Jan 26, 2024

See my comments in #855, hopefully this is fixed!

@nc7s
Copy link
Contributor

nc7s commented Jan 29, 2024

Thanks for the heads-up and the fix. I'll cherry-pick the fix since a release isn't out yet.

@tgross35
Copy link
Contributor

Migrated to testing! IIUC, I think that means we'll get it with Trixie in 2025 rather than Forky in 2027 🥳

https://tracker.debian.org/news/1502496/rust-just-1210-1-migrated-to-testing/

@casey
Copy link
Owner

casey commented Feb 29, 2024

Migrated to testing! IIUC, I think that means we'll get it with Trixie in 2025 rather than Forky in 2027 🥳

Very nice! The home stretch is in sight!

@rzr
Copy link

rzr commented Feb 29, 2024

What about targeting backports next ? usure there are a lot of rust packages in backports

https://tracker.debian.org/pkg/rust-just

@tgross35
Copy link
Contributor

tgross35 commented Feb 29, 2024

Is anything needed in this repository to make that happen? Or is it just testing with older versions of available packages to see if things build.

(I see Blair just bumped the version too, awesome https://salsa.debian.org/rust-team/debcargo-conf/-/commit/3c874594f551151bbb17ad96574515f837f61363)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.