Puppet 7 packaging work

(!) Puppet 7 is now in Debian and will be released with DebianBookworm.

This page was used previously to summarize the work necessary to get Puppet 7 and related packages in Debian. It is being kept for historical reference.

Puppet agent: up to date

puppet-agent 7.x has been packaged and is now uploaded to the archive.

It has been reported that the transition from the old puppet 5.5 agent package is working correctly.

Puppet Server: missing dependencies, jruby update

Here's the current dep tree of Puppet server 7.9.0, as of 2022-08-19. This was generated with lein deps :tree | parse-lein-tree, source for the latter is https://gitlab.com/anarcat/scripts/-/blob/main/parse-lein-tree, former is in leiningen.

47 packaged, 1 NOT-NEEDED, 2 ITP, 0 missing dependencies

The JRuby problem

Update: jruby 9.3.9.0+ds1 has now been uploaded to Debian.

The main problem with packaging puppetserver is that it is blocked on jruby packaging.

One problem with JRuby is that it is stuck with a definition of the Ruby interpreter that is older than the standard Ruby language, and Gems may have been updated to support the new interpreter in a way that is now incompatible with JRuby. If this hasn't happened yet, this may happen in the future.

So part of the problem is that we cannot reuse the existing gem packages in puppetserver.

proposal: vendor dependencies

At DebConf 22, there was a BoF about Puppet 7 packaging where it was proposed to simply vendor the missing dependencies in puppetserver, which is how upstream proceeds anyways.

We can also reuse a bunch of gems that are already packaged for Ruby 3.0, some of those might still work.

Eventually, hopefully, both jruby and upstream will fix this mess and we will return to some normality, but the priority for now is to package Puppet server in Debian, so we suggest making a compromise on this point that might eventually go away.

proposal: repackaging missing JRuby dependencies

This proposal is deprecated and kept for historical purposes. See the kosovo update instead.

Here, the idea is to package each of these especially for JRuby, and make them conflict with the standard Ruby gems (probably also packaging them in a different location, but that isn't decided yet). This will make it so that the work on Gems by the Ruby team, with the newer standard interpreter, doesn't simply destroy JRuby compatibility.

Here's the list of ruby Gems affected by this, along with the progress in packaging each one:

Ruby Gem name

Version

Status

Person working on it

ITP number

Depends on

minitest

5.11.3

Not in Debian

-

-

-

bundler

2.2.29

Not in Debian

-

-

-

rake

12.3.3

Not in Debian

zigo

-

minitest, bundler

did_you_mean

1.3.0

Not in Debian

-

-

-

irb

1.0.0

Not in Debian

-

-

-

jar-dependencies

0.4.1

Not in Debian

-

-

-

net-telnet

0.1.1

Not in Debian

-

-

-

power_assert

1.1.3

Not in Debian

-

-

-

racc

1.5.2-java

Not in Debian

-

-

-

rdoc

6.1.2.1

Not in Debian

-

-

-

rubygems-update

3.2.29

Not in Debian

-

-

-

test-unit

3.2.9

Not in Debian

-

-

-

xmlrpc

0.3.0

Not in Debian

-

-

-

The should be packaged as jruby-FOO as binary name. As they are JRuby packages, I (zigo) propose to use a new "jruby-team" namespace on Salsa, and probably move JRuby itself over there.

When packaging, it's okay to just take everything from the original Ruby package, though one must make sure to add Conflict: ruby-FOO in debian/control, and add the following in the short description: - jruby version, plus this sentence in the long description:

This version of the package is for building JRuby. Do not use it with
the standard Ruby interpreter.

These are needed for the puppet-server:

PuppetDB: uploaded to experimental, needs testing

As of August 2022, here is the status of PuppetDB in Debian. PuppetDB missed the Debian bullseye release because of critical bugs (981903, 990419, 990872). The buster release still kind of works but has serious reliability issues (994843), and is also affected by the bugs that kept it from shipping in bullseye. It is currently kept out of bookworm because of the above critical bugs as well.

All dependencies of PuppetDB have now been packaged in Debian, either already in stable or in testing. A test package was uploaded to experimental and is available for further testing.

Here's the current dep tree of PuppetDB 7.11.1, as of 2022-08-19. This was generated with lein deps :tree | parse-lein-tree, source for the latter is https://gitlab.com/anarcat/scripts/-/blob/main/parse-lein-tree, former is in leiningen. This is mostly kept for historical purposes, and will not be updated any further.

58 packaged, 1 NOT-NEEDED, 0 missing dependencies

Hiera: up to date, to be removed in Puppet 8

The Hiera 3 gem, although deprecated, is still a hard dependency up to and including Puppet 7.

A pull request was submitted upstream to remove it, but it seems it will only happen in Puppet 8.

So for now, we still need the Hiera ruby gem in Debian, so it has been updated to 3.9.0 in bookworm.

Trocla: out of date, missing dependencies

Trocla is not strictly speaking part of Puppet, but it's definitely a useful tool for it and used by many puppet users.

It's maintained by the Ruby team.

Currently, it's out of date (1010522) and the update depends on the ruby-moneta upgrade (1010286). TheAnarcat is working on this, coordinate in #debian-ruby or in the aforementioned bug reports.

Facter: up to date

facter 4.x has been packaged and uploaded to the archive.

General packaging hints

See Clojure/PackagingTutorial#Packaging_using_leiningen.