From ce869b710c3a847dc7b416fd4e6bb3e99b1170e2 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 10 Jan 2012 07:53:42 -0500 Subject: Add source package format 1.0 draft specification. --- 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 +=================== + +_-/ + +- .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. + +- _. + | 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. -- cgit v0.9.1