[Pkg-puppet-devel] Plans for packaging puppet 6

Louis-Philippe Véronneau pollo at debian.org
Wed Jul 1 00:56:38 BST 2020


On 2020-06-30 17 h 12, Louis-Philippe Véronneau wrote:
> On 2020-06-30 10 h 56, Thomas Goirand wrote:
>> On 5/9/20 11:42 AM, Stig Sandbeck Mathisen wrote:
>>> Gabriel Filion <gabriel at koumbit.org> writes:
>>>
>>>> From what I know, packaging puppet 6 can be broken down into three
>>>> parallel efforts, the biggest one being figuring things out for the
>>>> Clojure codebase: puppetserver, puppet-agent and facter.
>>>
>>> For the ruby bits, there is also the question of what is needed to get
>>> Puppet to run on ruby 2.7, which is the ruby version currently in Debian
>>> unstable.
>>>
>>> This is tracked upstream at
>>> https://tickets.puppetlabs.com/projects/PUP/issues/PUP-10247
>>
>> FYI, I have here a package working for the puppet agent 6.9.0 (with some
>> ruby warning). Basically, I just needed to package ruby-semantic-puppet,
>> add ruby-concurrent and ruby-sync as runtime depends, and the agent
>> seems to work out of the box.
>>
>> Passenger is gone from upstream, apparently, so this goes away from the
>> package. "puppet master" is gone too, if I understand well, because it's
>> replaced by puppetserver.
>>
>> I've tried to look at how to package puppetserver, though I'm kind of
>> stuck not knowing where to start.
>>
>> Does anyone of the team have any pointers? Unlike for the agent, there's
>> no source package for puppetserver upstream.
> 
> Although I've never really looked into building Puppet myself (yet!), I
> think we can safely assume we can grab tarballs or git tags from Github
> directly:
> 
> https://github.com/puppetlabs/puppetserver

zigo, LeLutin and I had a chat on IRC and we came to the conclusion
we'll probably have to package a bunch of Clojure dependencies to get
puppetserver in Debian.

I thus reached out to ehashman from the Clojure Team (in CC) and they
were super helpful!

Turns out we can use Leiningen (lein deps :tree) to find the whole
dependency tree. Here's the output for puppetserver:

[beckon "0.1.1"]
 [clj-commons/clj-yaml "0.7.0"]
   [org.flatland/ordered "1.5.7"]
     [org.flatland/useful "0.11.6"]
 [clj-commons/fs "1.5.1"]
   [org.apache.commons/commons-compress "1.17"]
   [org.tukaani/xz "1.8"]
 [clj-time "0.11.0"]
   [joda-time "2.8.2"]
 [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]
 [com.cemerick/url "0.1.1"]
   [pathetic "0.5.0"]
     [com.cemerick/clojurescript.test "0.0.4"]
       [org.clojure/clojurescript "1.7.122"]
         [com.google.javascript/closure-compiler "v20150729"]
           [args4j "2.0.26"]
           [com.google.code.findbugs/jsr305 "1.3.9"]
           [com.google.code.gson/gson "2.2.4"]
           [com.google.guava/guava "18.0"]
           [com.google.javascript/closure-compiler-externs "v20150729"]
           [com.google.protobuf/protobuf-java "2.5.0"]
         [org.clojure/google-closure-library "0.0-20150805-acd8b553"]
           [org.clojure/google-closure-library-third-party
"0.0-20150805-acd8b553"]
         [org.mozilla/rhino "1.7R5"]
 [com.fasterxml.jackson.module/jackson-module-afterburner "2.10.0"]
   [com.fasterxml.jackson.core/jackson-core "2.10.0"]
   [com.fasterxml.jackson.core/jackson-databind "2.10.0"]
     [com.fasterxml.jackson.core/jackson-annotations "2.10.0"]
 [commons-io "2.4"]
 [commons-lang "2.6"]
 [grimradical/clj-semver "0.3.0" :exclusions [[org.clojure/clojure]]]
 [io.dropwizard.metrics/metrics-core "3.2.2"]
   [org.slf4j/slf4j-api "1.7.20"]
 [liberator "0.15.2"]
   [hiccup "1.0.5"]
   [org.clojure/data.csv "0.1.3"]
   [org.clojure/data.json "0.2.6"]
 [net.logstash.logback/logstash-logback-encoder "5.0"]
   [ch.qos.logback/logback-core "1.2.3"]
 [nrepl "0.6.0" :exclusions [[org.clojure/clojure]]]
 [org.apache.commons/commons-exec "1.3"]
 [org.bouncycastle/bcpkix-jdk15on "1.60"]
   [org.bouncycastle/bcprov-jdk15on "1.60"]
 [org.clojure/clojure "1.10.1"]
   [org.clojure/core.specs.alpha "0.2.44"]
   [org.clojure/spec.alpha "0.2.176"]
 [org.clojure/tools.namespace "0.2.11"]
 [org.yaml/snakeyaml "1.23"]
 [prismatic/schema "1.1.9"]
 [puppetlabs/clj-shell-utils "1.0.2"]
   [org.slf4j/log4j-over-slf4j "1.7.20"]
 [puppetlabs/comidi "0.3.2"]
   [bidi "2.1.3"]
   [compojure "1.5.0"]
     [clout "2.1.2"]
       [instaparse "1.4.1" :exclusions [[org.clojure/clojure]]]
     [medley "1.0.0"]
 [puppetlabs/dujour-version-check "0.2.3"]
 [puppetlabs/http-client "1.1.3"]
   [org.apache.httpcomponents/httpasyncclient "4.1.4"]
     [commons-logging "1.2"]
     [org.apache.httpcomponents/httpclient "4.5.2"]
     [org.apache.httpcomponents/httpcore-nio "4.4.10"]
     [org.apache.httpcomponents/httpcore "4.4.5"]
 [puppetlabs/i18n "0.8.0"]
   [cpath-clj "0.1.2"]
     [org.clojure/java.classpath "0.2.3"]
   [org.gnu.gettext/libintl "0.18.3"]
 [puppetlabs/jruby-utils "3.1.4"]
   [org.clojure/java.jmx "0.3.4"]
   [org.clojure/tools.logging "0.4.0"]
   [puppetlabs/jruby-deps "9.2.11.1-1"]
     [org.jruby/jruby-core "9.2.11.1"]
       [com.github.jnr/jffi "1.2.23"]
       [com.github.jnr/jffi "1.2.23" :classifier "native"]
       [com.github.jnr/jnr-constants "0.9.15" :exclusions
[[com.github.jnr/jnr-ffi]]]
       [com.github.jnr/jnr-enxio "0.25" :exclusions
[[com.github.jnr/jnr-ffi]]]
       [com.github.jnr/jnr-netdb "1.1.6" :exclusions
[[com.github.jnr/jnr-ffi]]]
       [com.github.jnr/jnr-posix "3.0.54" :exclusions
[[com.github.jnr/jnr-ffi]]]
       [com.github.jnr/jnr-unixsocket "0.28" :exclusions
[[com.github.jnr/jnr-ffi]]]
       [com.headius/backport9 "1.3"]
       [com.headius/invokebinder "1.11"]
       [com.headius/options "1.4"]
       [com.jcraft/jzlib "1.1.3"]
       [com.martiansoftware/nailgun-server "0.9.1"]
       [javax.annotation/javax.annotation-api "1.3.1"]
       [org.jruby.jcodings/jcodings "1.0.46"]
       [org.jruby.joni/joni "2.1.31"]
       [org.jruby/dirgra "0.3"]
     [org.jruby/jruby-stdlib "9.2.11.1"]
 [puppetlabs/kitchensink "3.1.0"]
   [digest "1.4.3"]
   [org.clojure/tools.cli "0.3.6"]
   [org.ini4j/ini4j "0.5.2"]
   [org.tcrawley/dynapath "0.2.5"]
 [puppetlabs/kitchensink "3.1.0" :classifier "test" :scope "test"]
 [puppetlabs/ring-middleware "1.0.1"]
   [ring/ring-core "1.4.0"]
     [commons-fileupload "1.3.1"]
     [crypto-equality "1.0.0"]
     [crypto-random "1.2.0"]
     [org.clojure/tools.reader "1.2.1"]
 [puppetlabs/ssl-utils "3.0.4"]
   [commons-codec "1.10"]
 [puppetlabs/trapperkeeper-authorization "1.0.0"]
   [org.clojure/tools.nrepl "0.2.13"]
   [puppetlabs/rbac-client "0.9.4"]
     [ring/ring-json "0.4.0"]
 [puppetlabs/trapperkeeper-comidi-metrics "0.1.1"]
 [puppetlabs/trapperkeeper-filesystem-watcher "1.2.2"]
 [puppetlabs/trapperkeeper-metrics "1.2.3"]
   [cheshire "5.8.0"]
     [com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.9.0"]
     [com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.9.0"]
     [tigris "0.1.1"]
   [io.dropwizard.metrics/metrics-graphite "3.2.2"]
   [org.jolokia/jolokia-core "1.6.2"]
     [com.googlecode.json-simple/json-simple "1.1.1" :exclusions [[junit]]]
   [ring/ring-defaults "0.3.1"]
     [ring/ring-anti-forgery "1.1.0"]
     [ring/ring-headers "0.3.0"]
     [ring/ring-ssl "0.3.0"]
 [puppetlabs/trapperkeeper-metrics "1.2.3" :classifier "test" :scope "test"]
 [puppetlabs/trapperkeeper-scheduler "1.1.2"]
   [org.quartz-scheduler/quartz "2.3.1" :exclusions [[c3p0]]]
     [com.mchange/c3p0 "0.9.5.3"]
     [com.mchange/mchange-commons-java "0.2.15"]
     [com.zaxxer/HikariCP-java7 "2.4.13"]
 [puppetlabs/trapperkeeper-status "1.1.0"]
   [trptcolin/versioneer "0.2.0" :exclusions [[org.clojure/clojure]]]
 [puppetlabs/trapperkeeper-webserver-jetty9 "4.1.0"]
   [javax.servlet/javax.servlet-api "3.1.0"]
   [org.eclipse.jetty.websocket/websocket-server "9.4.28.v20200408"]
     [org.eclipse.jetty.websocket/websocket-client "9.4.28.v20200408"]
     [org.eclipse.jetty.websocket/websocket-common "9.4.28.v20200408"]
       [org.eclipse.jetty.websocket/websocket-api "9.4.28.v20200408"]
     [org.eclipse.jetty.websocket/websocket-servlet "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-jmx "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-proxy "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-client "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-server "9.4.28.v20200408" :exclusions
[[org.eclipse.jetty.orbit/javax.servlet]]]
     [org.eclipse.jetty/jetty-http "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-io "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-servlet "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-security "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-servlets "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-continuation "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-util "9.4.28.v20200408"]
   [org.eclipse.jetty/jetty-webapp "9.4.28.v20200408"]
     [org.eclipse.jetty/jetty-xml "9.4.28.v20200408"]
   [org.slf4j/jul-to-slf4j "1.7.20"]
   [ring/ring-codec "1.0.0"]
   [ring/ring-servlet "1.5.0"]
 [puppetlabs/trapperkeeper-webserver-jetty9 "4.1.0" :classifier "test"]
 [puppetlabs/trapperkeeper "3.1.0"]
   [ch.qos.logback/logback-access "1.2.3"]
   [ch.qos.logback/logback-classic "1.2.3"]
   [org.clojure/core.async "0.4.490"]
     [org.clojure/tools.analyzer.jvm "0.7.2"]
       [org.clojure/core.memoize "0.7.1"]
         [org.clojure/core.cache "0.7.1"]
           [org.clojure/data.priority-map "0.0.9"]
       [org.clojure/tools.analyzer "0.6.9"]
       [org.ow2.asm/asm-all "5.0.3"]
   [org.clojure/tools.macro "0.1.5"]
   [org.codehaus.janino/janino "3.0.8"]
     [org.codehaus.janino/commons-compiler "3.0.8"]
   [prismatic/plumbing "0.4.2"]
     [de.kotka/lazymap "3.1.0" :exclusions [[org.clojure/clojure]]]
   [puppetlabs/typesafe-config "0.1.5"]
     [com.typesafe/config "1.2.0"]
 [puppetlabs/trapperkeeper "3.1.0" :classifier "test" :scope "test"]
 [ring-basic-authentication "1.0.5"]
   [org.clojure/data.codec "0.1.0"]
 [ring/ring-mock "0.3.2"]
 [slingshot "0.12.2"]

Hopefully, a bunch of those already are in Debian. I don't have time to
go through the list right now, but if someone else is up for that,
here's a cool example of an ITP Elana gave me:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891136#42

The obvious place for us to package the missing dependencies are in the
Clojure Team. Elana seemed open to creating repositories in their Salsa
Team and giving us access to them.

Apparently, some of Puppet's Clojure dependencies are still in the Java
Team repos, so if we need to update those we'll have to ask for them to
be migrated.

Our next steps would thus be:

1. Identify which dependencies are in Debian and which are not
2. Divide the work and create ITPs
3. Give an array of repo_name:accounts to the Clojure Team for them to
give us the Salsa access

-- 
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁  Louis-Philippe Véronneau
  ⢿⡄⠘⠷⠚⠋   pollo at debian.org / veronneau.org
  ⠈⠳⣄

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-puppet-devel/attachments/20200630/3fa72a4f/attachment-0001.sig>


More information about the Pkg-puppet-devel mailing list