summaryrefslogtreecommitdiffstats
path: root/source-package-format-1.0.txt
blob: 1af04c712aad8dfdee6071a8debabad0c015a89d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
ABOUT THIS DOCUMENT
===================

This document describes version 1.0 of the format for software source packages.


LEGAL NOTICE
============

Copyright (C) 2012 Patrick (P. J.) McDermott

This document may be reproduced, distributed, modified, and otherwise dealt in
under the terms of the Expat/MIT License:
http://www.jclark.com/xml/copying.txt


SPECIFICATION STATUS
====================

This specification is in draft status.  It is a work-in-progress and is subject
to change.  Comments and revisions are welcome.


BACKGROUND AND RATIONALE
========================

A source package consists of software source code, a build system, and package
metadata.  From it is built one or more binary packages, which can be installed
into an operating system.  These binary packages are managed by a "package
manager", a program or set of programs that tracks, installs, removes, and
upgrades software packages on a system.

The package manager we are using is opkg, a small and lightweight package
manager.  Its binary package format resembles that of the dpkg package manager
used in Debian and Debian-based operating system distrubutions.  

Version 1.0 of our source package format is intended to resemble the package
format of the OpenBricks Embedded Linux Framework.  Unlike the OpenBricks
format, however, this format is designed to support the building of multiple
binary packages from one source package.  Additionally, source packages in this
format are intended to be maintained independently rather than in one monolithic
software repository (such as that of OpenBricks).  In these and other respects,
this format draws inspiration from Debian's source package formats.


DIRECTORY STRUCTURE
===================

<pkgname>_<pkgver>-<pkgrev>/
 +- <binpkg>.pkg/
 |   +- build
 |   |    A script to build the binary package.
 |   +- control
 |   |    Metadata about the binary package.
 |   +- install
 |   |    A script to install the binary package.
 |   +- postinst
 |   +- postrm
 |   +- preinst
 |   \- prerm
 +- control
 |    Metadata about the source package.
 +- format
 |    A magic file to identify the source format version.  Should simply contain
 |    the string "1.0".
 +- patches/
 |    Patches to be applied to package sources before building.
 +- <pkgname>_<pkgver>.<ext>
 |    Upstream source archive (for non-native packages).
 \- src/
      Package sources (for native packages).

'install' might be replaced by a file or files similar to 'dirs' and 'install'
of Debian packages.

'build' and 'install' in the binary package directory might be combined into a
dpkg-style make file with targets for building and installing.


BINARY PACKAGE METADATA
=======================

Refer to documentation for APT and opkg.


SOURCE PACKAGE METADATA
=======================

The format of the source package metadata is to be determined.  It should
resemble either Debian package control file syntax or OpenBricks package
metadata file (shell script) syntax.

Metadata will include information necessary to maintain the source package and
build the binary package(s).  Fields will include the upstream source, build
dependencies, and maintainer contact information.