changeset 714:6b4ba668a43c

vanilla: update documentation
author David Demelier <markand@malikania.fr>
date Fri, 02 Aug 2019 21:20:00 +0200
parents 393525a3ecc3
children 150598ec37e7
files CHANGES.md Docs/licenses.md Docs/manual.md Docs/options.md Docs/uids.md HOWTO.md README.md UIDS.md
diffstat 8 files changed, 436 insertions(+), 394 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES.md	Fri Aug 02 21:15:00 2019 +0200
+++ b/CHANGES.md	Fri Aug 02 21:20:00 2019 +0200
@@ -4,6 +4,10 @@
 Vanilla Linux current
 ------------------------------
 
+### 2019-07-19
+
+OpenSSL has been replaced by LibreSSL.
+
 ### 2019-04-10
 
 Vanilla does not follow FHS anymore, /usr directory has been removed, /bin and
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Docs/licenses.md	Fri Aug 02 21:20:00 2019 +0200
@@ -0,0 +1,31 @@
+Available licenses
+==================
+
+Use the following licenses in *PKGLICENSE* variable or CUSTOM.
+
+- AGPLv3
+- AGPLv3+
+- APACHE10
+- APACHE11
+- APACHE20
+- BOOST
+- BSD
+- BSD2CLAUSE
+- BSD3CLAUSE
+- BSD4CLAUSE
+- GFDL
+- GPLv1
+- GPLv1+
+- GPLv2
+- GPLv2+
+- GPLv3
+- GPLv3+
+- ISC
+- LGPLv20
+- LGPLv20+
+- LGPLv21
+- LGPLv21+
+- LGPLv3
+- LGPLv3+
+- MIT
+- UNLICENSE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Docs/manual.md	Fri Aug 02 21:20:00 2019 +0200
@@ -0,0 +1,294 @@
+Getting started
+===============
+
+This documentation explains how to write a package file from scratch.
+
+Synopsis
+========
+
+Each package lives under a dedicated directory broken down into several
+categories. A package consists of the following files:
+
+- NAME.sh: a pure POSIX shell that process the build and contains some
+  metadata required for installation.
+- NAME.sha1: contains the checksums for individual source files (Optional).
+- NAME-post.sh: a script to be executed before/after the installation
+  (Optional).
+
+In the listing above, replace NAME with the actual package name. For example the
+package *zlib* contains the following files:
+
+- compression/zlib/zlib.sh
+- compression/zlib/zlib.sha1
+
+The build script
+================
+
+The build script (NAME.sh) is a pure POSIX shell that defines various
+information about the package and how to build it. To be included within the
+official Vanilla Linux repository it must be licensed under the terms of the ISC
+license.
+
+Several templates are already available for most build systems in the Templates
+directory.
+
+Metadata
+--------
+
+A package requires several information to be installed, the following variables
+must be present:
+
+- PKGNAME: the package name (same as the directory).
+- PKGVERSION: the package upstream version.
+- PKGREVISION: the initial revision (starts at 1).
+- PKGLICENSE: a space separated list of licenses (see licenses.md file).
+- PKGSUMMARY: a short summary.
+
+The following variables are optional
+
+- PKGDEPENDS: a space separated list of packages required to build (see below). 
+- PKGDOWNLOAD: a space separated list of files to download from the web, if the
+  package does not need to download anything don't set it.
+- PKGUIDS: a space separated list of uid to create (see below)
+- PKGGIDS: a space separated list of gid to create (see below)
+- PKGPROTECT: a space separated list of relative path to files to preserve on
+  installation (e.g. etc/nginx/nginx.conf)
+- PKGOPTIONS: a space separated list of CAPITALIZED options.
+
+Build
+-----
+
+To build the package, you need to define a build function that install the
+package into the $DESTDIR variable.
+
+Usually, the build function does:
+
+1. Clean the build directory in case the previous build failed.
+2. Extract distribution files.
+3. Process build and installs into $DESTDIR.
+4. Clean up again the build directory.
+
+Package naming
+==============
+
+The following prefixes must be used for those packages:
+
+- py-: for python modules.
+- py2-: for python modules (only for exceptional cases).
+- ruby-: for native ruby modules.
+- rubygem-: for rubygems modules.
+- p5-: for perl 5 modules.
+- hs-: for haskell modules.
+- font-: for fonts (of any kind).
+
+When a package is available with different versions (e.g. Gtk, Qt) we add the
+major number as suffix to the PKGNAME to *old* versions. Example, if Qt 5 is the
+current major version and Qt 4 is also shipped then, the package *qt* refers to
+version 5 while *qt4* to version 4.
+
+Handling dependencies
+=====================
+
+The variable *PKGDEPENDS* is filled up with package origins, thus you need to
+write *lib/zlib* NOT *zlib*.
+
+Also, the following selectors may be appended to the dependency to alter the
+meaning:
+
+- `:build` the dependency is only required for building,
+- `:optional` the dependency is optional and not strictly required.
+- `:recommended` same as optional but installed by default.
+
+Example:
+
+	PKGDEPENDS="dev/cmake:build graphics/qt5:recommended lib/zlib"
+
+Protected files
+===============
+
+Configuration files (usually everything under /etc) must be marked as well in
+*PKGPROTECT* variables. This prevents `vpk` for overriding user configurations.
+
+Note: if the package ships a init script file, it must be marked as well.
+
+Example:
+
+	PKGPROTECT="etc/nginx.conf etc/rc.d/nginx"
+
+In this case, `vpk` will rename the file to *etc/nginx.conf.vpk* and
+*/etc/rc.d/nginx.vpk* in the archive and only be renamed if they are not present
+on the disk or not manually modified.
+
+Uids / Gids
+===========
+
+If the package requires UNIX users and groups, adapt the *PKGUIDS* and *PKGGIDS*
+variables as a space separated list. You can assign a default numeric id using
+the syntax `:number`.
+
+Example:
+
+	PKGUIDS="messagebus" # vpk will assign an id
+	PKGUIDS="gdm:55"     # vpk will use 55
+
+Warning: if you need to change file permissions, do it *ONLY* in a post install
+script as users may have set different numeric id than the package defaults.
+
+Once you need a new UID/GID, edit the file UIDS.md in this directory as well.
+
+Options
+=======
+
+...
+
+Example with network/wget:
+
+	# cd network/wget
+	# SSL=openssl NLS=no vpk build
+
+Add the desired options in *PKGOPTIONS* variable and don't forget to set default
+values.
+
+Example with NLS
+
+	PKGOPTIONS="NLS"
+
+	: ${NLS:=yes}
+
+	if [ "$NLS" = "yes" ]; then
+		PKGDEPENDS="core/gettext $PKGDEPENDS"
+		with_nls="--enable-nls"
+	else
+		with_nls="--disable-nls"
+	fi
+
+Then at configure step:
+
+	./configure $with_nls
+
+Proper handling of options is done by explicitly disabling/enabling options.
+Most programs will try to enable/disable features depending on what is available
+on the system thus, if the package finds a dependency and enable it you need to
+adapt *PKGDEPENDS*. Always check what options are available in the package and
+use their default as explicit knobs to avoid invisible dependencies.
+
+See the file options.md for predefined options and proper naming.
+
+Paths
+=====
+
+The package must ensure appropriate directories for installing files. This
+includes:
+
+- /etc/rc.d for service files
+- /lib/pkgconfig: for .pc files
+- /lib/cmake: for CMake config files
+- /lib: for libraries (no lib64 suffix)
+- /share/locale: for NLS files
+- /share/man/man{1,2,3,4,5,6,7,8}: for man pages (in uncompressed form)
+- /share/doc/PKGNAME (exact directory, no version)
+
+Keep neutral
+============
+
+Do not make any modifications to the package. Keep it as close to upstream as
+possible. Only minor tweaks are allowed including:
+
+- adjusting pid/uid/gid in a default configuration file for easier deployment
+  (but not on the original file example)
+- disabling static libraries
+- making sure paths are consolidated
+- making sure system libraries are used rather than in-source bundles
+
+Services
+========
+
+Services files must be installed in /etc/rc.d. You must use the following
+conventions regarding messages the service will print.
+
+The script must at least support start, stop and restart.
+
+#### start (required)
+
+Always add arguments with the invocation.
+
+    Starting foo: /bin/foo -d
+
+#### stop (required)
+
+If the service is not running, don't write any message. Otherwise write:
+
+    Stopping foo.
+
+#### restart (required)
+
+Basically, this command just calls stop and start.
+
+    Stopping foo.
+    Starting foo: /bin/foo -d
+
+#### status
+
+Depending on the status, write the following messages.
+
+    foo is running with pid: 1234
+    foo is not running
+
+#### usage
+
+If the script is invoked with invalid arguments or none, write the usage like
+this through stderr and exit 1. Also keep all subcommands sorted.
+
+    usage: foo restart|start|status|stop
+
+If your script may support additional operations, messages and usage are up to
+the maintainer discretion.
+
+See also the template file in Templates/rc.
+
+Libraries
+=========
+
+Do not ship static libraries and libtool files. Make sure your build script
+suppress static builds if possible or delete the .a file.
+
+Note: the C and C++ library are shipped for technical reasons though.
+
+Post install scripts
+====================
+
+If you need to perform some custom steps after the installation of the binary
+package in the target systems, you may create the NAME-post.sh script. This
+script must be written also in pure POSIX shell language.
+
+As unique argument, `vpk` will provide one of these to the post script:
+
+- pre-install: before the extraction of the package.
+- post-install: after the extraction of the package.
+- pre-uninstall: before removing the package.
+- post-uninstall: after the removal of the package.
+
+Note: if the package wants to call a binary from an other package, it is usually
+a good idea to check it's presence first.
+
+Example:
+
+	#!/bin/sh
+
+	if [ -x /bin/gtk-update-icon-cache ]; then
+		gtk-update-icon-cache -vf /share/icons/hicolor
+	fi
+
+Desktop files
+=============
+
+We usually never add .desktop files for any package that doesn't provide one by
+itself. This also includes terminal based applications.
+
+If a .desktop is provided by the package, make sure though that it is valid and
+specifies the appropriate category (i.e. it does not appear in multiple menus at
+once).
+
+See [desktop entry specification][] for more information.
+
+[desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Docs/options.md	Fri Aug 02 21:20:00 2019 +0200
@@ -0,0 +1,86 @@
+Available options
+=================
+
+Use the following predefined options before creating your own.
+
+- ACL: enable access control list support
+- BLUETOOTH: enable bluetooth support
+- BZIP2: enable bzip2 compression support
+- DBUS: enable D-Bus support
+- DOXYGEN: enable doxygen documentation support
+- DRM: enable direct rendering manager support
+- DTD: enable XML validation support
+- EGL: enable EGL support
+- FLAC: enable flac support
+- FONTCONFIG: enable fontconfig support
+- FREETYPE: enable freetype support
+- GALLIUM: enable LLVM gallium support
+- GDBM: enable GNU database support
+- GLAMOR: enable 2D graphics support
+- GLES1: enable GLES1 support
+- GLES2: enable GLES2 support
+- GLES3: enable GLES3 support
+- GMP: enable GNU multiple precision library
+- GTK2: enable Gtk 2 toolkit support
+- GTK3: enable Gtk 3 toolkit support
+- GTK4: enable Gtk 4 toolkit support
+- GUILE: enable GNU guile support
+- IDN2: enable libidn2 support
+- KMS: enable kernel mode settings support
+- LEGACY: enable obsolete or deprecated features
+- LLVM: enable LLVM support
+- LZ4: enable lz4 compression support
+- LZMA: enable lzma compression support
+- MIDI: enable midi support
+- MNL: enable netlink minimalistic library support
+- NLS: enable native language support
+- OGG: enable libogg support
+- PAM: enable PAM support
+- PCRE: enable perl-like regular expression support
+- PULSEAUDIO: enable PulseAudio support
+- PYTHON: enable Python 3 bindings or support
+- QT5: enable Qt 5 toolkit support
+- SPHINX: enable sphinx documentation support
+- SSH: enable SSH support
+- SSL: enable SSL/TLS, some packages offer several choices (e.g. openssl, gnutls)
+- UDEV: enable eudev support
+- UUID: enable UUID support
+- VORBIS: enable libvorbis support
+- WACOM: enable wacom support
+- WAYLAND: enable wayland support
+- X: enable X.Org support
+- XML: enable XML support
+- XZ: enable XZ support
+- ZLIB: enable zlib compression support
+- ZSTD: enable zstd compression support
+
+Always try to make an option easy to understand and not package specific. For
+example BLUETOOTH is preferred over BLUEZ because a user knows what bluetooth is
+but may not know that bluez is the current reference implementation. Also, it is
+preferred to make an option generic to allow multiple values in case the
+package offers it.
+
+Example, if a package offers different implementations for SSL, consider the
+option with a value (e.g. SSL=openssl, SSL=gnutls, and such).
+
+Also, if a package offers different implementations that can be enabled all
+together, use a list separated by space (e.g. XML="libxml2 expat").
+
+Those options should only change the package behaviour, for example: manual
+pages or any other resource files that are not strictly required; they must be
+installed and the user may exclude them via `vpk` instead.
+
+Also, options should usually be named in a canonical manner rather than a
+package name. For example, OGG is better than LIBOGG because what the options
+means is enabling the OGG codec support, not specifically the library.
+
+The following options should be available for any package that builds C or C++
+code:
+
+- CBUILD: build system (usually ARCH-linux-musl)
+- CHOST: host system (usually ARCH-linux-musl)
+- CTARGET: target system (usually ARCH-linux-musl)
+- CC: C compiler (defaults to gcc)
+- CFLAGS: C flags (defaults to -O2)
+- CXX: C++ compiler (defaults to g++)
+- CXXFLAGS: C++ flags (defaults to -O2)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Docs/uids.md	Fri Aug 02 21:20:00 2019 +0200
@@ -0,0 +1,17 @@
+Vanilla Linux reserved UIDs and GIDs
+====================================
+
+Users and groups are created once needed at package installation. It's perfectly
+safe to reuse the same UID/GID for different packages (example www, mail).
+
+You may think of UID/GID just like a simple package dependency.
+
+The following UID/GID are defined:
+
+| uid           | gid                | package(s)       |
+|---------------|--------------------|------------------|
+| sshd (100)    | sshd (100)         | network/openssh  |
+| polkitd (101) | polkitd (101)      | security/polkit  |
+| pulse (102)   | pulse (102)        | audio/pulseaudio |
+|               | pulse-rt (103)     | audio/pulseaudio |
+|               | pulse-access (104) | audio/pulseaudio |
--- a/HOWTO.md	Fri Aug 02 21:15:00 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-Vanilla Linux HOWTO
-===================
-
-This documentation explains how to write a package file.
-
-Each package lives under a dedicated directory broken down into several
-categories. Change the directory to the desired package and use `vpk build` to
-construct a package. The repository does not contain the distribution files from
-upstream but `vpk build` will download them for you if not present (see also
-`vpk download` command).
-
-Note: vpk build does not handle dependencies.
-
-Example with lib/zlib
-
-	# cd lib/zlib
-	# vpk build
-
-If build succeeded, you can install the package as
-/tmp/vpk/zlib#version-revision-arch.txz
-
-Tip: you can use `vpk build -q` to silent the process.
-
-# How to create a new package
-
-To create a new package, create a directory in the appropriate category
-directory. Then create the sscript file. See Templates directory.
-
-Example, if you want to create a package abc in category lib you must have the
-following files.
-
-lib/abc
-lib/abc/abc.sh
-
-The following variables must be present:
-
-- PKGNAME: the package name
-- PKGVERSION: the package upstream version
-- PKGREVISION: the initial revision (starts at 1)
-- PKGLICENSE: a space separated list of licenses (see README.licenses.md)
-- PKGSUMMARY: a short summary
-
-The following variables are optional
-
-- PKGDEPENDS: a space separated list of packages required to build. Use the
-  syntax category/package for runtime requirement (includes building too) and
-  category/package:build for build requirement only.
-- PKGDOWNLOAD: a space separated list of files to download from the web, if the
-  package does not need to download anything don't set it.
-- PKGUIDS: a space separated list of uid to create
-- PKGGIDS: a space separated list of gid to create
-- PKGPROTECT: a space separated list of relative path to files to preserve on
-  installation (e.g. etc/nginx/nginx.conf)
-- PKGOPTIONS: a space separated list of CAPITALIZED options.
-
-The script file is the build procedure for the package. It must be as simple as
-possible as its sole purpose is to build and install files through the DESTDIR
-variable.
-
-There are already various of templates in the templates/ directory.
-
-# Topics
-
-## Licenses
-
-Use the following licenses in *PKGLICENSE* or CUSTOM.
-
-- AGPLv3
-- AGPLv3+
-- APACHE10
-- APACHE11
-- APACHE20
-- BOOST
-- BSD
-- BSD2CLAUSE
-- BSD3CLAUSE
-- BSD4CLAUSE
-- GFDL
-- GPLv1
-- GPLv1+
-- GPLv2
-- GPLv2+
-- GPLv3
-- GPLv3+
-- ISC
-- LGPLv20
-- LGPLv20+
-- LGPLv21
-- LGPLv21+
-- LGPLv3
-- LGPLv3+
-- MIT
-- UNLICENSE
-
-## Dependencies
-
-The variable *PKGDEPENDS* is filled up with package origins, thus you need to
-write *lib/zlib* NOT *zlib*.
-
-Also, the following qualifiers may be appended to the dependency to alter the
-meaning:
-
-- `:build` the dependency is only required for building,
-- `:optional` the dependency is optional and not strictly required.
-- `:recommended` same as optional but installed by default.
-
-Example:
-
-	PKGDEPENDS="dev/cmake:build graphics/qt5:recommended lib/zlib"
-
-## Configuration files
-
-Configuration files (usually everything under /etc) must be marked as well in
-*PKGPROTECT* variables. This prevents `vpk` for overriding user configurations.
-
-Note: if the package ships a init script file, it must be marked as well.
-
-Example:
-
-	PKGPROTECT="/etc/nginx.conf /etc/rc.d/nginx"
-
-## Uids / Gids
-
-If the package requires UNIX users and groups, adapt the *PKGUIDS* and *PKGGIDS*
-variables as a space separated list. You can assign a default numeric id using
-the syntax `:number`.
-
-Example:
-
-	PKGUIDS="messagebus" # vpk will assign an id
-	PKGUIDS="gdm:55"     # vpk will use 55
-
-Warning: if you need to change file permissions, do it *ONLY* in a post install
-script as users may have set different numeric id than the package defaults.
-
-Once you need a new UID/GID, edit the file UIDS_GIDS.md in the repository
-accordingly.
-
-## Options
-
-Some packages are configurable via compile time options. Check the variable
-PKGOPTIONS in the script file and read the associated documentation for more
-explanation. Options are usually passed as environment variables
-
-Example with network/wget:
-
-	# cd network/wget
-	# SSL=openssl NLS=no vpk build
-
-Add the desired options in *PKGOPTIONS* variable and don't forget to set default
-values.
-
-Example with NLS
-
-	PKGOPTIONS="NLS"
-
-	: ${NLS:=yes}
-
-	if [ "$NLS" = "yes" ]; then
-		PKGDEPENDS="core/gettext $PKGDEPENDS"
-		with_nls="--enable-nls"
-	else
-		with_nls="--disable-nls"
-	fi
-
-Then at configure step:
-
-	./configure $with_nls
-
-Proper handling of options is done by explicitly disabling/enabling options.
-Most programs will try to enable/disable features depending on what is available
-on the system thus, if the package finds a dependency and enable it you need to
-adapt *PKGDEPENDS*. Always check what options are available in the package and
-use their default as explicit knobs to avoid invisible dependencies.
-
-Use the following predefined options before creating your own.
-
-- ACL: enable access control list support
-- BLUETOOTH: enable bluetooth support
-- BZIP2: enable bzip2 compression support
-- DBUS: enable D-Bus support
-- DOXYGEN: enable doxygen documentation support
-- DRM: enable direct rendering manager support
-- DTD: enable XML validation support
-- EGL: enable EGL support
-- FONTCONFIG: enable fontconfig support
-- FREETYPE: enable freetype support
-- GALLIUM: enable LLVM gallium support
-- GDBM: enable GNU database support
-- GLAMOR: enable 2D graphics support
-- GLES2: enable GLES2 support
-- GLES3: enable GLES3 support
-- GMP: enable GNU multiple precision library
-- GTK2: enable Gtk 2 toolkit support
-- GTK3: enable Gtk 3 toolkit support
-- GTK4: enable Gtk 4 toolkit support
-- GUILE: enable GNU guile support
-- IDN2: enable libidn2 support
-- KMS: enable kernel mode settings support
-- LEGACY: enable obsolete or deprecated features
-- LLVM: enable LLVM support
-- LZ4: enable lz4 compression support
-- LZMA: enable lzma compression support
-- MIDI: enable midi support
-- MNL: enable netlink minimalistic library support
-- NLS: enable native language support
-- PAM: enable PAM support
-- PCRE: enable perl-like regular expression support
-- PULSEAUDIO: enable PulseAudio support
-- PYTHON: enable Python 3 bindings or support
-- QT5: enable Qt 5 toolkit support
-- SPHINX: enable sphinx documentation support
-- SSH: enable SSH support
-- SSL: enable SSL/TLS, some packages offer several choices (e.g. openssl, gnutls)
-- UDEV: enable eudev support
-- UUID: enable UUID support
-- WACOM: enable wacom support
-- WAYLAND: enable wayland support
-- X: enable X.Org support
-- XML: enable XML support
-- XZ: enable XZ support
-- ZLIB: enable zlib compression support
-- ZSTD: enable zstd compression support
-
-Always try to make an option easy to understand and not package specific. For
-example BLUETOOTH is preferred over BLUEZ because a user knows what bluetooth is
-but may not know that bluez is the current reference implementation. Also, it is
-preferred to make an option generic to allow multiple values in case the
-package offers it.
-
-Example, if a package offers different implementations for SSL, consider the
-option with a value (e.g. SSL=openssl, SSL=gnutls, and such).
-
-Also, if a package offers different implementations that can be enabled all
-together, use a list separated by space (e.g. XML="libxml2 expat").
-
-Those options should only change the package behaviour, for example: manual
-pages or any other resource files that are not strictly required; they must be
-installed and the user may exclude them via `vpk` instead.
-
-The following options should be available for any package that builds C or C++
-code:
-
-- CBUILD: build system (usually ARCH-linux-musl)
-- CHOST: host system (usually ARCH-linux-musl)
-- CTARGET: target system (usually ARCH-linux-musl)
-- CC: C compiler (defaults to gcc)
-- CFLAGS: C flags (defaults to -O2)
-- CXX: C++ compiler (defaults to g++)
-- CXXFLAGS: C++ flags (defaults to -O2)
-
-## Keep neutral
-
-Do not make any modifications to the package. Keep it as close to upstream as
-possible. Only minor tweaks are allowed including:
-
-- adjusting pid/uid/gid in a default configuration file for easier deployment
-  (but not on the original file example)
-- disabling static libraries
-- making sure paths are consolidated
-- making sure system libraries are used rather than in-source bundles
-
-## Package naming
-
-The following prefixes must be used for those packages:
-
-- py-: for python modules
-- ruby-: for native ruby modules
-- rubygem-: for rubygems modules
-- p5-: for perl 5 modules
-- hs-: for haskell modules
-- font-: for fonts (of any kind)
-
-When a package is available with different versions (e.g. Gtk, Qt) we add the
-major number as suffix to the PKGNAME to *old* versions. Example, if Qt 5 is the
-current major version and Qt 4 is also shipped then, the package *qt* refers to
-version 5 while *qt4* to version 4.
-
-## Paths
-
-The package must ensure appropriate directories for installing files. This
-includes:
-
-- /etc/rc.d for service files
-- /lib/pkgconfig: for .pc files
-- /lib/cmake: for CMake config files
-- /lib: for libraries (no lib64 suffix)
-- /share/locale: for NLS files
-- /share/man/man{1,2,3,4,5,6,7,8}: for man pages (in uncompressed form)
-- /share/doc/PKGNAME (exact directory, no version)
-
-## Services
-
-Services files must be installed in /etc/rc.d. You must use the following
-conventions regarding messages the service will print.
-
-The script must at least support start, stop and restart.
-
-#### start (required)
-
-Always add arguments with the invocation.
-
-    Starting foo: /bin/foo -d
-
-#### stop (required)
-
-If the service is not running, don't write any message. Otherwise write:
-
-    Stopping foo.
-
-#### restart (required)
-
-Basically, this command just calls stop and start.
-
-    Stopping foo.
-    Starting foo: /bin/foo -d
-
-#### status
-
-Depending on the status, write the following messages.
-
-    foo is running with pid: 1234
-    foo is not running
-
-#### usage
-
-If the script is invoked with invalid arguments or none, write the usage like
-this through stderr and exit 1. Also keep all subcommands sorted.
-
-    usage: foo restart|start|status|stop
-
-If your script may support additional operations, messages and usage are up to
-the maintainer discretion.
-
-See also the template file as Templates/rc.
-
-## Static libraries and libtool files
-
-Do not ship static libraries and libtool files. Make sure your build script
-suppress static builds if possible or delete the .a file.
-
-Note: the C and C++ library are shipped for technical reasons though.
-
-## Don't delete blindly
-
-Do never delete global files through the prefix installation as some people may
-use scripts directly for the system.
-
-Example (BAD):
-
-    rm -f $DESTDIR/lib/*.la
-
-Example (BETTER):
-
-    rm -f $DESTDIR/lib/libfoo.la
-
-Assuming the package is "foo".
-
-# Desktop files
-
-We usually never add .desktop files for any package that doesn't provide one by
-itself. This also includes terminal based applications.
-
-If a .desktop is provided by the package, make sure though that it is valid and
-specifies the appropriate category (i.e. it does not appear in multiple menus at
-once).
-
-See [desktop entry specification][] for more information.
-
-[desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest
--- a/README.md	Fri Aug 02 21:15:00 2019 +0200
+++ b/README.md	Fri Aug 02 21:20:00 2019 +0200
@@ -7,15 +7,11 @@
 Usage
 =====
 
-To build a script, go to the desired directory and use `vpk download` and `vpk
-build`.
-
-The `vpk` tool does not handle dependencies so you will need to install them
-manually first.
+To build a script, go to the desired directory and use `vpk build`.
 
 Example with zlib:
 
-	$ cd lib/zlib
+	$ cd compression/zlib
 	$ vpk download
 	$ vpk build
 
@@ -26,7 +22,7 @@
 Options
 =======
 
-Check the variable `PKGOPTIONS` in the build script file, if there is one it
+Check the variable *PKGOPTIONS* in the build script file, if there is one it
 means the package is configurable with options.
 
 Specify environment variables before calling `vpk build`.
@@ -63,5 +59,6 @@
 - *tcl*: tcl packages and interpreters
 - *video*: video manipulation
 - *wm*: window managers
+- *www*: web libraries and tools
 - *xfce*: the XFCE desktop
 - *x11*: the X distribution
--- a/UIDS.md	Fri Aug 02 21:15:00 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-Vanilla Linux reserved UIDs and GIDs
-====================================
-
-Users and groups are created once needed at package installation. It's perfectly
-safe to reuse the same UID/GID for different packages (example www, mail).
-
-You may think of UID/GID just like a simple package dependency.
-
-The following UID/GID are defined:
-
-| uid           | gid                | package(s) |
-|---------------|--------------------|------------------|
-| sshd (100)    | sshd (100)         | network/openssh  |
-| polkitd (101) | polkitd (101)      | security/polkit  |
-| pulse (102)   | pulse (102)        | audio/pulseaudio |
-|               | pulse-rt (103)     | audio/pulseaudio |
-|               | pulse-access (104) | audio/pulseaudio |