63
Package software for any distribution with upt Cyril Roelandt Package software for any distribution with upt 1/28

Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Package software for any distribution with upt

Cyril Roelandt

Package software for any distribution with upt 1/28

Page 2: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Introduction

Cyril Roelandt

OpenStack (Red Hat)

GNU Guix (Do not miss Ludovic’s talk at 4:30PM!)

Package software for any distribution with upt 2/28

Page 3: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 3/28

Page 4: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 4/28

Page 5: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What is packaging?

Turn an “upstream” package into a “downstream” package

DebuggingSend/maintain patches

Package software for any distribution with upt 5/28

Page 6: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What is packaging?

Turn an “upstream” package into a “downstream” packageDebugging

Send/maintain patches

Package software for any distribution with upt 5/28

Page 7: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What is packaging?

Turn an “upstream” package into a “downstream” packageDebuggingSend/maintain patches

Package software for any distribution with upt 5/28

Page 8: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )

Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 9: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )

Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 10: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 11: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hell

DebuggingSome tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 12: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 13: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:

Package layoutMetadata

Package software for any distribution with upt 6/28

Page 14: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:Package layout

Metadata

Package software for any distribution with upt 6/28

Page 15: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Is packaging hard?

Many sources (PyPI, RubyGems. . . )Many targets (Debian, Fedora, Guix. . . )Cannot be fully automated:

Dependency hellDebugging

Some tasks can be automated:Package layoutMetadata

Package software for any distribution with upt 6/28

Page 16: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 7/28

Page 17: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Existing tools

Debian Fedora Guix FreeBSD OpenBSD

CPAN dh-make-perl cpan2rpm guix import ? PortGenNPM npm2deb npm2rpm N/A ? ?PyPI pypi2deb pyp2rpm guix import pytoport PortGenRuby gem2deb gem2rpm guix import ? PortGen

Package software for any distribution with upt 8/28

Page 18: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Issues

One CLI per tool

Different behavioursCode duplication (read upstream archive)Code duplication (write downstream package)

Package software for any distribution with upt 9/28

Page 19: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Issues

One CLI per toolDifferent behaviours

Code duplication (read upstream archive)Code duplication (write downstream package)

Package software for any distribution with upt 9/28

Page 20: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Issues

One CLI per toolDifferent behavioursCode duplication (read upstream archive)

Code duplication (write downstream package)

Package software for any distribution with upt 9/28

Page 21: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Issues

One CLI per toolDifferent behavioursCode duplication (read upstream archive)Code duplication (write downstream package)

Package software for any distribution with upt 9/28

Page 22: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?

Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 23: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 24: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD License

BSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 25: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?

https://github.com/pypa/warehouse/issues/2996“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 26: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 27: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})

For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 28: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})For values not available in the standard classifiers

‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 29: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: licenses (PyPI)

SPDX identifiers?Classifiers:

License :: OSI Approved :: BSD LicenseBSD2 or BSD3 or . . . ?https://github.com/pypa/warehouse/issues/2996

“license” field (setup.{cfg,py})For values not available in the standard classifiers‘BSD2’, ‘BSD 2’, ‘BSD-2’, ‘BSD 2 Clause’. . .

Package software for any distribution with upt 10/28

Page 30: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)

pipenv$ curl -s https://pypi.org/pypi/pipenv/json \

| jq .info.requires_dist[

"ordereddict; python_version < \"2.7\"","requests[security]; python_version < \"2.7\"","virtualenv","virtualenv-clone (>=0.2.5)","setuptools (>=36.2.1)","certifi","pip (>=9.0.1)"

]

Package software for any distribution with upt 11/28

Page 31: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)botocore$ curl -s https://pypi.org/pypi/botocore/json \

| jq .info.requires_distnull

$ wget https://.../botocore-1.12.16-py2.py3-none-any.whl$ unzip botocore-1.12.16-py2.py3-none-any.whl$ cd botocore-1.12.16.dist-info/$ jq .run_requires metadata.json[

{"requires": [

"jmespath>=0.7.1,<1.0.0","docutils>=0.10","urllib3>=1.20,<1.24"

]},...

]

Package software for any distribution with upt 12/28

Page 32: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)botocore$ curl -s https://pypi.org/pypi/botocore/json \

| jq .info.requires_distnull$ wget https://.../botocore-1.12.16-py2.py3-none-any.whl$ unzip botocore-1.12.16-py2.py3-none-any.whl$ cd botocore-1.12.16.dist-info/$ jq .run_requires metadata.json[

{"requires": [

"jmespath>=0.7.1,<1.0.0","docutils>=0.10","urllib3>=1.20,<1.24"

]},...

]Package software for any distribution with upt 12/28

Page 33: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)

MarkupSafe$ curl -s https://pypi.org/pypi/MarkupSafe/json \

| jq .info.requires_distnull

$ pip download --only-binary :all: MarkupSafeCollecting MarkupSafe

Could not find a version that satisfies the \requirement MarkupSafe (from versions: )

No matching distribution found for MarkupSafe$ cat setup.py...extras_require={

'dev': ...'docs': ...

}

Package software for any distribution with upt 13/28

Page 34: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)

MarkupSafe$ curl -s https://pypi.org/pypi/MarkupSafe/json \

| jq .info.requires_distnull$ pip download --only-binary :all: MarkupSafeCollecting MarkupSafe

Could not find a version that satisfies the \requirement MarkupSafe (from versions: )

No matching distribution found for MarkupSafe

$ cat setup.py...extras_require={

'dev': ...'docs': ...

}

Package software for any distribution with upt 13/28

Page 35: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)

MarkupSafe$ curl -s https://pypi.org/pypi/MarkupSafe/json \

| jq .info.requires_distnull$ pip download --only-binary :all: MarkupSafeCollecting MarkupSafe

Could not find a version that satisfies the \requirement MarkupSafe (from versions: )

No matching distribution found for MarkupSafe$ cat setup.py...extras_require={

'dev': ...'docs': ...

}

Package software for any distribution with upt 13/28

Page 36: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Example: dependencies (PyPI)

Read the JSON file provided by PyPIRead the wheelRead the source codeInstall the package, run “pip list”What about test dependencies?There might be even more ideas!

Package software for any distribution with upt 14/28

Page 37: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What we really need

Unified CLI

Unified behaviourModularSimple

Package software for any distribution with upt 15/28

Page 38: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What we really need

Unified CLIUnified behaviour

ModularSimple

Package software for any distribution with upt 15/28

Page 39: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What we really need

Unified CLIUnified behaviourModular

Simple

Package software for any distribution with upt 15/28

Page 40: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

What we really need

Unified CLIUnified behaviourModularSimple

Package software for any distribution with upt 15/28

Page 41: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 16/28

Page 42: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Architecture

Upstream | upt | upt | upt | DownstreamRepos | Frontends | | Backends | Packages

-----------------------------------------------------------------------+------+ | +----------+ | +-----+ | +-------------+ | +----------+| | | | | | | | | | | | | || PyPI |-|->| upt-pypi |-|->| |-|->| upt-guix |-|->| Guix pkg || | | | | | | | | | | | | |+------+ | +----------+ | | | | +-------------+ | +----------+

| | | upt | | |+------+ | +----------+ | | | | +-------------+ | +----------+| | | | | | | | | | | | | || CPAN |-|->| upt-cpan |-|->| |-|->| upt-openbsd |-|->| Makefile || | | | | | | | | | | | | |+------+ | +----------+ | +-----+ | +-------------+ | +----------+

| | | |

Package software for any distribution with upt 17/28

Page 43: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

UsageInstall (with modules)$ pip install upt[frontends,backends]

Available frontends$ upt list-frontendscpanpypirubygems

Available backends$ upt list-backendsfedorafreebsdguixnixopenbsd

Package software for any distribution with upt 18/28

Page 44: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

UsageInstall (with modules)$ pip install upt[frontends,backends]

Available frontends$ upt list-frontendscpanpypirubygems

Available backends$ upt list-backendsfedorafreebsdguixnixopenbsd

Package software for any distribution with upt 18/28

Page 45: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

UsageInstall (with modules)$ pip install upt[frontends,backends]

Available frontends$ upt list-frontendscpanpypirubygems

Available backends$ upt list-backendsfedorafreebsdguixnixopenbsd

Package software for any distribution with upt 18/28

Page 46: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Usage

Package upt for OpenBSD$ upt package -f pypi -b openbsd -o /tmp/py-upt upt[INFO ] [Backend] Creating the directory \

structure in /tmp/py-upt[INFO ] [Backend] Creating the Makefile[INFO ] [Backend] Creating pkg/DESCR[INFO ] [Backend] You still need to create \

/tmp/py-upt/distinfo[INFO ] [Backend] You still need to create \

/tmp/py-upt/pkg/PLIST

Package software for any distribution with upt 19/28

Page 47: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Usage$ less /tmp/py-upt/Makefile# $OpenBSD$COMMENT= package software from any package manager to any distributionMODPY_EGG_VERSION= 0.4.1DISTNAME= upt-${MODPY_EGG_VERSION}PKGNAME= py-upt-${MODPY_EGG_VERSION}CATEGORIES= XXXHOMEPAGE= https://framagit.org/upt/uptMAINTAINER= XXX <[email protected]># BSD-3-ClausePERMIT_PACKAGE_CDROM = YesMODULES= lang/pythonMODPY_SETUPTOOLS= YesMODPY_PI= YesRUN_DEPENDS= xxx/py-spdx-lookup${MODPY_FLAVOR}.include <bsd.port.mk>

Package software for any distribution with upt 20/28

Page 48: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Usage$ upt package -f pypi -b nix upt{ stdenv, buildPythonPackage, fetchPypi, spdx-lookup }:buildPythonPackage rec {

name = "${pname}-${version}";version = "0.4.1";pname = "upt";src = fetchPypi {

inherit pname version;sha256 = "TODO";

};propagatedBuildInputs = [ spdx-lookup ];meta = with stdenv.lib; {

description = ...homepage = https://framagit.org/upt/upt;license = [ licenses.bsd3 ];

}}Package software for any distribution with upt 21/28

Page 49: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Modularity

One module (backend or frontend) -> one Git repo

Easier for “small” projectsMore independence

Package software for any distribution with upt 22/28

Page 50: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Modularity

One module (backend or frontend) -> one Git repoEasier for “small” projects

More independence

Package software for any distribution with upt 22/28

Page 51: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Modularity

One module (backend or frontend) -> one Git repoEasier for “small” projectsMore independence

Package software for any distribution with upt 22/28

Page 52: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Add a backend or frontend$ cookiecutter https://framagit.org/upt/cookiecutter-uptproject_name []: upt-archlinuxproject_slug [upt_archlinux]:author []: John Doeemail []: [email protected]_description []: Arch Linux backend for upt.url [https://framagit.org/upt/upt-archlinux]:Select license:1 - BSD-32 - otherChoose from 1, 2 (1, 2) [1]: 1Select kind:1 - backend2 - frontendChoose from 1, 2 (1, 2) [1]: 1Initialized empty Git repository in /tmp/upt-archlinux/.git/

Package software for any distribution with upt 23/28

Page 53: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 24/28

Page 54: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

A different approcah

Ruby

Modules are distributed along with the coreGenerates a .rpm instead of a .spec (or .deb instead of adebian/ folder)Useful for users who need to use their distro’s package managerNot the best tool for package maintainers?

Package software for any distribution with upt 25/28

Page 55: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

A different approcah

RubyModules are distributed along with the core

Generates a .rpm instead of a .spec (or .deb instead of adebian/ folder)Useful for users who need to use their distro’s package managerNot the best tool for package maintainers?

Package software for any distribution with upt 25/28

Page 56: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

A different approcah

RubyModules are distributed along with the coreGenerates a .rpm instead of a .spec (or .deb instead of adebian/ folder)

Useful for users who need to use their distro’s package managerNot the best tool for package maintainers?

Package software for any distribution with upt 25/28

Page 57: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

A different approcah

RubyModules are distributed along with the coreGenerates a .rpm instead of a .spec (or .deb instead of adebian/ folder)Useful for users who need to use their distro’s package manager

Not the best tool for package maintainers?

Package software for any distribution with upt 25/28

Page 58: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

A different approcah

RubyModules are distributed along with the coreGenerates a .rpm instead of a .spec (or .deb instead of adebian/ folder)Useful for users who need to use their distro’s package managerNot the best tool for package maintainers?

Package software for any distribution with upt 25/28

Page 59: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Outline

1 Packaging

2 Automation

3 The Universal Packaging Tool

4 fpm

5 Conclusion

Package software for any distribution with upt 26/28

Page 60: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Future work

More modules (written by you?)

Type hintsNeed a standard format for all upstream package archives

Package software for any distribution with upt 27/28

Page 61: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Future work

More modules (written by you?)Type hints

Need a standard format for all upstream package archives

Package software for any distribution with upt 27/28

Page 62: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Future work

More modules (written by you?)Type hintsNeed a standard format for all upstream package archives

Package software for any distribution with upt 27/28

Page 63: Package software for any distribution with upt · Outline 1 Packaging 2 Automation 3 TheUniversalPackagingTool 4 fpm 5 Conclusion Package software for any distribution with upt 3/28

Join me!

Code: https://framagit.org/uptEmails: [email protected], [email protected]: #upt-packaging, SteapQuestions?

Package software for any distribution with upt 28/28