summaryrefslogtreecommitdiffstats
path: root/source-package-format-1.0.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source-package-format-1.0.txt')
-rw-r--r--source-package-format-1.0.txt95
1 files changed, 95 insertions, 0 deletions
diff --git a/source-package-format-1.0.txt b/source-package-format-1.0.txt
new file mode 100644
index 0000000..1af04c7
--- /dev/null
+++ b/source-package-format-1.0.txt
@@ -0,0 +1,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.