The linux-packaging Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The linux-packaging Reference Manual

This is the linux-packaging Reference Manual, generated automatically by Declt version 3.0 "Montgomery Scott" on Wed Nov 04 14:04:39 2020 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

linux-packaging

This library lets you distribute your Lisp applications by linux packages for the following distributions:

All you need to do is declaring this in your .asd:

(defsystem "foo-deb"
  :defsystem-depends-on ("linux-packaging")
  :class "linux-packaging:deb"
  :build-operation "linux-packaging:build-op"
  :depends-on ("foo")
  :package-name "foo"
  :package-version "1.0.0"
  :build-pathname "foo"
  :entry-point "foo:main")

Compile with sbcl --eval '(asdf:make :foo-deb)', et voila.

What's even more cool? If your application relies on shared libraries, such as libsqlite, linux-packaging will automatically detect that and add the appropriate dependencies to your package. When your package will be installed, the appropriate dependencies will be installed alongside it, thanks to apt/dnf/yum/pacman/etc.

What's even more cool? If your application relies on CFFI grovel or wrapper files, such as the one built by osicat, those files will be statically embedded into your binary.

Both of those mean that you can write any Lisp application using CFFI, and your built packages will be installable by anyone using those distributions.

This is similar to what Deploy is doing. This library is doing great work, by the way. But the approach taken by linux-packaging is slightly different.

Deploy is essentially taking this approach:

And the user has to somehow figure out how to "install" that archive.

linux-packaging is taking another approach:

Installing your Lisp application then becomes a procedure that every user of your distribution already knows.

This is an approach that plays more nicely with how distributions typically want their packages to be: relying on shared libraries as much as possible, so that updating the shared library doesn't mean having to rebuild your application.

As opposed to Deploy, the downsides of linux-packaging are:

The last point can seem daunting, but is not actually so. See the .gitlab-ci.yml file of this repository for a couple of examples, but the gist of it is that Docker and friends make it easy.

Reference

This is a reference of all the available options that you can use your .asd file, as well as their description.

class

:class is actually a default ASDF attribute. It lets you define another class for the system definition. You need to pick one of those:

build-operation

:build-operation is another default ASDF attribute. You need to set it to linux-packaging:build-op.

author

:author is another default ASDF attribute, but it is used to define the package's author/maintainer.

license

:license is another default ASDF attribute, used to define the package's license as well.

package-name

Defines the linux package name. If not specified, the system name is used. (In the example above, it would be foo-deb.)

package-version

Defines the version of the package. If not specified, linux-packaging will try looking in the VERSION environment variable, or fallback to 1.0.0.

additional-files

If you want to provide files in addition to the Lisp image, such as icons, documentation, etc, you can specify an alist of this kind:

:additional-files (("file/path/during/build" . "folder/to/install/at/"))

License

MIT License.


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Next: , Previous: , Up: Systems   [Contents][Index]

2.1 linux-packaging

Author

Florian Margaine <florian@margaine.com>

License

MIT

Description

ASDF extension to generate linux packages.

Defsystem Dependency

wild-package-inferred-system

Dependencies
Source

linux-packaging.asd (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.2 linux-packaging/*

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependencies
Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.3 linux-packaging/main

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependencies
Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.4 linux-packaging/deb

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependencies
Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.5 linux-packaging/pacman

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependencies
Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Next: , Previous: , Up: Systems   [Contents][Index]

2.6 linux-packaging/rpm

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependency

linux-packaging/package (system)

Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Previous: , Up: Systems   [Contents][Index]

2.7 linux-packaging/package

Author

Florian Margaine <florian@margaine.com>

License

MIT

Dependencies
Source

linux-packaging.asd (file)

Component

lisp.lisp (file)


Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 linux-packaging.asd

Location

linux-packaging.asd

Systems

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 linux-packaging/*/lisp.lisp

Parent

linux-packaging/* (system)

Location

/home/quickref/.cache/common-lisp/sbcl-1.5.8-linux-x64/home/quickref/quicklisp/dists/quicklisp/software/linux-packaging-20200715-git/__WILD_SYSTEM__/linux-packaging_SL_WILD.lisp

Packages

linux-packaging/*


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 linux-packaging/main/lisp.lisp

Parent

linux-packaging/main (system)

Location

main.lisp

Packages

linux-packaging/main


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 linux-packaging/deb/lisp.lisp

Parent

linux-packaging/deb (system)

Location

deb.lisp

Packages

linux-packaging/deb

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 linux-packaging/pacman/lisp.lisp

Parent

linux-packaging/pacman (system)

Location

pacman.lisp

Packages

linux-packaging/pacman

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 linux-packaging/rpm/lisp.lisp

Parent

linux-packaging/rpm (system)

Location

rpm.lisp

Packages

linux-packaging/rpm

Exported Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.7 linux-packaging/package/lisp.lisp

Parent

linux-packaging/package (system)

Location

package.lisp

Packages

linux-packaging/package

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 linux-packaging/*

Source

lisp.lisp (file)

Use List

Next: , Previous: , Up: Packages   [Contents][Index]

4.2 linux-packaging/main

Source

lisp.lisp (file)

Nickname

linux-packaging

Use List
Used By List

linux-packaging/*


Next: , Previous: , Up: Packages   [Contents][Index]

4.3 linux-packaging/deb

Source

lisp.lisp (file)

Use List
Used By List
Exported Definitions

deb (class)


Next: , Previous: , Up: Packages   [Contents][Index]

4.4 linux-packaging/pacman

Source

lisp.lisp (file)

Use List
Used By List
Exported Definitions

pacman (class)


Next: , Previous: , Up: Packages   [Contents][Index]

4.5 linux-packaging/rpm

Source

lisp.lisp (file)

Use List
Used By List
Exported Definitions

rpm (class)


Previous: , Up: Packages   [Contents][Index]

4.6 linux-packaging/package

Source

lisp.lisp (file)

Use List

common-lisp

Used By List
Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Generic functions

Generic Function: package-type OBJECT
Package

linux-packaging/package

Methods
Method: package-type (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)

Generic Function: path->package LINUX-PACKAGE PATH

Returns the package a file belongs to.

Package

linux-packaging/package

Source

lisp.lisp (file)

Methods
Method: path->package (S pacman) PATH
Source

lisp.lisp (file)

Method: path->package (S rpm) PATH
Source

lisp.lisp (file)

Method: path->package (S deb) PATH
Source

lisp.lisp (file)

Generic Function: system-dependencies LINUX-PACKAGE

Returns the dependencies that every Lisp image relies on.

Package

linux-packaging/package

Source

lisp.lisp (file)

Methods
Method: system-dependencies (S pacman)
Source

lisp.lisp (file)

Method: system-dependencies (S rpm)
Source

lisp.lisp (file)

Method: system-dependencies (S deb)
Source

lisp.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Classes

Class: build-op ()
Package

linux-packaging/package

Source

lisp.lisp (file)

Direct superclasses

static-program-op (class)

Direct methods

perform (method)

Class: deb ()
Package

linux-packaging/deb

Source

lisp.lisp (file)

Direct superclasses

linux-package (class)

Direct methods
Direct slots
Slot: package-type
Initform

"deb"

Class: linux-package ()
Package

linux-packaging/package

Source

lisp.lisp (file)

Direct superclasses

system (class)

Direct subclasses
Direct methods
Direct slots
Slot: package-name
Initargs

:package-name

Readers

pkg-name (generic function)

Slot: package-version
Initargs

:package-version

Readers

version (generic function)

Slot: ignored-libraries
Initargs

:ignored-libraries

Readers

ignored-libraries (generic function)

Slot: additional-files
Initargs

:additional-files

Readers

additional-files (generic function)

Slot: verbose
Initargs

:verbose

Readers

verbose (generic function)

Slot: package-type
Readers

package-type (generic function)

Class: pacman ()
Package

linux-packaging/pacman

Source

lisp.lisp (file)

Direct superclasses

linux-package (class)

Direct methods
Direct slots
Slot: package-type
Initform

"pacman"

Class: rpm ()
Package

linux-packaging/rpm

Source

lisp.lisp (file)

Direct superclasses

linux-package (class)

Direct methods
Direct slots
Slot: package-type
Initform

"rpm"


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Macros

Macro: d SYSTEM &rest ARGS
Package

linux-packaging/package

Source

lisp.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Functions

Function: additional-file->argument ADDITIONAL-FILE
Package

linux-packaging/package

Source

lisp.lisp (file)

Function: cat &rest ARGS
Package

linux-packaging/package

Source

lisp.lisp (file)

Function: is-ignored SYSTEM LIBRARY
Package

linux-packaging/package

Source

lisp.lisp (file)

Function: last-elt SEQUENCE
Package

linux-packaging/package

Source

lisp.lisp (file)

Function: ldconfig ()
Package

linux-packaging/package

Source

lisp.lisp (file)

Function: right-pad CHAR HAYSTACK
Package

linux-packaging/package

Source

lisp.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Generic functions

Generic Function: additional-files OBJECT
Package

linux-packaging/package

Methods
Method: additional-files (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)

Generic Function: find-dependencies SYSTEM
Package

linux-packaging/package

Methods
Method: find-dependencies (SYSTEM linux-package)
Source

lisp.lisp (file)

Generic Function: ignored-libraries OBJECT
Package

linux-packaging/package

Methods
Method: ignored-libraries (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)

Generic Function: pkg-name OBJECT
Package

linux-packaging/package

Methods
Method: pkg-name (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)

Generic Function: verbose OBJECT
Package

linux-packaging/package

Methods
Method: verbose (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)

Generic Function: version OBJECT
Package

linux-packaging/package

Methods
Method: version (LINUX-PACKAGE linux-package)

automatically generated reader method

Source

lisp.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L  
Index Entry  Section

F
File, Lisp, linux-packaging.asd: The linux-packaging․asd file
File, Lisp, linux-packaging/*/lisp.lisp: The linux-packaging/*/lisp․lisp file
File, Lisp, linux-packaging/deb/lisp.lisp: The linux-packaging/deb/lisp․lisp file
File, Lisp, linux-packaging/main/lisp.lisp: The linux-packaging/main/lisp․lisp file
File, Lisp, linux-packaging/package/lisp.lisp: The linux-packaging/package/lisp․lisp file
File, Lisp, linux-packaging/pacman/lisp.lisp: The linux-packaging/pacman/lisp․lisp file
File, Lisp, linux-packaging/rpm/lisp.lisp: The linux-packaging/rpm/lisp․lisp file

L
linux-packaging.asd: The linux-packaging․asd file
linux-packaging/*/lisp.lisp: The linux-packaging/*/lisp․lisp file
linux-packaging/deb/lisp.lisp: The linux-packaging/deb/lisp․lisp file
linux-packaging/main/lisp.lisp: The linux-packaging/main/lisp․lisp file
linux-packaging/package/lisp.lisp: The linux-packaging/package/lisp․lisp file
linux-packaging/pacman/lisp.lisp: The linux-packaging/pacman/lisp․lisp file
linux-packaging/rpm/lisp.lisp: The linux-packaging/rpm/lisp․lisp file
Lisp File, linux-packaging.asd: The linux-packaging․asd file
Lisp File, linux-packaging/*/lisp.lisp: The linux-packaging/*/lisp․lisp file
Lisp File, linux-packaging/deb/lisp.lisp: The linux-packaging/deb/lisp․lisp file
Lisp File, linux-packaging/main/lisp.lisp: The linux-packaging/main/lisp․lisp file
Lisp File, linux-packaging/package/lisp.lisp: The linux-packaging/package/lisp․lisp file
Lisp File, linux-packaging/pacman/lisp.lisp: The linux-packaging/pacman/lisp․lisp file
Lisp File, linux-packaging/rpm/lisp.lisp: The linux-packaging/rpm/lisp․lisp file

Jump to:   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   A   C   D   F   G   I   L   M   P   R   S   V  
Index Entry  Section

A
additional-file->argument: Internal functions
additional-files: Internal generic functions
additional-files: Internal generic functions

C
cat: Internal functions

D
d: Internal macros

F
find-dependencies: Internal generic functions
find-dependencies: Internal generic functions
Function, additional-file->argument: Internal functions
Function, cat: Internal functions
Function, is-ignored: Internal functions
Function, last-elt: Internal functions
Function, ldconfig: Internal functions
Function, right-pad: Internal functions

G
Generic Function, additional-files: Internal generic functions
Generic Function, find-dependencies: Internal generic functions
Generic Function, ignored-libraries: Internal generic functions
Generic Function, package-type: Exported generic functions
Generic Function, path->package: Exported generic functions
Generic Function, pkg-name: Internal generic functions
Generic Function, system-dependencies: Exported generic functions
Generic Function, verbose: Internal generic functions
Generic Function, version: Internal generic functions

I
ignored-libraries: Internal generic functions
ignored-libraries: Internal generic functions
is-ignored: Internal functions

L
last-elt: Internal functions
ldconfig: Internal functions

M
Macro, d: Internal macros
Method, additional-files: Internal generic functions
Method, find-dependencies: Internal generic functions
Method, ignored-libraries: Internal generic functions
Method, package-type: Exported generic functions
Method, path->package: Exported generic functions
Method, path->package: Exported generic functions
Method, path->package: Exported generic functions
Method, pkg-name: Internal generic functions
Method, system-dependencies: Exported generic functions
Method, system-dependencies: Exported generic functions
Method, system-dependencies: Exported generic functions
Method, verbose: Internal generic functions
Method, version: Internal generic functions

P
package-type: Exported generic functions
package-type: Exported generic functions
path->package: Exported generic functions
path->package: Exported generic functions
path->package: Exported generic functions
path->package: Exported generic functions
pkg-name: Internal generic functions
pkg-name: Internal generic functions

R
right-pad: Internal functions

S
system-dependencies: Exported generic functions
system-dependencies: Exported generic functions
system-dependencies: Exported generic functions
system-dependencies: Exported generic functions

V
verbose: Internal generic functions
verbose: Internal generic functions
version: Internal generic functions
version: Internal generic functions

Jump to:   A   C   D   F   G   I   L   M   P   R   S   V  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   A   I   P   S   V  
Index Entry  Section

A
additional-files: Exported classes

I
ignored-libraries: Exported classes

P
package-name: Exported classes
package-type: Exported classes
package-type: Exported classes
package-type: Exported classes
package-type: Exported classes
package-version: Exported classes

S
Slot, additional-files: Exported classes
Slot, ignored-libraries: Exported classes
Slot, package-name: Exported classes
Slot, package-type: Exported classes
Slot, package-type: Exported classes
Slot, package-type: Exported classes
Slot, package-type: Exported classes
Slot, package-version: Exported classes
Slot, verbose: Exported classes

V
verbose: Exported classes

Jump to:   A   I   P   S   V  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   B   C   D   L   P   R   S  
Index Entry  Section

B
build-op: Exported classes

C
Class, build-op: Exported classes
Class, deb: Exported classes
Class, linux-package: Exported classes
Class, pacman: Exported classes
Class, rpm: Exported classes

D
deb: Exported classes

L
linux-package: Exported classes
linux-packaging: The linux-packaging system
linux-packaging/*: The linux-packaging/* system
linux-packaging/*: The linux-packaging/* package
linux-packaging/deb: The linux-packaging/deb system
linux-packaging/deb: The linux-packaging/deb package
linux-packaging/main: The linux-packaging/main system
linux-packaging/main: The linux-packaging/main package
linux-packaging/package: The linux-packaging/package system
linux-packaging/package: The linux-packaging/package package
linux-packaging/pacman: The linux-packaging/pacman system
linux-packaging/pacman: The linux-packaging/pacman package
linux-packaging/rpm: The linux-packaging/rpm system
linux-packaging/rpm: The linux-packaging/rpm package

P
Package, linux-packaging/*: The linux-packaging/* package
Package, linux-packaging/deb: The linux-packaging/deb package
Package, linux-packaging/main: The linux-packaging/main package
Package, linux-packaging/package: The linux-packaging/package package
Package, linux-packaging/pacman: The linux-packaging/pacman package
Package, linux-packaging/rpm: The linux-packaging/rpm package
pacman: Exported classes

R
rpm: Exported classes

S
System, linux-packaging: The linux-packaging system
System, linux-packaging/*: The linux-packaging/* system
System, linux-packaging/deb: The linux-packaging/deb system
System, linux-packaging/main: The linux-packaging/main system
System, linux-packaging/package: The linux-packaging/package system
System, linux-packaging/pacman: The linux-packaging/pacman system
System, linux-packaging/rpm: The linux-packaging/rpm system

Jump to:   B   C   D   L   P   R   S