aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2009-03-06 02:11:03 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2009-03-06 02:11:03 +0000
commitb9c230aa292d218765e752517e7ea4d3a74bd8b5 (patch)
tree1e47bdc0d3d140a57435e13d001a5db6bb6a7680
parent52a3537b8ebca3a5146cf363ffa6d716f2b00da0 (diff)
downloadsimplepkg-b9c230aa292d218765e752517e7ea4d3a74bd8b5.tar.gz
simplepkg-b9c230aa292d218765e752517e7ea4d3a74bd8b5.tar.bz2
simplepkg 0.6rc1
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@799 04377dda-e619-0410-9926-eae83683ac58
-rw-r--r--tags/0.6rc1/Makefile76
-rw-r--r--tags/0.6rc1/README2
-rw-r--r--tags/0.6rc1/conf/repos.conf40
-rw-r--r--tags/0.6rc1/conf/simplepkg.conf265
-rw-r--r--tags/0.6rc1/doc/CHANGELOG769
-rw-r--r--tags/0.6rc1/doc/COPYING340
-rw-r--r--tags/0.6rc1/doc/TODO5
-rw-r--r--tags/0.6rc1/doc/mkbuild-pt_BR.tex854
-rw-r--r--tags/0.6rc1/doc/simplaret-en.tex312
-rw-r--r--tags/0.6rc1/doc/simplaret-pt_BR.tex376
-rw-r--r--tags/0.6rc1/doc/simplepkg-en.tex390
-rw-r--r--tags/0.6rc1/doc/simplepkg-pt_BR.tex397
-rw-r--r--tags/0.6rc1/install/slack-desc19
-rw-r--r--tags/0.6rc1/lib/common.sh1870
-rw-r--r--tags/0.6rc1/mkbuild/generic.mkSlackBuild527
-rw-r--r--tags/0.6rc1/mkbuild/kde4.mkSlackBuild521
-rw-r--r--tags/0.6rc1/mkbuild/model.mkbuild185
-rw-r--r--tags/0.6rc1/mkbuild/perl.mkSlackBuild444
-rw-r--r--tags/0.6rc1/mkbuild/sample-Pyrex-large.mkbuild176
-rw-r--r--tags/0.6rc1/mkbuild/sample-Pyrex-small.mkbuild65
-rw-r--r--tags/0.6rc1/src/createpkg1070
-rwxr-xr-xtags/0.6rc1/src/jail-commit175
-rwxr-xr-xtags/0.6rc1/src/jail-update62
-rwxr-xr-xtags/0.6rc1/src/lspkg143
-rwxr-xr-xtags/0.6rc1/src/mkbuild1902
-rwxr-xr-xtags/0.6rc1/src/mkjail115
-rw-r--r--tags/0.6rc1/src/mkpatch144
-rwxr-xr-xtags/0.6rc1/src/rebuildpkg87
-rwxr-xr-xtags/0.6rc1/src/simplaret1185
-rwxr-xr-xtags/0.6rc1/src/simpletrack66
-rwxr-xr-xtags/0.6rc1/src/templatepkg987
-rwxr-xr-xtags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.csh33
-rwxr-xr-xtags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.sh33
l---------tags/0.6rc1/templates/openoffice/files/opt/OpenOffice.org1
-rw-r--r--tags/0.6rc1/templates/openoffice/packages60
-rw-r--r--tags/0.6rc1/templates/openoffice/perms0
-rwxr-xr-xtags/0.6rc1/templates/openoffice/scripts/post-install.sh22
-rw-r--r--tags/0.6rc1/templates/slackware-12.1/packages947
-rw-r--r--tags/0.6rc1/templates/slackware-12.2/packages970
-rw-r--r--tags/0.6rc1/templates/slamd64-11.0/packages627
-rwxr-xr-xtags/0.6rc1/templates/slamd64-11.0/scripts/post-install.sh5
-rw-r--r--tags/0.6rc1/templates/slamd64-12.0/packages910
-rwxr-xr-xtags/0.6rc1/templates/slamd64-12.0/scripts/post-install.sh5
-rw-r--r--tags/0.6rc1/templates/slamd64-12.1/packages844
-rw-r--r--tags/0.6rc1/templates/slamd64-12.1/perms0
-rwxr-xr-xtags/0.6rc1/templates/slamd64-12.1/scripts/post-install.sh5
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/apache/httpd.conf1046
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/apache/php.ini1122
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/apache/vhosts0
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/hosts21
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/logrotate.d/apache11
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/profile87
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.0110
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.4256
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.6110
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.K88
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.M256
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.S294
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.httpd21
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inet2129
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inetd36
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.ip_forward64
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.local5
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.mysqld80
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.postfix45
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sendmail38
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.serial132
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sshd50
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.syslog42
-rwxr-xr-xtags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sysvinit58
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/rssh.conf48
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/etc/ssh/sshd_config103
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/var/www/htdocs/missing.html12
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/files/var/www/missing.html12
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/packages251
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/perms36
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/scripts/GPG-KEY88
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/scripts/devices.tar.gzbin0 -> 322 bytes
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/scripts/skel.conf70
-rw-r--r--tags/0.6rc1/templates/vserver-legacy/scripts/vserver-legacy.sh49
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/apache/httpd.conf1046
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/apache/php.ini1122
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/apache/vhosts0
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/hosts21
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/logrotate.d/apache11
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/profile87
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc11
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.0110
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.4256
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.6110
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.K88
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.M256
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.S294
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.httpd21
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inet2129
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inetd36
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.ip_forward64
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.local5
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.mysqld80
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.postfix45
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sendmail38
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.serial132
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sshd50
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.syslog42
-rwxr-xr-xtags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sysvinit58
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/rssh.conf48
-rw-r--r--tags/0.6rc1/templates/vserver/files/etc/ssh/sshd_config103
-rw-r--r--tags/0.6rc1/templates/vserver/files/var/www/htdocs/missing.html12
-rw-r--r--tags/0.6rc1/templates/vserver/files/var/www/missing.html12
-rw-r--r--tags/0.6rc1/templates/vserver/packages250
-rw-r--r--tags/0.6rc1/templates/vserver/perms37
-rw-r--r--tags/0.6rc1/templates/vserver/scripts/GPG-KEY88
-rw-r--r--tags/0.6rc1/templates/vserver/scripts/devices.tar.gzbin0 -> 320 bytes
-rw-r--r--tags/0.6rc1/templates/vserver/scripts/vserver.sh55
-rw-r--r--tags/0.6rc1/utils/README2
-rwxr-xr-xtags/0.6rc1/utils/add-gpl33
-rwxr-xr-xtags/0.6rc1/utils/add-slack-required63
-rwxr-xr-xtags/0.6rc1/utils/convert-template-scheme35
-rwxr-xr-xtags/0.6rc1/utils/enable-mkbuild-section40
-rwxr-xr-xtags/0.6rc1/utils/merge-template37
-rwxr-xr-xtags/0.6rc1/utils/metapkg72
-rwxr-xr-xtags/0.6rc1/utils/repos87
-rwxr-xr-xtags/0.6rc1/utils/searchpkg36
-rwxr-xr-xtags/0.6rc1/utils/slackbuild-versions30
124 files changed, 27953 insertions, 0 deletions
diff --git a/tags/0.6rc1/Makefile b/tags/0.6rc1/Makefile
new file mode 100644
index 0000000..3f67e3a
--- /dev/null
+++ b/tags/0.6rc1/Makefile
@@ -0,0 +1,76 @@
+#
+# Simplepkg Makefile by Silvio Rhatto (rhatto at riseup.net).
+#
+# This Makefile is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or any later version.
+#
+# This Makefile is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+PACKAGE = simplepkg
+VERSION = 0.6rc1
+BUILD = 1rha
+PREFIX = /usr
+INSTALL = /usr/bin/install
+
+clean:
+ find . -name *~ | xargs rm -f # clean local backups
+
+install_lib:
+ $(INSTALL) -D --mode=0644 lib/common.sh $(DESTDIR)/$(PREFIX)/libexec/$(PACKAGE)/common.sh
+
+install_bin:
+ $(INSTALL) -D --mode=0755 src/simplaret $(DESTDIR)/$(PREFIX)/bin/simplaret
+ $(INSTALL) -D --mode=0755 src/lspkg $(DESTDIR)/$(PREFIX)/bin/lspkg
+ $(INSTALL) -D --mode=0755 src/mkbuild $(DESTDIR)/$(PREFIX)/bin/mkbuild
+ $(INSTALL) -D --mode=0755 src/mkpatch $(DESTDIR)/$(PREFIX)/bin/mkpatch
+
+install_sbin:
+ $(INSTALL) -D --mode=0755 src/mkjail $(DESTDIR)/$(PREFIX)/sbin/mkjail
+ $(INSTALL) -D --mode=0755 src/templatepkg $(DESTDIR)/$(PREFIX)/sbin/templatepkg
+ $(INSTALL) -D --mode=0755 src/jail-update $(DESTDIR)/$(PREFIX)/sbin/jail-update
+ $(INSTALL) -D --mode=0755 src/jail-commit $(DESTDIR)/$(PREFIX)/sbin/jail-commit
+ $(INSTALL) -D --mode=0755 src/rebuildpkg $(DESTDIR)/$(PREFIX)/sbin/rebuildpkg
+ $(INSTALL) -D --mode=0755 src/createpkg $(DESTDIR)/$(PREFIX)/sbin/createpkg
+ $(INSTALL) -D --mode=0755 src/simpletrack $(DESTDIR)/$(PREFIX)/sbin/simpletrack
+ @cd $(DESTDIR)/usr/sbin && ln -sf jail-upgrade vserver-upgrade
+
+install_doc:
+ $(INSTALL) -D --mode=0644 doc/COPYING $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/COPYING
+ $(INSTALL) -D --mode=0644 doc/TODO $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/TODO
+ $(INSTALL) -D --mode=0644 doc/CHANGELOG $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/CHANGELOG
+ #$(INSTALL) -D --mode=0644 doc/README $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/README
+ #$(INSTALL) -D --mode=0644 doc/README.pt_BR $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/README.pt_BR
+ #$(INSTALL) -D --mode=0644 doc/README.simplaret $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/README.simplaret
+ #$(INSTALL) -D --mode=0644 doc/README.simplaret.pt_BR $(DESTDIR)/$(PREFIX)/doc/$(PACKAGE)-$(VERSION)/README.simplaret.pt_BR
+
+install_config:
+ $(INSTALL) -D --mode=0644 conf/$(PACKAGE).conf $(DESTDIR)/etc/$(PACKAGE)/defaults/$(PACKAGE).conf
+ $(INSTALL) -D --mode=0644 conf/repos.conf $(DESTDIR)/etc/$(PACKAGE)/defaults/repos.conf
+ @mkdir -p $(DESTDIR)/etc/$(PACKAGE)/defaults/mkbuild/
+ @cp mkbuild/* $(DESTDIR)/etc/$(PACKAGE)/defaults/mkbuild/
+
+install_defaults:
+ @mkdir -p $(DESTDIR)/etc/$(PACKAGE)/{defaults/mkbuild,templates}
+ @rsync -av --exclude=.svn templates/* $(DESTDIR)/etc/$(PACKAGE)/defaults/templates/
+ @chmod +x $(DESTDIR)/etc/$(PACKAGE)/defaults/templates/vserver/scripts/*.sh
+ @chmod +x $(DESTDIR)/etc/$(PACKAGE)/defaults/templates/vserver-legacy/scripts/*.sh
+
+install: clean
+ @make install_lib install_bin install_sbin install_doc install_config install_defaults
+ $(INSTALL) -D --mode=0644 install/slack-desc $(DESTDIR)/install/slack-desc
+ #$(INSTALL) -D --mode=0755 install/doinst.sh $(DESTDIR)/install/doinst.sh
+
+package:
+ echo "Remember to run this option as root!"
+ @rm -rf /tmp/package-$(PACKAGE)
+ @mkdir -p /tmp/package-$(PACKAGE)
+ @make DESTDIR=/tmp/package-$(PACKAGE) install
+ @cd /tmp/package-$(PACKAGE) && makepkg -c y -l y /tmp/$(PACKAGE)-$(VERSION)-noarch-$(BUILD).tgz && cd - && rm -rf /tmp/package-$(PACKAGE)
diff --git a/tags/0.6rc1/README b/tags/0.6rc1/README
new file mode 100644
index 0000000..d4d1463
--- /dev/null
+++ b/tags/0.6rc1/README
@@ -0,0 +1,2 @@
+See doc/README for more information.
+Portuguese documentation at doc/README.pt_BR.
diff --git a/tags/0.6rc1/conf/repos.conf b/tags/0.6rc1/conf/repos.conf
new file mode 100644
index 0000000..480a0f8
--- /dev/null
+++ b/tags/0.6rc1/conf/repos.conf
@@ -0,0 +1,40 @@
+#
+# repository definitions for simplaret
+# please dont use any spaces inside a repository definition
+#
+
+# local integration: the following lines makes packages created with
+# createpkg automatic available to simplaret
+ROOT-i386="local%file:///var/simplepkg/repos/slackware"
+ROOT-x86_64="local%file:///var/simplepkg/repos/slamd64"
+ROOT-powerpc="local%file:///var/simplepkg/repos/slackintosh"
+ROOT-s390="local%file:///var/simplepkg/repos/slack390"
+
+# slackware root repositories
+ROOT-i386="sarava%http://slack.sarava.org/packages/slackware/"
+ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+ROOT-i386="easynews%http://slackware.mirrors.easynews.com/linux/slackware/"
+ROOT-i386="gwdg%http://ftp.gwdg.de/pub/linux/slackware/"
+
+# powerpc root definitions
+ROOT-powerpc="workaround%http://slackintosh.workaround.ch/pub/slackintosh/"
+
+# s390 root definitions
+ROOT-s390="ibiblio%http://distro.ibiblio.org/pub/linux/distributions/slack390/"
+
+# slamd64 root repositories
+#ROOT-x86_64="sarava%http://slack.sarava.org/packages/slamd64/"
+ROOT-x86_64="slackadelic%http://mirror1.slackadelic.com/slamd64/"
+ROOT-x86_64="heanet%http://ftp.heanet.ie/pub/slamd64/"
+
+# If you want to use Bluewhite64 instead of Slamd64, please uncoment the
+# next line and make sure to comment out all other slamd64 repository definitions
+#ROOT-x86_64="bluewhite64%http://mirror.inode.at/data/bluewhite64/"
+
+# If you want to use Sflack instead of Slamd64 or Bluewhite64, please uncoment
+# the next line and make sure to comment out all other slamd64 and Bluewhite64
+# repository definitions
+#ROOT-x86_64="bluewhite64%http://webftp.slackarea.net/pub/sflack/"
+
+# noarch
+NOARCH="sarava%http://slack.sarava.org/packages/noarch"
diff --git a/tags/0.6rc1/conf/simplepkg.conf b/tags/0.6rc1/conf/simplepkg.conf
new file mode 100644
index 0000000..0c0fc73
--- /dev/null
+++ b/tags/0.6rc1/conf/simplepkg.conf
@@ -0,0 +1,265 @@
+#---------------------------------------------------------------------
+# Default simplepkg configuration.
+# File: /etc/simplepkg/default/simplepkg.conf
+#
+# This file contains the default behaviour of simplepkg scripts.
+# Please do not edit this file. Use /etc/simplepkg/simplepkg.conf
+# instead for overriding the default configuration.
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+# GENERAL SECTION
+#---------------------------------------------------------------------
+# Default architecture: set this option if you dont want simplepkg
+# to use the value from /etc/slackware-version
+# DEFAULT_ARCH="i486"
+
+# Default version: set this option if you dont want simplepkg
+# to use the value from /etc/slackware-version
+# DEFAULT_VERSION="12.2"
+
+# Temporary folder
+TMP="/tmp/simplepkg"
+
+#---------------------------------------------------------------------
+# MKBUILD AND CREATEPKG SECTION
+#---------------------------------------------------------------------
+
+# Set default directory for mkbuilds
+MKBUILDS_DIR="/var/simplepkg/mkbuilds"
+
+# Set SlackBuilds default directory for scripts
+SLACKBUILDS_DIR="/var/simplepkg/slackbuilds"
+
+# Set packages default repository directory
+PACKAGES_DIR="/var/simplepkg/repos"
+
+# Set mkbuilds svn default repository
+MKBUILDS_SVN="http://slack.sarava.org/mkbuilds"
+
+# Set SlackBuilds svn default repository
+SLACKBUILDS_SVN="http://slack.sarava.org/slackbuilds"
+
+# Set packages svn default repository
+PACKAGES_SVN="http://slack.sarava.org/packages"
+
+# Set the binaries default repository nested folder, useful if you manage
+# packages from different distribution versions and architectures in the
+# same parent folder.
+#
+# You can use any string here and also de special parameters none, distro,
+# arch and version. You can also mix more than one parameter, like
+# "distro-version".
+#
+# Default value is "distro/distro-version" and you should change this just
+# if you know what are you doing.
+PACKAGES_REPOS_STYLE="distro/distro-version"
+
+# Se this to "yes" if you want createpkg to put noarch packages also in
+# a noarch/ folder.
+PACKAGES_REPOS_NOARCH="on"
+
+# If your packages repository is under svn and you plan to manage it with an
+# user different than root, then set this parameter with the username
+# owning the repository working copy.
+PACKAGES_SVN_USER=""
+
+# Same as the previous option, but for svn repository group.
+PACKAGES_SVN_GROUP=""
+
+# If your mkbuild and slackbuild repositories is under svn and you plan to
+# manage it with an user different than root, then set this parameter with the
+# username owning the repository working copy.
+MKBUILDS_SVN_USER=""
+
+# Same as the previous option, but for svn repository group.
+MKBUILDS_SVN_GROUP=""
+
+# Set sources default directory
+SOURCE_DIR="/var/simplepkg/sources"
+
+# Set SOURCE_DIR folder owner
+SOURCE_DIR_USER=""
+
+# Set SOURCE_DIR folder group
+SOURCE_DIR_GROUP=""
+
+# Set color style. Possible values are: color,gray, none.
+COLOR_MODE="none"
+
+# Createpkg architecture. Use this to force createpkg to a given arch.
+# CREATEPKG_ARCH="i486"
+
+# Remove build files
+CREATEPKG_CLEANUP="yes"
+
+# Remove old packages from repository tree by createpkg
+REMOVE_OLD_PACKAGE="off"
+
+# Move package to SlackBuilds-like tree
+MOVE_BIN_PACKAGE="on"
+
+# Move package's slack-required to binary repository
+MOVE_SLACK_REQUIRED="on"
+
+# Set this to override the default author on each SlackBuild. Use alphabetic
+# characters only and no spaces.
+CREATEPKG_AUTHOR=""
+
+# Set this to get author information automatically when creating a new mkbuild
+MKBUILD_AUTHOR=""
+
+# Set this to get author initials automatically when creating a new mkbuild
+MKBUILD_AUTHOR_INITIALS=""
+
+# Whether createpkg should sign packages.
+SIGN_PACKAGES="off"
+
+# Username used for package signatures.
+SIGN_PACKAGES_USER=""
+
+# GPG key id used for package signature, leave blank to use default key.
+SIGN_PACKAGES_KEYID=""
+
+# Whether to use gpg-agent to sign packages
+SIGN_PACKAGES_WITH_GPG_AGENT="off"
+
+# Whether mkbuild should sign Manifests.
+SIGN_MANIFESTS="off"
+
+# GPG key id used for Manifest signature, leave blank to use default key.
+SIGN_MANIFESTS_KEYID=""
+
+# Whether to use gpg-agent to sign Manifests
+SIGN_MANIFESTS_WITH_GPG_AGENT="off"
+
+# Whether to just build packages that have Manifest files.
+FORCE_MANIFEST_CHECK="off"
+
+# Whether to just build packages that have signed Manifest files.
+FORCE_MANIFEST_CHECK_SIGNATURE="off"
+
+#---------------------------------------------------------------------
+# SIMPLARET SECTION
+#---------------------------------------------------------------------
+
+# Whether mkjail should clean the package cache before installation
+# to enable it, set to "1" or "yes"
+SIMPLARET_CLEAN="1"
+
+# whether mkjail should clean the package cache after the installation;
+# to enable it, set to "1" or "yes"
+SIMPLARET_DELETE_DOWN="1"
+
+# Whether mkjail should issue a simplaret --update before install the jail;
+# to enable it, set to "1" or "yes"
+SIMPLARET_UPDATE="1"
+
+# Wheter try to download from the next repository on failed download.
+SIMPLARET_DOWNLOAD_FROM_NEXT_REPO="1"
+
+# Wheter delete also patches when simplaret --purge is called;
+# to enable it, set to "1" or "yes"
+SIMPLARET_PURGE_PATCHES="0"
+
+# Whether delete each package rigth after its installation;
+# to enable it, set to "1" or "yes"
+SIMPLARET_DELETE_DURING="0"
+
+# Delete packages older than N weeks from the cache
+SIMPLARET_PURGE_WEEKS="3"
+
+# Where patches are placed
+PATCHES_DIR="/var/simplepkg/patches"
+
+# Place to store your packages
+STORAGE="/var/simplepkg/packages"
+
+# Whether to use passive ftp transfers;
+# to enable it, set to "1" or "yes"
+PASSIVE_FTP="1"
+
+# Http retrieval tool;
+# available parameters are "wget" or "curl"
+HTTP_TOOL="wget"
+
+# Ftp retrieval tool;
+# available parameters are "wget", "curl" or "ncftpget"
+FTP_TOOL="wget"
+
+# Set connection timeout in seconds
+CONNECT_TIMEOUT="20"
+
+# ROOT repository package priority
+ROOT_PRIORITY="patches slackware extra testing pasture"
+
+# REPOS repository package priority
+REPOS_PRIORITY="patches slackware extra testing pasture"
+
+# Whether to check package signatures (you should have the repository
+# maintainer key on your keyring)
+SIGNATURE_CHECKING="on"
+
+# Whether simplaret will try to solve dependencies by looking
+# for packages' slack-required
+DEPENDENCY_CHECKING="1"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# donwload even already applied patches, a good option when you plan
+# to keep local copies of all needed patches for your system
+DOWNLOAD_EVEN_APPLIED_PATCHES="0"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# look at your standard repositories for new packages; if it find a
+# package with different version of your current installed package and
+# also this package isnt in the packages folder, then the new package
+# is applied; if in doubt, just say no or leave blank. Otherwise set it
+# either to "yes" or "1" and remember that if enabling this feature can
+# cause problems if you use more than one REPOS definition for each
+# ARCH and VERSION. Also, this option can be very slow.
+CONSIDER_ALL_PACKAGES_AS_PATCHES="0"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# store patches it finds on ROOT repositories on
+#
+# $PATCHES_DIR/$ARCH/$VERSION/root-$repository_name.
+#
+# By default this option is turned off because it breaks the standard
+# way to store packages and can cause some confusion, but its an useful
+# feature if you like to see all patches apart from common packages and/or
+# stored in the same tree.
+STORE_ROOT_PATCHES_ON_PATCHES_DIR="0"
+
+#---------------------------------------------------------------------
+# TEMPLATEPKG SECTION
+#---------------------------------------------------------------------
+
+# Set to yes if your templates will be placed in a subversion repository
+# This just work if TEMPLATE_STORAGE_STYLE is set to own-folder or compact.
+TEMPLATES_UNDER_SVN="no"
+
+# Where your templates will be located.
+# Dont change it except you know what you're doing.
+TEMPLATE_FOLDER="/etc/simplepkg/templates"
+
+# This variable controls in which folder / subfolder your templates will
+# be stored. Possible values are:
+#
+# - simplepkg-folder: templates are stored at /etc/simplepkg
+# - templates-folder: templates are stored at /etc/simplepkg/templates
+# - own-folder or compact: each template stored at its own folder
+# at /etc/simplepkg/templates/template-name
+#
+# This variable has backwards purposes only, so dont change it.
+TEMPLATE_STORAGE_STYLE="compact"
+
+#---------------------------------------------------------------------
+# MKJAIL SECTION
+#---------------------------------------------------------------------
+
+# Where jails are placed
+JAIL_ROOT="/vservers"
+
+# Wheter mkjail should add new jails in the jail list;
+# to enable it, set to "1" or "yes"
+ADD_TO_JAIL_LIST="1"
diff --git a/tags/0.6rc1/doc/CHANGELOG b/tags/0.6rc1/doc/CHANGELOG
new file mode 100644
index 0000000..0a95640
--- /dev/null
+++ b/tags/0.6rc1/doc/CHANGELOG
@@ -0,0 +1,769 @@
+simplepkg changelog
+===================
+
+0.6pre31
+========
+
+ - repos script moved to utils/ folder
+ - new "compact" template storage format
+ - common.sh:
+ - default arch when its not present at /etc/slackware-version is now assumed to be "i486"
+ - other minor changes and new functions
+ - repository metainformationg is now added at svn control if applicable
+ - new functions svn_remove_empty_folders, svn_del, su_svn, chown_svn, chgrp_svn,
+ regexp_slash, default_distro and svn_add
+ - new config parameter "TMP"
+ - renamed function use_svn to templates_under_svn
+ - simplaret:
+ - support for HTTPS
+ - simplaret_search_and_process_patch do not donwload a package with the same
+ package name twice in any case
+ - simplaret_set_arch: mapping non-present architectures to i486
+ - default simplepkg.conf and repos.conf moved to defaults/ folder
+ - templatepkg and mkjail: minor changes
+ - templates:
+ - removed slackware and added slackware-12.1, slackware-12.2
+ - added slamd64-11.0, slamd64-12.0 and slamd64-12.1 templates
+ - repos.conf and simplepkg.conf:
+ - default configuration making createpkg repository integrated with simplaret
+ - new repositories
+ - mkbuild:
+ - added --edit command line options, among others
+ - code cleanup
+ - all previous "commit" functions and command line options changed to "submit" as they
+ don't really commit files into the svn repository
+ - function svn_mkdir moved to common.sh
+ - function svn_add moved to common.sh and renamed as svn_copy
+ - some svn check routines extended for git
+ - perl.mkSlackBuild
+ - added sections copy_init_scripts and copy_config_files
+ - generic.mkSlackBuild, perl.mkSlackBuild and kde4.mkSlackBuild
+ - clean_builds now compliant with standard --cleanup behaviour
+ - new section slack-required, download_patches, manifest_check
+ - generic.mkSlackBuild:
+ - config() on postinstall_script now accepting .dist and .sample config file extensions
+ - added git_source section
+ - createpkg:
+ - command line support for creating multiple packages
+ - fakeroot support
+ - new options --import, --status, --update and --commit to manage subversion repository, among others
+ - subversion integration
+ - minor changes
+ - renamed config parameter CREATE_ARCH to CREATEPKG_ARCH
+ - renamed all "MAKEPKG" config parameters to "PACKAGES", "MAKEPKG_REPOS" to "PACKAGES_DIR"
+ - cleaner -s option output
+ - new config parameters PACKAGES_REPOS_STYLE, MOVE_SLACK_REQUIRED, MKBUILDS_SVN_USER,
+ PACKAGES_SVN_USER, PACKAGES_SVN_GROUP, MKBUILDS_SVN_GROUP, PACKAGES_REPOS_NOARCH,
+ PACKAGES_SVN, CREATEPKG_AUTHOR, SIGN_PACKAGES, SIGN_PACKAGES_USER. SIGN_PACKAGES_KEYID,
+ SIGN_PACKAGES_WITH_GPG_AGENT, SOURCE_DIR_USER, SOURCE_DIR_GROUP, SIGN_MANIFESTS,
+ SIGN_MANIFESTS_KEYID, SIGN_MANIFESTS_WITH_GPG_AGENT, FORCE_MANIFEST_CHECK,
+ FORCE_MANIFEST_CHECK_SIGNATURE, MKBUILD_AUTHOR, MKBUILD_AUTHOR_INITIALS
+ - lspkg: fix on package search routine
+ - jail-commit: using unified diff
+
+0.6pre30
+========
+
+ - common.sh: fixed package_name when dealing with files under /var/log/packages
+
+0.6pre29
+========
+
+ - templatepkg: fixed issue on adding files in a template.
+ - simplaret: "--sync" and "sync" now synonyms to "--update" and "update".
+
+0.6pre28
+========
+
+ - generic.mkSlackBuild: new section copy_config_files
+ - lspkg: change ls /var/log/packages/$1 to ...$1-[0-9]
+ - mkjail: fixed #27
+ - jail-update: installs/remove packages according the template (closes #10)
+ - simplaret:
+ - option --install working for multiple packages (closes #1)
+ - option --remove working for multiple packages
+ - mkpatch: fixed infinite loop on invalid diff action
+ - mkbuild 1.2.7:
+ - new ACTION bugfix
+ - search result bugfix
+ - protect MKBUILD_NAME and ACTION variables with "" in line 266
+ - createpkg 1.1.13:
+ - severals EXIT_CODE corrections
+ - search result bugfix
+
+0.6pre27
+========
+
+ - using Makefile instead of simplepkg.SlackBuild
+ - generic.mkSlackBuild: fix on svn_source
+ - createpkg 1.1.12:
+ - change indentation do two spaces;
+ - add option --debug|-d to debug SlackBuilds scripts;
+ - add EXIT_CODE to output status from createpkg;
+ - mkbuild 1.2.6:
+ - add --search|-s option;
+ - mkbuild copy all file in current directory different of *.SlackBuild,
+ *.old, *.tmp, and slack-required to mkbuild directory, in
+ commit_mkbuild function;
+ - mkbuild copy all file in current directory different of *.mkbuild,
+ *.old, and *.tmp to slackbuild repository, in commit_slackbuild
+ function;
+ - add EXIT_CODE to output status from mkbuild;
+
+0.6pre26
+========
+
+ - createpkg:
+ - add LANG=en_US in SlackBuild command line
+ - mkbuild:
+ - bugfix: add "" to protect all parameters in edit_file function call;
+ - change line 346-346 with "sed -i" command;
+ - add SVN_MOD variable to control svn source code;
+ - add control to SVN_MOD and URL "none" in activate_sections function;
+ - desable sections download_source, md5sum_download_and_check_0,
+ md5sum_download_and_check_1, gpg_signature_check untar_source, in
+ SVN_MOD or URL "none";
+ - enable section get_svn_source in SVN_MOD;
+ - EXTENSION, UNPACKER, UNPACKER_FLAGS, DECOMPRESSOR, and DECOMPRESSOR_TEST_FLAG
+ desable in SVN_MOD or URL "none";
+ - generic.mkSlackBuild:
+ - change PKG_SRC="$PWD...{ print $8 }'`" to ...{ print $NF }'`"
+ - add svn_source section to grab subversion sources;
+ - comment lines limited to 79 columns;
+ - model.mkbuild:
+ - add "off:svn_source" line;
+
+0.6pre25
+========
+
+ - generic.mkSlackBuild:
+ - fixed gziped patch support at patch_source section
+ - added LDFLAGS for x86_64
+
+0.6pre24
+========
+
+ - mkbuild: added LICENSE and SIGNATURE on default [[DOCUMENTATION FILES]]
+ - perl.mkSlackBuild:
+ - gpg_signature_check: support for [[SIGNING KEY ID]] parameter
+ - minor fix
+
+0.6pre23
+========
+
+ - generic.mkSlackBuild:
+ - new section copy_init_scripts
+ - gpg_signature_check: support for [[SIGNING KEY ID]] parameter
+
+0.6pre22
+========
+
+ - generic.mkSlackBuild:
+ - enhanced patch_source section with [[PATCH URLS]] support
+ - minor changes
+
+0.6pre21
+========
+
+ - generic.mkSlackBuild:
+ - added -fPIC on SLKCFLAGS for x86_64
+
+0.6pre20
+========
+
+ - generic.mkSlackBuild:
+ - new section create_build_user_and_group
+ - new section move_config_files
+ - more gpg_signature_check section fixes
+ - new functions at postinstall_script section
+ - perl.mkSlackBuild:
+ - more gpg_signature_check section fixes
+
+0.6pre19
+========
+
+ - mkbuild-1.2.3:
+ - help function update
+ - createpkg-1.1.11:
+ - help function update
+ - generic.mkSlackBuild / perl.mkSlackbuild:
+ - gpg_signature_check section fixes
+
+0.6pre18
+========
+
+ - mkbuild-1.2.2:
+ - function change_others_parameters works of the beginning of the
+ archive .mkbuild until the line initiated for "#>>"
+ - added "--sync" option
+ - change indent spaces to 2
+ - "show slackbuild path" option (-sp) and related functions had been removed
+ - removed others small bugs
+ - common.sh: fixed default_arch
+ - simpletrack: error message
+
+0.6pre17
+========
+
+ - mkpatch add simple patch suport to mkbuild
+ - mkpatch-1.1:
+ - --help, -h option suport
+ - change select line: 'sed "#i g;d"' is 30% most fast that 'sed -n "#i p"'
+ - change 'while' loop to most speed in patch application
+ - bug fixe: replace 'return' for 'exit' command
+ - mkbuild-1.2.0:
+ - added suport to mkpatch section in .mkbuild (apply_mkpatch function)
+
+0.6pre14
+========
+
+ - simplaret: ignoring slack-required lines starting which "#"
+
+0.6pre13
+========
+
+ - mkbuild-1.1.11:
+ - -sp, --slackbuild-path option added
+ - ACTION variable added (values are: new, show-path, and build)
+ - MKBUILD_NAME and MK_INPUT_FILE variables are the same ones
+ - Several 'sed - i' applied
+ - Changed caracter of separation in the command 'sed' for ¦
+ - Reorganized the function get_slackbuild_path
+ - Call for the function start_build moved of position
+
+0.6pre12
+========
+
+ - common.sh: small change
+
+ - generic.mkSlackBuild / perl.mkSlackBuild: minor fixe
+
+ - mkbuild-1.1.10:
+ - added inputs --path-files and --nps-strip
+ - remove old code 'let i++' in set_parameters function
+ - PATCH FILES parameter default set to ""
+ - NUMBER OF PREFIX SLASHES TO STRIP parameter default set to "1"
+ - change_others_parameters function minor fixe
+ - variable ARCH="noarch" in SlackBuild file, if [[ARCH]]="noarch"
+
+0.6pre11
+========
+
+ - common.sh:
+ - enhanced system arch and version detection
+ - minor changes
+
+ - simplaret:
+ - changed distro folder routine
+ - added --help | help command line option
+ - added simplified syntax:
+
+ simplaret ekiga # should work as simplaret install ekiga
+
+ - generic.mkSlackBuild / perl.mkSlackBuild: minor fixes
+
+0.6pre1-10
+==========
+
+ - added perl.mkSlackBuild
+
+ - generic.mkSlackBuild-0.9.0:
+ - added [[BUILD NUMBER]] parameter
+ - added variable PKG_WORK(=$TMP/$SRC_NAME) to package work directory
+ - PKG_SRC now is `ls -la | awk '/^d/ { print $8 }'`, directory in $PKG_WORK
+
+ - model.mkbuild-0.9.0:
+ - added [[BUILD NUMBER]]="" parameter
+
+ - createpkg-1.1.9:
+ - added option --all, to build all SlackBuilds in repository
+ - added number of parameters check
+ - integrate handle_error with common.sh
+ - moved handle_error and error_codes to common.sh (see above)
+ - usage function add exit program
+ - change ERROR_... codes to ERROR_CREATEPKG_...
+ - added SLACKBUILDS_SVN variable
+ - called to svn functions change to send SLACKBUILDS_DIR and SLACKBUILDS_SVN variables
+ - error 2 (usage function) change to usage function call
+
+ - mkbuild-1.1.9:
+ - added [[BUILD NUMBER]]="" parameter support
+ - bugfix: removed [] from is_number function call
+ - correction of some codes of error and calls the handle_error function
+ - added commit mkbuild, commit slackbuild , and commit all options
+ - removed error_codes and mkbuild_error to common.sh
+ - COMMIT variable change to COMMIT_SLACKBUILD
+ - added variable COMMIT_MKBUILD
+ - analysis of the variable NUMJOBS moved close to the reading from parameter NUMBJOBS
+ - reading of the variable SLACKBUILD_PATH was moved for the end of the list of parameters
+ - is_number function moved to common.sh
+ - added validate_parameter input check
+ - added support to the "empty parameter" in validate_parameter function
+ - added variables SLACKBUILDS_SVN, MKBUILDS_DIR and MKBUILDS_SVN
+ - added variables BASENAME (program name)
+ - COMMIT_SLACKBUILD and COMMIT_MKBUILD default set to off
+ - UNPACKER bugfix
+ - DECOMPRESSOR bugfix
+ - added most flexibility in the creation of initial ".mkbuild" file
+ - added commit_mkbuild function
+ - bugfix: input of set_parameters ($@) protected with ""
+ - bugfixes: -a, -u, and -ai options
+
+ - common.sh
+ - ERROR_PAR_NUMBER - incorrect number of parameters
+ - ERROR_COMMON_NOT_FOUND - file common.sh not found
+ - added error_codes function
+ - added handle_error function
+ - added svn functions:
+ - build_repo (build a svn repository)
+ - check_repo (check repository)
+ - sync_repo (synchronize repository)
+ - added is_number function.
+ Check if input is a number
+
+ - bugfixes:
+ - common.sh: added ;; in the end from line 787
+ - common.sh: change handle_error exit to "is_number $1 && exit $1 || exit 1"
+ - createpkg: protect parameters in solve_dep call with ""
+ - mkbuild: change "PACKGE NAME" parameter to "PKG NAME"
+ - model.mkbuild: change "PACKGE NAME" parameter to "PKG NAME"
+
+ - simplepkg.conf:
+ - new config variables:
+ - MKBUILDS_DIR (mkbuilds directory repository)
+ - SLACKBUILDS_SVN (SlackBuild svn source)
+ - MKBUILDS_SVN (Mkbuild svn source)
+
+ - model.mkbuild:
+ - Some changes to integrate to applicatory the external ones:
+ - [[SLACKBUILD AUTHOR]] default change to "[[YOUR NAME]]"
+ - [[SLACKBUILD AUTHOR INITIALLS]] default change to "[[YOUR SIGNATURE]]"
+ - [[DONLOAD FOLDER URL]] default change to "[[DEFAULT URL]][[PACKGE NAME]]"
+ - all [[NAME]] change to [[PACKGE NAME]]
+ - added [[ARCH]]="" parameter
+
+ - lspkg-0.4:
+ - added error code 1 to fail exit
+
+0.6pre1-8
+=========
+
+ - common.sh:
+ - fixed http://slack.sarava.org/trac/ticket/19
+
+ - added simpletrack script
+
+ - simplaret:
+ - lots of fixes (thanks Diogo for finding and reporting two of them)
+ - performance enhancement on --upgrade
+
+ - createpkg:
+ - small fixes
+ - starting support for repository management
+
+ - mkbuild:
+ - lots of changes
+
+ - documentation update
+
+0.5pre23
+========
+
+ - updated documentation
+
+0.5pre22
+========
+
+ - simplaret:
+ - small fix
+ - common.sh:
+ - fixes on metafiles generation
+
+0.5pre21
+========
+
+ - templatepkg:
+ - now --delete can also remove the file from a jail
+
+0.5pre20
+========
+
+ - small changes
+ - jail-commit:
+ - template files security
+
+0.5pre19
+========
+
+ - simplaret:
+ - bugfixes
+ - options --get and --install now can work
+ with full file name.
+
+0.5pre15-18
+===========
+
+ - bugfixes
+
+0.5pre14
+========
+
+ - simplaret
+ - added variable REPOS_PRIORITY
+ - added variable SIMPLARET_DOWNLOAD_FROM_NEXT_REPO
+
+ - lspkg:
+ - small bugfix
+
+ - common.sh:
+ - on search_template, doesnt return a template from
+ defaults/ if the function is called with --update
+
+ - utils/add-slack-required:
+ - command line enhancement
+
+0.5pre9 - 0.5pre13
+==================
+
+ - bugfix releases
+
+0.5pre8
+=======
+
+ - lspkg:
+ - bugfix
+
+ - common.sh:
+ - bugfix in function slash
+
+0.5pre7
+=======
+
+ - simplaret:
+ - fixed bug for ROOT definitions when there is packages
+ inside of folders different than ROOT_PRIORITY
+
+0.5pre6
+=======
+
+ - repos:
+ - FILE_LIST generation fix
+
+ - mkjail:
+ - new config variable ADD_TO_JAIL_LIST controls wheter to
+ add new jails into the JAIL_LIST file
+
+0.5pre5
+=======
+
+ - jail-commit
+ - SILENT env variable to decrease verbosity
+
+0.5pre4
+=======
+
+ - templatepkg:
+ - small fixes
+ - help usage summary improvements
+ - now using variable TEMPLATE_FOLDER
+ - SILENT env variable to decrease verbosity
+ - option -p | --post-install renamed to -b | --batch-edit
+ - option -p | --post-install now used to build a package from a template
+ - option -d | --delete now can also remove post-install scripts
+
+ - common.sh
+ - small fixes
+ - now using variable TEMPLATE_FOLDER
+
+ - jail-commit:
+ - calling templatepkg silently
+ - small fixes
+
+0.5pre3
+=======
+
+ - again, lots of bugfixes
+
+ - jail-commit:
+ - update a template just once if finds more than one entry
+ for a template in the jailist
+
+0.5pre2
+=======
+
+ - lots of bugfixes
+
+ - templatepkg:
+ - now creates missing components in a template
+
+0.5pre1
+=======
+
+ Lots of changes!
+
+ - repos: cosmetic changes
+
+ - lspkg:
+ - support for $ROOT env variable
+ - some improvements
+
+ - CHANGELOG cleanup
+
+ - subversion repository support for templates
+
+ - metapkg moved to utils/
+
+ - simplaret:
+ - new config variables:
+ - STORE_ROOT_PATCHES_ON_PATCHES_DIR
+ - SIGNATURE_CHECKING
+ - ROOT=/otherroot works for --install, --remove and --upgrade
+ - signature checking
+ - dependency checking through slack-required
+
+ - mkjail:
+ - added support for slack-required as templates
+ - templates now can be stored either on
+ - /etc/simplepkg/template_name.template
+ - /etc/simplepkg/templates/template_name.template
+ - /etc/simplepkg/templates/template_name/template_name.template
+
+ - jail-update
+ - old script renamed to jail-commit
+ - now update a jail from a template
+ - svn repository support
+
+ - jail-commit
+ - new script, commit changes from a jail to the templates
+ - svn repository support
+
+ - templatepkg:
+ - major rewrite
+ - svn repository support
+ - now supports a tagfile or slack-required as a template
+ - new/changed options
+ -c | --create: improvements
+ -a | --add: changed to add files into a template
+ -u | --update: update a template
+ -d | --delete: delete files or folders from a template
+ -s | --sync: sync /etc/simplepkg/templates working copy
+ -e | --export: export /etc/simplepkg/templates to a svn repository
+ -i | --import: grab /etc/simplepkg/templates from a svn repository
+ -r | --remove: remove a template
+ -l | --list: list templates
+ -p | --post-install: add or edit post-installation scripts
+ -t | --template-edit: edit template package list
+ -h | --help: display this summary
+
+0.4.9pre18-23
+=============
+
+ - simplaret:
+ - enhanced http retrieval: curl support
+ - enhanced verbosity
+ - get-patches small changes
+ - various fixes
+
+0.4.9pre10-17
+=============
+
+ - lots of simplaret fixes
+
+0.4.9pre9
+=========
+
+ - createpkg:
+ - speedup
+ - ncftpget support
+ - timeout support
+ - sets the correct architecture
+
+ - deleted jail-upgrade
+
+ - removed swaret support
+
+0.4.9pre8
+=========
+
+ - createpkg: bugfix
+
+ - common.sh:
+ - enhanced config file evaluation
+ - fixed function default_arch
+
+ - simplaret:
+ - config evaluation via common.sh
+ - new config parameter SIMPLARET_PURGE_PATCHES
+
+0.4.9pre7
+=========
+
+ - repos: added patches/ metafile creation
+
+ - jail-upgrade:
+ - added option CONSIDER_ALL_PACKAGES_AS_PATCHES
+ - merged swaret and simplaret upgrade procedures
+ - act recursively on patches' folder
+
+ - simplaret: lots of changes, most important are:
+ - new repository scheme, take a look at repos.conf.new.
+ - --get looks first to PATCHES repositories, then ROOT,
+ then REPOS and finally at NOARCH repositories; the
+ firts matching package is downloaded.
+ - new config parameter ROOT_PRIORITY set the priority
+ of folder lookup at a ROOT repository, defaults to
+ "patches slackware extra testing pasture".
+ - for --get, check if an already existing package
+ in the local repository has the same version and
+ build number, otherwise erase the old and download
+ the new one.
+ - fixed --get-paches
+ - added --upgrade option
+ - added --install
+ - added --remove
+ - new config parameter DOWNLOAD_EVEN_APPLIED_PATCHES
+
+ - createpkg: lots of changes
+
+0.4.9pre6
+=========
+
+ - createpkg:
+ - fixes
+ - now with slackbuild error handling
+ - increased verbosity
+
+ - small fixes on rebuildpkg
+
+ - lspkg enhancements
+
+ - simplaret fix on --purge
+
+ - updated default repos.conf
+
+0.4.9pre5
+=========
+
+ - added script "repos"
+
+ - moved simplaret to /usr/bin
+
+0.4.9pre4
+=========
+
+ - createpkg: better command line evaluation,
+ now using "upgradepkg --install-new" to
+ install a package and added the command
+ line option --no-deps so createpkg doesn't
+ goes down to solve all slack-required
+ dependencies.
+
+0.4.9pre3
+=========
+
+ - small fix on createpkg when handling with
+ slackbuilds with similar names
+
+0.4.9pre2
+=========
+
+ - fixed simplepkg.SlackBuild
+
+ - fixed doinst.sh
+
+ - re-organized the source repository
+
+ - added createpkg
+
+ - updated README and README.pt_BR
+
+0.4.8
+=====
+
+ - simplaret: removed extra folder from slamd64 definition
+
+ - fixed a typo
+
+0.4.7
+=====
+
+ - templatepkg bugfix on blank template lines and on package deletion
+ changed simplaret working dir in simplaret.conf.new
+
+0.4.6
+=====
+
+ - small bugfix on jail-update that prevented template update
+
+0.4.5
+=====
+
+ - vserver template update
+
+0.4.4
+=====
+
+ - WARNING option on config file for simplaret
+
+ - SILENT env var, if a non-zero value, keeps simplaret
+ work silenty when purging and works like if WANRING is set
+ to not null.
+
+ - added SIMPLARET_DELETE_DURING config parameter: when set
+ to a non-zero value deletes each package rigth after its
+ installation
+
+0.4.3
+=====
+
+ - added openoffice.org template
+
+0.4.2
+=====
+
+ - common.sh: fix on install_packages when handling
+ with similar package names
+
+0.4.1
+=====
+
+ - templatepkg: fixed tagfiles and comment handling
+
+0.4
+===
+
+ - multi-plataform and version management
+
+ now simplepkg supports jails with architectures and versions
+ others than the main system, read the docs for details.
+
+ - added simplaret: a small script for downloading packages
+
+ - jail-upgrade
+
+ * arch checking via /etc/slackware-version on each jail
+ * supports multi-arch and multi-version repository
+ * integrated with simplaret
+
+ - common.sh: improved functions to support simplaret
+
+0.3.7-0.3.9
+===========
+
+ - bugfix releases
+
+0.3.6
+=====
+
+ - added "-u" option to eval_config to ask for a swaret --update
+
+0.3.5
+=====
+
+ - "main" jail support for jail-update
+
+0.3.4
+=====
+
+ - Started changelog :)
+
diff --git a/tags/0.6rc1/doc/COPYING b/tags/0.6rc1/doc/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/tags/0.6rc1/doc/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/tags/0.6rc1/doc/TODO b/tags/0.6rc1/doc/TODO
new file mode 100644
index 0000000..54b686e
--- /dev/null
+++ b/tags/0.6rc1/doc/TODO
@@ -0,0 +1,5 @@
+simplepkg todo list
+-------------------
+
+TODO list at http://slack.sarava.org/trac/report
+
diff --git a/tags/0.6rc1/doc/mkbuild-pt_BR.tex b/tags/0.6rc1/doc/mkbuild-pt_BR.tex
new file mode 100644
index 0000000..2b82598
--- /dev/null
+++ b/tags/0.6rc1/doc/mkbuild-pt_BR.tex
@@ -0,0 +1,854 @@
+\documentclass[12pt,a4paper,oneside]{article}
+%\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphicx}
+%\usepackage{subfigure}
+\usepackage{mdwlist}
+\usepackage{a4}
+%\topmargin -.5in
+%\addtolength{\hoffset}{-1.0cm}
+%\addtolength{\textwidth}{3.0cm}
+%\textwidth = 400pt
+%\textheight = 680pt
+
+\makeatletter
+
+%\usepackage[pdftex]{color,graphicx}
+%\DeclareGraphicsExtensions{.jpg,.pdf,.mps,.png}
+
+\usepackage[brazil]{babel}
+\usepackage[dvips]{graphicx}
+%\usepackage{textdraw}
+
+\input texdraw
+%\newenvironment{textdraw}{\leavevmode\btexdraw}{\etexdraw}
+
+\newcommand{\rcap}[1]{Capítulo \ref{#1}}
+\newcommand{\rfig}[1]{Figura \ref{#1}}
+\newcommand{\rtab}[1]{Tabela \ref{#1}}
+\newcommand{\rsec}[1]{Seção \ref{#1}}
+
+\makeatother
+
+\begin{document}
+
+
+\title{Construindo SlackBuilds com mkbuild}
+
+\author{Rudson Alves\\v. 1.2}
+
+\date{\today}
+
+\maketitle
+
+%\pagenumbering{roman}
+
+\tableofcontents{}
+%\listoffigures
+%\listoftables
+
+%\abstract{...}
+
+
+\section*{Introdução}
+
+O \textit{mkbuild} é um programa em \textit{script shell} que auxiliar na construção de pacotes para o \textit{Slackware}. A grosso modo, o \textit{mkbuild} é um construtor de \textit{Slackbuild}\footnote{\textit{SlackBuilds} são \textit{script} utilizado para a construção de um pacote binário de um programa, no \textit{Slackware}.}. Ele opera a partir de um arquivo de parâmetros e de modelos de \textit{Slackbuilds} parametrizados.
+
+Este texto apresenta informações úteis para utilização do \textit{mkbuild} na construção destes arquivos de parâmetros, bem como configurar e utilizar modelos de \textit{SlackBuilds} e outras personalizações.
+
+O \textit{mkbuild} é uma ferramenta distribuída juntamente com o \textit{simplepkg}, um projeto do grupo Slack.Sarava. Para a utilização desta ferramenta você deverá instalar o pacote conforme as instruções abaixo:
+
+\begin{verbatim}
+# LASTVERSION=`lynx -dump http://slack.sarava.org/packages/noarch/ \
+ | grep 'simplepkg-.*\.tgz' | awk '{print $2}'`
+# wget $LASTVERSION
+# installpkg simplepkg-*.tgz
+\end{verbatim}
+
+Para mais informações veja os links abaixo:
+
+\begin{itemize}
+ \item http://slack.sarava.org/simplepkg - Descrição de todo o projeto \textit{Simplepkg}, por Rhatto - coordenador do projeto \textit{Slack.Sarava};
+ \item http://slack.sarava.org/node/25 - Tutorial básico de instalação do \textit{Simplepkg}, por rafael2k - um grande colaborador.
+\end{itemize}
+
+
+\section{O modelo generic.mkSlackBuild}
+
+O \textit{mkbuild} utiliza o modelo padrão \textit{generic.mkSlackBuild}, armazenado em
+
+\begin{verbatim}
+/etc/simplepkg/defaults/mkbuild/
+\end{verbatim}
+
+Este modelo é uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} é um modelo genérico de \textit{Slackbuilds} criado por nosso colega e colaborador Luís, para servir como modelo para a construção dos \textit{Slackbuilds}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a única limitação é quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada.
+
+
+\subsection{Os Campos}
+
+O modelo \textit{generic.mkSlackBuild} é um \textit{SlackBuild} genérico com vários campos destacados por duplo colchetes, [[ \dots ]], com mostra o trecho abaixo:
+
+\begin{verbatim}
+...
+<set_variables> all
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]}
+...
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION"
+</set_variables>
+...
+\end{verbatim}
+
+Uma breve descrição destes campos é apresentada na tabela abaixo: \\
+\\
+\begin{tabular}{l|l}
+\hline \hline
+\textbf{Campo} & \textbf{Descrição}\\
+\hline \hline
+PROGRAM NAME & nome do programa \\
+PROGRAM URL & \textit{URL} da fonte do pacote \\
+SLACKBUILD AUTHOR & nome do autor \\
+SOURCE NAME & nome da fonte, sem versão ou extensão \\
+PACKAGE NAME & nome do pacote e ser gerado \\
+ARCH & arquitetura do pacote. Padrão i486 \\
+VERSION & versão do pacote \\
+SLACKBUILD AUTHOR INITIALS & assinatura utilizada pelo autor \\
+PREFIX & prefixo da instalação (/usr, /opt, \dots)\\
+SOURCE EXTENSION & extensão da fonte (bz2, gz, \dots) \\
+UNPACKER & programa de dessempacotamento (geralmenrte "tar") \\
+UNPACKER FLAGS & flags para o desempacotador \\
+DOWNLOAD FOLDER URL & \textit{URL} da pasta onde se encontra a fonte \\
+DECOMPRESSOR & o descompressor para a fonte (gunzip, bunzip2, \dots) \\
+DECOMPRESSOR TEST FLAG & \textit{flag} de teste do descompressor \\
+SIGNING KEY URL & \textit{URL} da chave \textit{gpg} do fonte \\
+SIGNING KEY & chave \textit{gpg} da fonte \\
+MD5SUM EXTENSION & extensão utilizada pelo arquivo \textit{md5sum}\\
+PATCH FILES & arquivo \textit{path} \\
+NUMBER OF PREFIX SLASHES TO STRIP & \dots \\
+SOURCE NAME CONSTRUCTION STRING & string para a construção do nome do arquivo. O padrão é \$SRC\_NAME-\$VERSION.tar.\$EXTENSION \\
+OTHER CONFIGURE ARGS & argumentos de configuração passados ao ./configure \\
+DOCUMENTATION FILES & lista de arquivos para a pasta /usr/doc/PACKAGE \\
+SLACK-DESC & conteúdo do slack-desc, descrição do pacote \\
+REST OF DOINST.SH & conteúdo do doinst.sh \\
+\hline
+\end{tabular}
+\\\\
+
+Em alguns casos o nome do pacote difere do nome da fonte, como é o caso da fonte \textit{sigc++}, que gera o pacote de nome \textit{libsiggc++}. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho fazer uma análise mais detalhada do modelo \textit{generic.mkSlackBuild}.
+
+
+\subsection{As Seções}
+
+As seções no modelo \textit{generic.mkSlackBuild}, são iniciadas pela \textit{tag} <nome\_da\_seção> e terminadas com </nome\_da\_seção>, como em um código \textit{html}, \underline{sem espaços}.
+
+A única seção que não pode ter seu nome alterado é \textit{slackdesc}. Esta seção é editada de uma forma diferenciada pelo \textit{mkbuild} e a alteração de seu nome poderá gerar erro.
+
+Cada seção possui uma \textit{flag} com os possíveis valores:
+
+\begin{description}
+ \item[on] habilitado;
+ \item[off] desabilitado;
+ \item[all] sempre habilitado.
+\end{description}
+
+A intenção destas \textit{flags} é gerar um padrão para as seções, deixando em \textbf{all} as seções que deverão estar sempre habilitadas e \textbf{on} ou \textbf{off} seções que podem ser habilitadas ou desabilitadas de acordo com as necessidades do \textit{SlackBuild} que será construído\footnote{Na versão 1.1.x do mkbuild, todas as seções foram configuradas como \textbf{off}, para simplificar a vizualização do script de configuração \textit{.mkbuild}.}.
+
+As seções padrões do \textit{generic.mkSlackBuild} são listadas na tabela abaixo:
+\\\\
+\begin{tabular}{l|l|c|c}
+\hline
+Seção & Descrição & 1.0.x & 1.1.x\\
+\hline
+head & cabeçalho do \textit{SlackBuild} & all & on \\
+slackbuildrc & carrega \textit{script} \textit{slackbuildrc} & off & off \\
+set\_variables & inicia as variáveis & all & on \\
+slkflags & carrega \textit{flags} para compilação & all & on \\
+error\_codes & códigos de erro para o \textit{createpkg} & off & off \\
+start\_structure & cria diretórios para compilação & all & on \\
+download\_source & baixa a fonte do pacote & off & off \\
+md5sum\_download\_and\_check\_0 & verifica \textit{md5sum} da fonte por código & off & off \\
+md5sum\_download\_and\_check\_1 & verifica \textit{md5sum} da fonte por arquivo & off & off \\
+gpg\_signature\_check & verifica assinatura \textit{gpg} da fonte & off & off \\
+untar\_source & desempacota a fonte & all & on \\
+path\_source & aplica \textit{path} a fonte & off & off \\
+configure & configura pacote & off & off \\
+make\_package & compila o pacote & all & on \\
+install\_package & instala o pacote em diretório temporário & all & on \\
+strip\_binaries & limpa binários & off & off \\
+compress\_manpages & comprime páginas de manuais & off & off \\
+compress\_info\_files & comprime arquivos \textit{info} & off & off \\
+install\_documentation & instala documentação & off & off \\
+slackdesc & \textit{slackdesc} do pacote & off & off \\
+postinstall\_script & \textit{script} de pós-instalação & off & off \\
+build\_package & constrói pacote & all & on \\
+clean\_builds & remove fontes e instalação temporária & off & off \\
+\hline
+\end{tabular}
+\\\\
+
+A terceira e a quarta colunas da tebela acima apresentam o status padrão para as seções nas versões 1.0.x e 1.1.x do \textit{mkbuild}. No \textit{mkbuild} versão 1.0.x, as seções \textbf{all} são configuradas no modelo \textit{generic.mkSlackBuild}. A partir da versão 1.1.x estas seções serão definidas como \textbf{on} ou \textbf{off} no \textit{model.mkbuild}, não mais no modelo \textit{generic.mkSlackBuild}.
+
+
+\section{Configuração}
+
+O \textit{mkbuild} utiliza quatro variáveis de configuração em /etc/simplepkg/simplepkg.conf. São elas:
+
+\begin{description}
+ \item[SLACKBUILDS\_DIR] diretório onde serão guardados os \textit{SlackBuilds} e \textit{slack-required} gerados. Necessário para o uso com a opção \textbf{-c}, \textit{commit}. Padrão /var/simplaret/slackbuilds;
+ \item[MKBUILDS\_DIR] diretório onde serão guardados os \textit{.mkbuilds} criados. Necessário para o uso com a opção \textbf{-c}, \textit{commit}. Padrão /var/simplaret/mkbuilds;
+ \item[SLACKBUILDS\_SVN] endereço do repositório subversion dos \textit{SlackBuilds}. Mantenha o valor padrão;
+ \item[MKBUILDS\_SVN] endereço do repositório subversion dos \textit{SlackBuilds}. Mantenha o valor padrão;
+ \item[COLOR\_MODE] define modo de cores para o \textit{mkbuild} e \textit{createpkg}. Padrão \textit{none}, preto e branco.
+ \end{description}
+
+
+\section{Criando o SlackBuild do aplicativo pyrex}
+
+Para fazer um \textit{SlackBuild} com o \textit{mkbuild} é necessário criar um arquivo com os parâmetros que deseja que sejam passados para o modelo. Um arquivo de configuração simples, \textit{sample-Pyrex-small.mkbuild}, é apresentado abaixo:
+
+\begin{verbatim}
+#--------------------
+# Variables
+#--------------------
+# Author name
+[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader"
+
+#
+# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... )
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+
+#
+# Default enable sections:
+# head, set_variables, slkflags, start_structure, untar_source,
+# make_package, install_package, build_package
+# Warning: don't remove '#>>' and "#<<" tags.
+#>> Start SlackBuild Sections:
+ on: head
+ on: slackbuildrc
+ on: set_variables
+ on: slkflags
+ on: error_codes
+ on: start_structure
+ on: download_source
+ on: md5sum_download_and_check_0
+ on: untar_source
+ on: configure
+ on: make_package
+ on: install_package
+ on: strip_binaries
+ on: install_documentation
+ on: slackdesc
+ on: build_package
+ on: clean_builds
+#<< End SlackBuild Sections
+
+#------------------
+# Sections changes
+#------------------
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
+\end{verbatim}
+
+Isto é o suficiente para fazer o \textit{SlackBuild} do \textit{Pyrex}. Para construir o \textit{SlackBuild} basta chamar o \textit{mkbuild} passando este arquivo de parâmetros:
+
+\begin{verbatim}
+$ mkbuild sample-Pyrex-small.mkbuild
+$ ls
+pyrex.SlackBuild pyrex.mkbuild sample-Pyrex-small.mkbuild
+pyrex.SlackBuild.old sample-Pyrex-large.mkbuild
+\end{verbatim}
+
+Ele irá criar os arquivos \textit{pyrex.SlackBuild} e \textit{slack-required}, se o parâmetro \textit{SLACK REQUIRED} for passado. Arquivos antigos serão renomeados para \textit{.old}.
+
+Um modelo mais completo, com todos os parâmetros, \textit{sample-Pyrex-large.mkbuild}, é disponibilizado junto com o \textit{mkbuild}. Nas seções seguintes é apresentado uma breve descrição dos parâmetros e seções deste arquivo de parâmetros.
+
+
+\subsection{Descrição dos parâmetros do arquivo \textit{.mkbuild}}
+
+Embora existam muitos parâmetros no modelo \textit{generic.mkSlackBuild}, nem todos são necessários para a construção do \textit{SlackBuild}. Neste exemplo foram passados apenas dois parâmetros:
+
+\begin{description}
+ \item[SLACKBUILD AUTHOR] nome do autor;
+ \item[DOWNLOAD FOLDER URL] url completa da fonte do pacote.
+ \end{description}
+
+O mkbuild remove o nome do pacote, versão, assinatura do autor e várias outras informações destes dados, seguindo alguns critérios descritos a seguir.
+
+A sintaxe para a passagem de parâmetros ao \textit{mkbuild} pelo arquivo de parâmetros \textit{.mkbuild} é
+
+\begin{verbatim}
+[[DESCRIÇÃO DO PARÂMETRO]]="Parâmetro entre aspas duplas"
+\end{verbatim}
+
+As aspas duplas podem ser omitidas\footnote{Nas versões inferiores a 0.9.9, do \textit{mkbuild}, a aspas dupla é o delimitador e por isto é obrigatório. Um parâmetro passado sem o aspas duplo será interpretado como um parâmetro vazio, nestas versões.}. O delimitador utilizado pelo \textit{mkbuild} é o primeiro caracter igual (=) a aparecer na linha e o fim de linha. Qualquer outra ocorrência de caracter igual será lido como parte do parâmetro. O mesmo acontece com comentários colocados após o caracter igual. Por exemplo, na linha abaixo:
+
+\begin{verbatim}
+[[PARÂMETRO TEST]]=Este parâmetro é um teste # Este comentário será lido.
+\end{verbatim}
+
+\noindent a leitura do parâmetro \textit{PARÂMETRO TEST} retornará:
+
+\begin{verbatim}
+Este parâmetro é um teste # Este comentário será lido.
+\end{verbatim}
+
+Segue abaixo uma breve descrição dos parâmetros utilizados pelo modelo \textit{generic.mkSlackBuild}.
+
+\subsubsection{SLACKBUILD AUTHOR e SLACKBUILD AUTHOR INITIALS}
+
+O parâmetro \textit{SLACKBUILD AUTHOR} deve conter o nome ou apelido do responsável pelo \textit{SlackBuild}. A declaração deste parâmetro é obrigatória e sem ele o \textit{mkbuild} irá interromper a construção do \textit{SlackBuild}.
+
+\begin{verbatim}
+[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader"
+\end{verbatim}
+
+O parâmetro \textit{SLACKBUILD AUTHOR INITIALS} é construído a partir da primeira letra de cada nome passado pelo parâmetro \textit{SLACKBUILD AUTHOR}, em letras minúsculas. Neste caso a assinatura será "\verb!asn!", as iniciais de \textit{Adalberto Simão Nader}.
+
+Caso deseje passa outro valor basta adicionar a linha abaixo, ao arquivo de parâmetros.
+
+\begin{verbatim}
+[[SLACKBUILD AUTHOR INITIALS]]="adal"
+\end{verbatim}
+
+
+\subsubsection{DOWNLOAD FOLDER URL}
+
+O parâmetro \textit{DOWNLOAD FOLDER URL} é outro parâmetro obrigatório em um arquivo \textit{.mkbuild}. Este parâmetro pode conter o endereço completo da fonte do pacote:
+
+\begin{verbatim}
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+\end{verbatim}
+
+Neste caso várias informações são removidas deste parâmetro. Este parâmetro pode ainda conter apenas o endereço do diretório de onde a fonte poderá ser encontrada:
+
+\begin{verbatim}
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/"
+\end{verbatim}
+
+Neste caso, é necessário a definição de outros parâmetros necessários para a construção do nome do pacote, como \textit{SOURCE NAME, PACKAGE NAME, VERSION e EXTENSION}, descritos a seguir.
+
+
+\subsubsection{SOURCE NAME, PACKAGE NAME, VERSION e EXTENSION}
+
+O \textit{SOURCE NAME} é removido do \textit{URL}, caso não seja passado como parâmetro.
+
+Para que o \textit{SOURCE NAME} seja carregado corretamente, é necessário que o nome da fonte tenha a forma padrão:
+
+\begin{verbatim}
+NOME-DO-PROGRAMA-VER.SÃO.tar.EXTENSÃO
+\end{verbatim}
+
+O nome do programa pode ter vários campos separados por um hífen "\verb!-!", já a versão, pode possuir vários números, ou mesmo letras, separados por ponto e terminados por um "\verb!.tar.!". A extensão deve vir logo após o "\verb!.tar.!".
+
+A variável \textit{PACKAGE NAME}, é construída com o mesmo valor de \textit{SOURCE NAME}, mas em letras minúsculas.
+
+Desta forma, a divisão dos campos no exemplo do aplicativo Pyrex, acima, terá o mesmo valor que as declarações dos parâmetros abaixo:
+
+\begin{verbatim}
+[[SOURCE NAME]]="Pyrex"
+
+[[PACKAGE NAME]]="pyrex"
+
+[[VERSION]]="0.9.5.1a"
+
+[[EXTENSION]]="gz"
+\end{verbatim}
+
+Observe que a precedência é a passagem do valor como parâmetro, e não a sua construção.
+
+
+\subsubsection{UNPACKER e UNPACKER FLAGS}
+
+\textit{UNPACKER} contêm o nome do programa desempacotador das fontes, geralmente o comando "\verb!tar!", enquanto que o parâmetro \textit{UNPACKER FLAGS}, carrega as flags para o desempacotador. Os seus valores padrões são:
+
+\begin{verbatim}
+[[UNPACKER]]="tar"
+[[UNPACKER FLAGS]]="--no-same-owner --no-same-permissions -xvf"
+\end{verbatim}
+
+
+\subsubsection{SOURCE NAME CONSTRUCTION STRING}
+
+Deve conter uma string para a construção do nome da fonte. O valor padrão é
+
+\begin{verbatim}
+[[SOURCE NAME CONSTRUCTION STRING]]="$SRC_NAME-$VERSION.tar.$EXTENSION"
+\end{verbatim}
+
+Observe que os parâmetros passados não são processados, como ocorre em uma leitura de uma variável num bash \textit{script}. Eles são lidos como se fossem uma cadeia de caracteres, por isto não tente escapar o \$ na construção do nome, ou o nome da fonte não será construído corretamente na execução do \textit{SlackBuild}.
+
+Embora a variável \$EXTENSION apareça na construção do nome da fonte, seu valor será substituído durante a construção do \textit{SlackBuild} pelo \textit{mkbuild}. Por isto que não existe inicialização desta variável no modelo \textit{generic.mkSlackBuild}.
+
+
+\subsubsection{DECOMPRESSOR e DECOMPRESSOR TEST FLAG}
+
+Os parâmetros \textit{DECOMPRESSOR} e \textit{DECOMPRESSOR TEST FLAG} são determinados por análise do parâmetro \textit{EXTENSION}, com os valores apresentados na tabela abaixo:
+\\\\
+\begin{tabular}{l|l|c}
+\hline
+EXTENSION & DECOMPRESSOR & DECOMPRESSOR TEST FLAG \\
+\hline
+gz, GZ & gunzip & -t \\
+bz2, BZ2 & bunzip2 & -t \\
+zip, ZIP & unzip & -t \\
+\hline
+\end{tabular}
+
+Caso possua uma fonte comprimida por um compressor diferente, passe estes parâmetros pelo arquivo de parâmetros, \textit{.mkbuild}.
+
+\begin{verbatim}
+[[DECOMPRESSOR]]="programa descompressor"
+[[DECOMPRESSOR TEST FLAG]]="flag de teste"
+\end{verbatim}
+
+
+\subsubsection{DOCUMENTATION FILES}
+
+O valor padrão para \textit{DOCUMENTATION FILES} é
+
+\begin{verbatim}
+[[DOCUMENTATION FILES]]="NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"
+\end{verbatim}
+
+Estes são os nomes mais comuns dos arquivos de documentação, que geralmente são disponibilizados na raiz do diretório das fontes dos programas. O ideal é descompactar a fonte e verificar os arquivos de documentação disponíveis, para passá-los como parâmetro.
+
+
+\subsubsection{PREFIX}
+
+A maioria das fontes de programas disponibilizados atualmente, utilizam uma opção "\verb!--prefix!" no seu \textit{configure}, para determinar o diretório onde o programa será instalado. Nas versões inferiores a 12.0 do \textit{Slackware} o valor desta variável variava entre /usr, /opt e /usr/X11. Na versão 12.0, e provavelmente nas superiores, os diretórios /opt e /usr/X11 foram removidos e todos os pacotes estão sendo instalados em /usr. Por isto o seu valor padrão é /usr.
+
+\begin{verbatim}
+[[PREFIX]]="/usr"
+\end{verbatim}
+
+
+\subsubsection{NUMBER OF JOBS}
+
+O parâmetro \textit{NUMBER OF JOBS} é usado para indicar ao comando \textit{make} o número de processos que podem ser iniciados simultaneamente durante a compilação da fonte. A grande maioria dos programas atuais podem ser compilados em dois ou mais processos simultâneos. Isto reduz sensivelmente o tempo de compilação de um pacote, mesmo que sua máquina possua apenas um processador. Muitos \textit{SlackBuilds} oficiais do \textit{Slackware} utilizam este parâmetro configurado para "\verb!7!" processos, ou seja "\verb!-j7!". Este parâmetro pode ser passado como um número ou com a flag "\verb!-j!", como nos exemplos abaixo.
+
+\begin{verbatim}
+[[NUMBER OF JOBS]]="7"
+\end{verbatim}
+
+\noindent ou
+
+\begin{verbatim}
+[[NUMBER OF JOBS]]="-j7"
+\end{verbatim}
+
+
+\subsubsection{SLACK REQUIRED}
+
+Este parâmetro é composto pela lista de pacotes necessários para a construção do aplicativo. Estes pacotes serão arranjados no arquivo \textit{slack-required}. O formato para este parâmetro é apresentado na linha abaixo:
+
+\begin{verbatim}
+DEPENDÊNCIA_1 [CONDIÇÃO_1] [VERSÃO_1]: DEPENDÊNCIA_2 [CONDIÇÃO_2] [VERSÃO_2]: DEPENDÊNCIA_3 [CONDIÇÃO_3] [VERSÃO_3]: ...
+\end{verbatim}
+
+As condições possíveis são apresentadas na tabela abaixo:
+\\\\
+\begin{tabular}{c|l}
+\hline
+CONDIÇÃO & significado \\
+\hline
+= & igual \\
+> & maior \\
+>= & maior ou igual \\
+\hline
+\end{tabular}
+
+Os campos \textit{CONDIÇÃO} e \textit{VERSÃO} podem ser omitidos. Cada pacote da dependência deve ser separado por um ":".
+
+Para o \textit{SLACK REQUIRED} definido com a linha:
+
+\begin{verbatim}
+[[SLACK REQUIRED]]="dep1 >= 1.1.1: dep2 >= 2.2.2:dep3:dep4:dep5 = 1.0"
+\end{verbatim}
+
+\noindent será gerado o arquivo \textit{slack-required} abaixo:
+
+\begin{verbatim}
+# Dependency list to Pyrex
+#
+# dependency [condition] [version]]
+dep1 >= 1.1.1
+dep2 >= 2.2.2
+dep3
+dep4
+dep5 = 1.0
+\end{verbatim}
+
+
+\subsubsection{SLACKBUILD MODEL}
+
+Este parâmetro contém o nome do modelo utilizado para gerar os \textit{SlackBuilds}. O valor padrão é \textit{generic.mkSlackBuild}. Outros modelos podem ser utilizados adicionando-se o arquivo do modelo no diretório /etc/simplepkg/defaults/mkbuild/. A linha abaixo
+
+\begin{verbatim}
+[[SLACKBUILD MODEL]]="generic.mkSlackBuild.2"
+\end{verbatim}
+
+\noindent define o modelo \textit{generic.mkSlackBuild.2} para a construção do \textit{SlackBuild}.
+
+
+\subsubsection{SLACKBUILD PATH}
+
+Este parâmetro é necessário apenas para uso com a opção "\verb!-c!", \textit{commit}. Ele indica o diretório, na estrutura de diretórios do Slack.Sarava, onde o \textit{SlackBuild} construído deverá ser armasenado. Se este parâmetro não for passado, o \textit{mkbuild} irá pesquisá-lo no repositório do \textit{gentoo}, pela \textit{internet}\footnote{Esta pesquisa automática do mkbuild tem se mostrado pouco eficiente. Por isto é aconselhável verifica com um navegador a localização do \textit{SlackBuild} em http://gentoo-portage.com.}. Caso não consiga resolver com esta pesquisa, o \textit{SlackBuild} será colocado em um diretório padrão para \textit{scripts} não classificados, "\verb!others/unclassified/$PKG_NAME!".
+
+\begin{verbatim}
+[[SLACKBUILD PATH]]="dev/python/pyrex"
+\end{verbatim}
+
+A estrutura de diretórios para armazenamento dos \textit{SlackBuilds} adotadas pelo \textit{Slack.Sarava} segue o mesmo padrão do \textit{portage} do \textit{gentoo}.
+
+
+\subsubsection{Outros Parâmetros}
+
+Outros parâmetros podem ser passados para substituição no modelo \textit{generic.mkSlackBuild}, como o parâmetro \textit{MD5SUM EXTENSION} no trecho abaixo:
+
+\begin{verbatim}
+#[[PATCH FILES]]=""
+#[[MD5SUM CODE]]=""
+[[MD5SUM EXTENSION]]="047574eb5d1b7848a70d4130035f1f3c"
+#[[SIGNING KEY]]=""
+#[[SIGNING KEY URL]]=""
+#[[PATCH FILES]]=""
+\end{verbatim}
+
+Além destes parâmetros padrões do \textit{generic.mkSlackBuild}, qualquer outro parâmetro pode ser criado e incluído ao modelo. Para isto é necessário que seu nome seja incluído entre duplo colchetes como no exemplo abaixo:
+
+\begin{verbatim}
+[[NEW PARAMETER]]="new value"
+\end{verbatim}
+
+O \textit{mkbuild} irá procurar a ocorrência da seqüência \textit{[[NEW PARAMETER]]} no modelo passado por \textit{[[SLACKBUILD MODEL]]} e irá substitui-lo por "\verb!new value!".
+
+
+\subsection{Habilitando seções}
+
+As seções do modelo \textit{generic.mkSlackBuild} são habilitadas na seção iniciada por "\verb!#>>!" e terminada por "\verb!#<<!", no arquivos de parâmetros. Como as seções estão desabilitadas no modelo padrão, \textit{generic.mkSlackBuild}, esta seção do arquivo de parâmetros tem apenas que habilitar as seções desejadas do modelo.
+
+\begin{verbatim}
+#>> Start SlackBuild Sections:
+ on: head
+ on: slackbuildrc
+ on: set_variables
+ on: slkflags
+ on: error_codes
+ on: start_structure
+ on: download_source
+off: md5sum_download_and_check_0
+off: md5sum_download_and_check_1
+off: gpg_signature_check
+ on: untar_source
+off: patch_source
+ on: configure
+ on: make_package
+ on: install_package
+ on: strip_binaries
+off: compress_manpages
+off: compress_info_files
+ on: install_documentation
+ on: slackdesc
+# esta linha é ignorada
+off: postinstall_script
+ on: build_package
+ on: clean_builds
+#<< End SlackBuild Sections
+\end{verbatim}
+
+No caso do exemplo acima, são desabilitadas as seções: \textit{md5sum\_download\_and\_check\_0}, \textit{md5sum\_download\_and\_check\_1}, \textit{gpg\_signature\_check}, \textit{patch\_source}, \textit{compress\_manpages}, \textit{compress\_info\_files} e \textit{postinstall\_script}. Linhas iniciadas por uma tralha, \#, são ignoradas. Como no modelo generic.mkSlackBuild todas as seções estão desabilitadas ("off"), apenas as seções ligadas necessitam ser habilitadas.
+
+
+\subsection{Substituição de seções no modelo}
+
+Em algumas situações pode ser necessário substituir o conteúdo de uma seção. Estas mudanças são feitas iniciando uma seção, no arquivo de parâmetros, pela \textit{tag} "\verb!#>nome_da_seção!" e terminar pela \textit{tag} "\verb!#<nome_da_seção!". Quando o \textit{mkbuild} localiza estas seções no arquivo de parâmetros, ele substitui as seções padrões, de mesmo nome, pelo conteúdo definido no arquivo de parâmetros. Por exemplo:
+
+\begin{verbatim}
+#>untar_source
+# Untar program
+
+# Change to temp dir
+cd "$TMP"
+
+# Uncompress e untar source
+gunzip "$SRC_DIR/$SRC" | tar --no-same-owner --no-same-permissions -xvf || exit $ERROR_TAR
+
+# Change to source dir
+cd "$PKG_SRC"
+#<untar_source
+\end{verbatim}
+
+\noindent irá substituir a seção \textit{untar\_source} do modelo \textit{generic.mkSlackBuild}, pelo conteúdo definido no arquivo de parâmetros acima. A única exceção a esta regra é a seção \textit{slackdesc}.
+
+\begin{verbatim}
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
+\end{verbatim}
+
+Para esta seção, o \textit{mkbuild} irá substituir o parâmetro \textit{[[SLACK-DESC]]} pelo conteúdo definido entre "\verb!#>slackdesc!" e "\verb!#<slackdesc!", além de redimensionar a régua de orientação do \textit{slack-desc}.
+
+
+\section{Exemplo 2: mkbuild do dosbox}
+
+Embora a documentação do comando \textit{mkbuild} seja relativamente longa, não é necessário muito esforço para se fazer um \textit{SlackBuild} de um \textit{pacote bem comportado}.
+
+Entenda-se por \textit{pacote bem comportado}, pacotes que podem ser construídos pelos comandos:
+
+\begin{verbatim}
+ # ./configure && make && make install
+\end{verbatim}
+
+e cujo o nome da fonte obedeça o padrão: \textit{NOME.DO.PACOTE-VERSÃO.tar.EXTENSÃO}. Um bom exemplo disto é o pacote do dosbox, o qual será usado como exemplo nesta seção.
+
+Inicie a construção do \textit{.mkbuild} com o comando abaixo:
+
+\begin{verbatim}
+# mkbuild -a "<<seu nome>>" -ai "<<iniciais>>" -n dosbox
+\end{verbatim}
+
+Não é necessário o nome e assinatura passados pelas opções \textbf{-a} e \textbf{-ai}, mas é aconselhável. A opção \textbf{-n} diz ao \textit{mkbuild} para copiar o modelo em \textit{/etc/simplepkg/\dots/model.mkbuild}, para o diretório atual com o nome \textit{dosbox.mkbuild}, e aplicar o nome "dosbox" a este modelo.
+
+Em seguida, edite o arquivo \textit{dosbox.mkbuild}, com um editor de sua escolha, e preencha os campos com os valores abaixo:
+
+\begin{verbatim}
+[[DOWNLOAD FOLDER URL]]="http://downloads.sourceforge.net/dosbox/dosbox-0.71.tar.gz"
+[[SLACKBUILD PATH]]="games/emulation/dosbox"
+
+#>slackdesc
+dosbox: DOSBox.slackBuild by Slack.Sarava
+dosbox:
+dosbox: DOSBox is a DOS-emulator that uses the SDL-library which makes DOSBox
+dosbox: very easy to port to different platforms. DOSBox has already been
+dosbox: ported to many different platforms, such as Windows, BeOS, Linux,
+dosbox: MacOS X...
+dosbox:
+dosbox: DOSBox also emulates CPU:286/386 realmode/protected mode, Directory
+dosbox: FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
+dosbox: SoundBlaster/Gravis Ultra Sound card for excellent sound
+dosbox: compatibility with older games...
+#<slackdesc
+
+\end{verbatim}
+
+Por se tratar de um \textit{pacote bem comportado}, o \textit{dosbox.mkbuild} é bem simples. Todas as informações são removidas da URL do programa, não necessitando de mais declarações. O campo \textit{SLACKBUILD PATH} é necessário apenas se você for enviar o \textit{SlackBuild} para o repositório do grupo \textit{Slack.Sarava}. A seção \textit{slackdesc} também não é necessária, mas é importante, pois informa o conteúdo do pacote durante a instalação.
+
+
+\section{Criando um \textit{patch} para pequenas alterações}
+
+A partir da versão 1.2 do \textit{mkbuild} é possível fazer pequenas alterações ao modelo \textit{generic.mkSlackBuild}, com a aplicação de um \textit{patch} simplificado. Este \textit{patch} é aplicado ao modelo \textit{generic.mkSlackBuild} antes que qualquer outra edição seja feita ao modelo.
+
+Um \textit{patch} simplificado deve ser definido no arquivo de parâmetros \textit{.mkbuild} entre as \textit{tags} \verb!#p>! e \verb!#p<!, com no exemplo abaixo:
+
+\begin{verbatim}
+...
+#p>
+... Alterações ...
+#p<
+...
+\end{verbatim}
+
+As linhas com as alterações devem sempre iniciar com um \textit{caracter de controle}, seguido pelo conteúdo da linha a ser alterada, removida ou conferida ao modelo \textit{generic.mkSlackBuild}. O formato do \textit{patch} usado pelo \textit{mkbuild} segue o mesmo padrão gerado pelo comando \verb!diff -u!, com as seguintes diferenças:
+
+\begin{enumerate}
+ \item Não possui numeração de linhas. A posição das alterações é referenciada por uma ou mais linhas de referência. Uma linha de referência deve ser única, ou em caso de várias linhas, a seqüência deve ser única;
+ \item O número de linhas de referência é variável e não necessita de linhas de referência ao final da alteração;
+ \item O caracter para separar as alterações é o caracter igual, =.
+\end{enumerate}
+
+
+\subsection{Caracteres de controle}
+
+Os \textit{caracteres de controle} são apenas quatro. Com eles é possível fazer todas as alterações por substituição de linha necessárias em um \textit{patch}. Segue abaixo a descrição destes caracteres de controle:
+
+\begin{description}
+ \item[" " (espaço)] este caracter de controle serve para definir linhas de referência, necessárias para localizar a posição das alterações no modelo \textit{generic.mkSlackBuild};
+ \item[- (menos)] serve para referenciar linhas que serão removidas do modelo. Este caracter de controle serve ainda para definir linhas de referência, entretanto lembre-se que elas serão removidas;
+ \item[+ (mais)] serve para indicar linhas que serão adicionadas ao modelo, logo após a referência;
+ \item[= (igual)] serve para indicar o final de uma alteração e iniciar a próxima. Qualquer coisa colocado após um \textit{caracter de controle} igual, será ignorado.
+ \end{description}
+
+Para simplificar a compreensão do funcionamento deste \textit{patch} simplificado, segue abaixo um exemplo para alterações hipotéticas.
+
+
+\subsection{mkpatch: Alterando uma linha}
+
+Neste exemplo, será alterado o conteúdo da variável \textit{ARCH} para fixá-la em \textit{i586}. Isto pode ocorre na construção de pacotes de programas pré-compilados ou um pacote binário. Para fazer esta alteração, basta acrescentar o \textit{patch} abaixo ao final do arquivo \textit{.mkbuild}:
+
+\begin{verbatim}
+...
+#p>
+ PKG_NAME="[[PACKAGE NAME]]"
+-ARCH=${ARCH:=[[ARCH]]}
++ARCH=i586
+#p<
+\end{verbatim}
+
+A primeira linha, \verb!PKG_NAME="[[PACKAGE NAME]]"!, iniciada pelo \textit{caracter de controle} \textbf{espaço}, é uma linha de referência a ser procurada no modelo \textit{generic.mkSlackBuild}, posicionando a alteração ao modelo. A segunda linha, com o \textit{caracter de controle} \textbf{menos}, indica a linha que será removida: \verb!ARCH=${ARCH:=[[ARCH]]}"!. A terceira linha, com o \textit{caracter de controle} \textbf{mais}, será adicionada logo em seguida: \verb!ARCH=i586!.
+
+Observe que o mesmo poderia ser feito com o \textit{patch} abaixo:
+
+\begin{verbatim}
+...
+#p>
+-ARCH=${ARCH:=[[ARCH]]}
++ARCH=i586
+#p<
+\end{verbatim}
+
+Como o \textit{caracter de controle} \textbf{menos} também serve como referência e a alteração será feita da mesma forma.
+
+
+\subsection{mkpatch: Aplicando uma segunda alteração}
+
+Para uma segunda alteração ao modelo, vou alterar a forma de instalação e fazer mais algumas edições a seção \textit{strip\_binaries}:
+
+\begin{verbatim}
+#p>
+-ARCH=${ARCH:=[[ARCH]]}
++ARCH=i586
+===
+ <install_package> off
+-# Install
++# Install Setup
+-make install DESTDIR="$PKG" || exit $ERROR_INSTALL
+-./setup --prefix="$PKG" || exit $ERROR_INSTALL
+===
+ # Strip binaries
+ ( cd "$PKG"
+- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+- xargs strip --strip-unneeded 2> /dev/null
+- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+- xargs strip --strip-unneeded 2> /dev/null
++ find . | xargs file | grep ELF | xargs strip --strip-unneeded 2> /dev/null
+#p<
+\end{verbatim}
+
+A segunda alteração, troca a linha de comentário adicionado a palavra \verb!Setup! e por fim o comando de instalação, para a chamada \verb!./setup! \dots
+
+A terceira alteração é feita à seção \textit{strip\_binaries}, onde os dois comando \verb!find! são trocados por um terceiro mais simples.
+
+
+\section{Apêndice-A}
+
+Vários outros parâmetros podem ser passados ao \textit{mkbuild} pela linha de comando. Um manual completo destas opções pode ser consultado passando \textit{flag} \verb!--help! ou \verb!-h!, ao \textit{mkbuild}:
+
+\begin{verbatim}
+NAME
+ mkbuild - create SlackBuild script from .mkbuild input file
+
+SYNOPSIS
+ mkbuild [OPIONS] [mkbuild_file]
+
+DESCRIPTION
+ <mkbuild_file> input file with build rules and variables
+
+ Input options:
+ -a, --author <author_name>
+ author name
+ -ai, --author_initials <initials>
+ author signature
+ -bn, --build-number
+ change build number
+ -cs, --const_string <string>
+ construction string to source name
+ -u, --url <url_address>
+ url address to source
+ -pn, --pkg_name <package_name>
+ package name
+ -sn, --src_name <source_name>
+ source name
+ -pv, --pkg_version <version>
+ package version
+ -md, --model <SlackBuild_model>
+ SlackBuild model file
+ -j, --jobs <jobs_number>
+ Number of jobs to run simultaneously
+ --prefix <install_dir>
+ Prefix install directory
+ -pf, --patch-files
+ List of patch files
+ -npss, --nps-strip
+ Number of prefix slashes to strip
+
+ Program options:
+ -h, --help
+ this help mesage
+ -cs, --commit-slackbuild
+ commit SlackBuilds in local svn SlackBuild tree
+ -cm, --commit-mkbuild
+ commit .mkbuild in local svn mkbuild tree
+ -c, --commit-all
+ commit SlackBuild and .mkbuild files in local svn tree
+ -n, --new <mkbuild_name>
+ start a new mkbuild configure file
+ -v, --version
+ program version
+ -V, --verbose
+ print debug information
+ -sp, --slackbuild-path
+ print SlackBuild path in Slack.Sarava tree
+
+EXAMPLES
+ mkbuild -c pyrex.mkbuild
+ build pyrex.SlackBuild and commit .mkbuild and .SlackBuild in
+ Slack.Sarava local tree.
+ mkbuild -a "Jose Araujo" -ai "ja" -n pyrex
+ make a basic pyrex.mkbuild with author name "Jose Araujo" and
+ author signature "ja".
+ mkbuild --prefix /usr/local pyrex.mkbuild
+ build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild
+ variables and options definitions.
+
+AUTHOR
+ Written by Rduson R. Alves
+
+AVAILABILITY
+ by svn: svn checkout svn://slack.sarava.org/simplepkg
+ this mkbuild is found in branches/0.6/
+
+REPORTING BUGS
+ Report bugs to <alves_list@yahoo.com.br>
+
+COPYRIGHT
+ Copyright © 2006 Free Software Foundation, Inc.
+ This is free software. You may redistribute copies of it under the
+ terms of the GNU General Public License
+ <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
+ extent permitted by law.
+\end{verbatim}
+
+Uma opção interessante é a \verb!-c!, utilizada para adicionar e atualizar uma cópia do \textit{SlackBuild} gerado na lista de \textit{SlackBuilds} local.
+
+Slack.Sarava agradece a toda e qualquer contribuição que possa nos ajudar a manter e a desenvolver este projeto.
+
+\end{document}
+
diff --git a/tags/0.6rc1/doc/simplaret-en.tex b/tags/0.6rc1/doc/simplaret-en.tex
new file mode 100644
index 0000000..703aae2
--- /dev/null
+++ b/tags/0.6rc1/doc/simplaret-en.tex
@@ -0,0 +1,312 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\usepackage{html,makeid}
+
+\title{Simplaret: simplepkg retrieval tool}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+Simplaret is a \htmladdnormallink{simplepkg}{http://slack.sarava.org/simplepkg-en} tool used to download packages from local and remote repositories. With simplaret, one can grab packages for all archictectures and versions of slackware-like distributions that follows the mirror guidelines, allowing an easy management all jails and slackware installations in a machine, no matter wich arquiteture or version each one has.
+
+It was inspired in swaret behavior but don't tries to get its complexity level, but execute package download in a different way, where the local repository is organized by archictecture and version. It can also search for packages. It runs on top of pkgtool and is totally non-instrusive and can search, add, remove and upgrade packages. Portuguese version \htmladdnormallink{here}{/simplaret}.
+\end{abstract}
+
+\section{Downloading and installing}
+
+Simplaret comes with simplepkg, wich installation and configuration is detailed at http://slack.sarava.org/simplepkg. Simplaret uses /etc/simplepkg/simplepkg.conf for its definitions and /etc/simplepkg/repos.conf for repository information.
+
+The default configuration is placed, respectively, at /etc/simplepkg/defaults/simplepkg.conf and /etc/simplepkg/defaults/repos.conf and should work for most people, but if you want to change something please don't edit the default configuration files as the default setting may change in future releases. If you have a /etc/simplepkg/repos.conf file, then simplaret will just ignore the default repos.conf.
+
+\section{Using simplaret}
+
+Simplaret stores its data in system wide folders. Then, some funcionality will just be available if its run with root user capabilities. The first thing you need to do with simplaret is to fetch repository metadata, using
+
+\begin{verbatim}
+simplaret --update
+\end{verbatim}
+
+or simply
+
+\begin{verbatim}
+simplaret update
+\end{verbatim}
+
+as simplepkg supports both command line behaviour (--update or just update). After that, you can search for packages using commands like
+
+\begin{verbatim}
+simplaret search ekiga
+\end{verbatim}
+
+The result should be something like
+
+\begin{verbatim}
+REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz
+\end{verbatim}
+
+As we'll see afterwards, "REPOS" means the repository type, "sarava" is the repository name, "arch" is the package architecture (i386 in this case) and "version" is the repository version (11.0 in this case).
+
+To install this package, just type
+
+\begin{verbatim}
+simplaret install ekiga
+\end{verbatim}
+
+By default, if simplaret finds in the repository a slack-required file for this package (i.e, the file ekiga.slack-required in the same folder of the binary package) then it will try to install all unmet dependencies. This default behaviour can be disabled through config file parameters.
+
+If you just want to download the package, type
+
+\begin{verbatim}
+simplaret get ekiga
+\end{verbatim}
+
+In the case of simplaret finds more than one package with the same name, it will get in the order that the "search" option shows them. The search precedence can also be defined by config file parameters. For instance, the command
+
+\begin{verbatim}
+simplaret search kernel-generic
+\end{verbatim}
+
+can return something like
+
+\begin{verbatim}
+ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.17.13-i486-1.tgz
+ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.18-i486-1.tgz
+\end{verbatim}
+
+So the command
+
+\begin{verbatim}
+simplaret install kernel-generic
+\end{verbatim}
+
+will attempt to install the package "kernel-generic-2.6.17.13-i486-1.tgz" and not the file "kernel-generic-2.6.18-i486-1.tgz". If you want to force simplaret to get and specific package, use its complete file name:
+
+\begin{verbatim}
+simplaret install kernel-generic-2.6.18-i486-1.tgz
+\end{verbatim}
+
+If a package is already installed in the system, the --install option will try to upgrade it if the version or build number between the installed package and the one in the repository are different. So the command
+
+\begin{verbatim}
+simplaret install simplepkg
+\end{verbatim}
+
+updates simplepkg in the case there's a new version. To remove a package, type
+
+\begin{verbatim}
+simplaret remove nome-do-pacote
+\end{verbatim}
+
+That's just an alias for the standard removepkg command.
+
+Simplaret stores downloaded packages in a system folder that defaults to /var/simplaret. As you get more and more packages, simplaret will consume more space ir your disk. To erase your local repository folder, use the command
+
+\begin{verbatim}
+simplaret purge
+\end{verbatim}
+
+This will erase just the packages from the current arch and version. Details about how to erase the repository for different arch and version are in another session.
+
+You can also force simplaret to erase just old packages. The following command erases just packages older than six weeks or more:
+
+\begin{verbatim}
+simplaret purge -w 3
+\end{verbatim}
+
+\section{Downloading patches and upgrading the system}
+
+Simplaret hasn't just about package installing and removal, it has two more important features: patches retrieval and application. Assuming that the patches repository of your slackware flavour is correctly configured (what should work with almost everyone with the default configuration), you can fetch the available patches using the command
+
+\begin{verbatim}
+simplaret get-patches
+\end{verbatim}
+
+If you don't just donwload but also apply those patches, use
+
+\begin{verbatim}
+simplaret upgrade
+\end{verbatim}
+
+\section{Working with more than one architecture and version}
+
+Until now we just looked what is the requirement for all package management system: package retrieval, installation, search, upgrade and dependency resolution. What makes simplaret different from another tools is the ability to deal with different architectures and versions and slackware installations.
+
+The features descibed in this section will just make sense after you read the next section, when we'll talk about multiple slackware installations and jails in the same computer.
+
+Suppose you're running Slackware (arch i386) bit wants to update the package list from Slamd64 version 11.0 (arch x86\_64). To do that, just type
+
+\begin{verbatim}
+ARCH=x86_64 VERSION=11.0 simplaret update
+\end{verbatim}
+
+This command grabs the Slamd64 package list without confliting in any way with the standard and already downloaded i386 Slackware package list. This doesn't happens because simplaret stores metadata from different archs and versions at different folders.
+
+Its optional to pass ARCH and VERSION environment variables to simplaret. If one or none of them was specified, simplaret uses the standar system value, obtained from the file /etc/slackware-version, or uses config parameters to do that.
+
+As an example, to search for a package in the arch powerpc (Slackintosh) version 11.0, just type
+
+\begin{verbatim}
+ARCH=powerpc VERSION=11.0 simplaret search package-name
+\end{verbatim}
+
+All command previously mentioned can work that way, except those that install or remove packages as its dangerous to mix packages from different archs and versions in the same system.
+
+\section{Working with multiple installations}
+
+The previously section mentions a feature that just makes sense in systems where there's more than one slackware-like installation using different archs and versions.
+
+Say you have a x86\_64 machine with three installed systems:
+
+\begin{enumerate}
+ \item Slamd64 11.0 at the root folder
+ \item Slackware 11.0 at /mnt/slackware-1
+ \item Slackware 10.2 at /mnt/slackware-2
+\end{enumerate}
+
+In the case of package install or patch retrieval and application, simplaret supports the environment variable ROOT to specify which folder simplaret should look for a system.
+
+Then, to install a package at /mnt/slackware-1, just type
+
+\begin{verbatim}
+ARCH=i386 VERSION=11.0 simplaret update
+ROOT=/mnt/slackware-1 simplaret install package-name
+\end{verbatim}
+
+The first command just updates the package list and the second makes simplepkg install the package with using /mnt/slackware-1 arch and version. If you want to do the same at /mnt/slackware-2, use the analogous command
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 simplaret update
+ROOT=/mnt/slackware-2 simplaret install package-name
+\end{verbatim}
+
+There's also a feature to make patch retrieval and application with just one command, using the file /etc/simplepkg/jailist. This file is used by simplepkg's mkjail script to store with jails you have on your system but is also used by simplaret to upgrade all jails with just one command.
+
+Considering that your box has the three previously mentioned slackware installation. Then, to add /mnt/slackware-1 and /mnt/slackware-2 in the automatic upgrade list, add the following lines in your /etc/simplepkg/jailist (without spaces):
+
+\begin{verbatim}
+/mnt/slackware-1
+/mnt/slackware-2
+\end{verbatim}
+
+The root system doesn't need to be added in this file. Then, you can get the patches for all your three systems with the command
+
+\begin{verbatim}
+simplaret get-patches
+\end{verbatim}
+
+To get the patches and/or apply them in all jails (including the root system), use
+
+\begin{verbatim}
+simplaret upgrade
+\end{verbatim}
+
+This feature makes easier to keep all your installations always upgraded.
+
+\section{The repos.conf file}
+
+Now that we just talked about all simplaret features, its time to take a tour at its configuration files. The first one we'll say about is the repository definition file, /etc/simplepkg/repos.conf.
+
+If you don't mind to make an advanced simplaret usage, then probably you can just leave this section as the default config should work for almost all standard situations and you'll just need to edit repos.conf to change repository priorities.
+
+The repos.conf file contains one repository definition per line using the following syntax:
+
+\begin{verbatim}
+TYPE[-ARCH][-VERSION]="name%URL"
+\end{verbatim}
+
+The content in brackets are optional depending on the repository type as we'll see later in this section. The repository types supported by simplaret are:
+
+\subsection{PATCHES}
+
+PATCHES: used for repositories containing patches and which file metadata is the file FILE\_LIST instead the standard FILELIST.TXT; example:
+
+\begin{verbatim}
+PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"
+\end{verbatim}
+
+This defines a patches repository for arch i386 (official Slackware), version 11.0 and named as "sarava".
+
+Its optional to have a PATCHES definition in order to get patches: the ROOT repository definition just take care of that and you'll just need to use a PATCHES definition if you want to give precedence to some patches repository over all other definition types.
+
+\subsection{ROOT}
+
+ROOT: this type specifies the default slackware-like repository, where the content is sorted by version. An official slackware repository then is defined as
+
+\begin{verbatim}
+ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+\end{verbatim}
+
+ROOT repositories needs just the arch definition, a name and an URL. In the previous case, we have a ROOT repository called "tds". It doesn't need any version information as its already considers tha the content is sorted in folders like http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ and http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/.
+
+\subsection{REPOS}
+
+REPOS: this repository type ir arch and version oriented, like
+
+\begin{verbatim}
+REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"
+\end{verbatim}
+
+In the above case, a repository called "sarava" is defined using arch i386 and version 11.0 with URL http://slack.sarava.org/packages/slackware/slackware-11.0/. This repository type is recommended when using non-official repositories.
+
+\subsection{NOARCH}
+
+NOARCH: the last type is used to define repositories where packages are arch and version independent, like
+
+\begin{verbatim}
+NOARCH="sarava%http://slack.sarava.org/packages/noarch"
+\end{verbatim}
+
+In any repository type, the supperted URL schemes are http://, ftp:// or file:// (for local repositories).
+
+\section{Repository order and precedence}
+
+As simplaret supports more than one repository definition for each type, arch or version, each definition has its own name. Definitions can have the same name just if they're dont use the same repository type and/or arch and version.
+
+There's also a priority rule between the repository types wich defines a precedence order. Repositories are searched according the following order:
+
+\begin{itemize}
+ \item PATCHES has the highest priority: if a package from a given arch and version is not found in the first (if existent) PATCHES definition, then the next one is searched until all PATCHES definitions are searched.
+ \item Then, the package is searched in all ROOT defintions in the order they appear at repos.conf.
+ \item The next searched repository type is REPOS in the specified arch an version, in the order they appear at repos.conf.
+ \item At last, NOARCH type is searched in the order they're defined.
+\end{itemize}
+
+In the case you're issuing an upgrade or just geting patches, simplaret by default will just search in PATCHES and ROOT definitions.
+
+At REPOS and ROOT is also possible to specify its internal search order according its subfolders.
+
+\section{Configuration file simplepkg.conf}
+
+Simplaret also stores its configurations inside simplepkg's configuration file /etc/simplepkg/simplepkg.conf. This file is well commented and you should find there a description of all supported options.
+
+\section{But why use that?}
+
+You may ask why someone wishes to use such tool.
+
+Simplaret was written with a *x86 environment in mind, where lots of jails with different archs and versions are installed. Suppose a x86\_64 with the following chroots installed:
+
+\begin{itemize}
+ \item slamd64 11.0
+ \item slackware 10.0
+ \item slackware 11.0 with additional i686 packages
+ \item uSlack (i386 uClibc)
+\end{itemize}
+
+Keep all this stuff update manually is really a headache. Simplaret just tries to make it trivial.
+
+\section{Additional information}
+
+Simplaret was written by Silvio Rhatto (rhatto at riseup.net) and is released under GPL license. The code can be obtained from the subversion repository:
+
+\begin{verbatim}
+svn checkout svn://slack.sarava.org/simplepkg
+\end{verbatim}
+
+Simplepkg's wiki is http://slack.sarava.org/trac/wiki/Simplepkg and its mailing list address is http://listas.sarava.org/wws/info/slack.
+
+\end{document}
diff --git a/tags/0.6rc1/doc/simplaret-pt_BR.tex b/tags/0.6rc1/doc/simplaret-pt_BR.tex
new file mode 100644
index 0000000..986dbb0
--- /dev/null
+++ b/tags/0.6rc1/doc/simplaret-pt_BR.tex
@@ -0,0 +1,376 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\usepackage{html,makeid}
+
+\title{Simplaret: ferramenta para obtenção de pacotes}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+O \emph{simplaret} é a ferramenta do \htmladdnormallink{simplepkg}{http://slack.sarava.org/node/12} utilizada para obter pacotes de repositórios locais ou remotos. Com ele, você pode não só baixar pacotes do seu sistema \emph{slackware} como também pode baixar de qualquer versão ou arquitetura cujo repositório siga os \htmladdnormallink{Mirror Guidelines do Slackware}{http://www.slackware.com/getslack/mirroring_guidelines.txt}, permitindo que você gerencie facilmente todas as suas jaulas e instalações de Slackware, independentemente da arquitetura ou versão que elas utilizem. English version \htmladdnormallink{here}{/node/17}.
+
+Além da obtenção, o \emph{simplaret} ainda pode fazer a instalação, a remoção ou a atualização dos pacotes de um sistema e também das demais jaulas existentes numa máquina. O simplaret é totalmente não-intrusivo no sistema e roda sobre o pkgtool.
+\end{abstract}
+
+\section{Obtendo e instalando}
+
+O \emph{simplaret} acompanha o \htmladdnormallink{simplepkg}{http://slack.sarava.org/node/12} e por isso sua instalação é feita baixando o pacote do simplepkg
+em \htmladdnormallink{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/} e em seguida instalando-o com o comando
+
+\begin{verbatim}
+installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+\end{verbatim}
+
+A partir daí você já pode utilizar o \emph{simplaret} para baixar pacotes dos repositórios padrão ou então alterar a lista de repositórios do arquivo \emph{/etc/simplepkg/repos.conf} ou a configuração do aplicativo pelo arquivo \emph{/etc/simplepkg/simplepkg.conf}.
+
+A configuração padrão de repositórios no simplaret se encontra em \emph{/etc/simplepkg/defaults/repos.conf}, mas não recomendamos você editá-la. Use, ao invés disso, o \emph{/etc/simplepkg/repos.conf} para sua configuração personalizada: se o simplaret encontrar esse arquivo, ele simplesmente ingorará as definições padrão de repositório.
+
+\section{Usando o simplaret}
+
+Em geral, como o \emph{simplaret} armazena as informações em pastas do sistema, algumas funcionalidades só estarão disponíveis quando o mesmo é rodado pelo superusuário do sistema.
+
+Antes de explorar todas as funcionalidades do \emph{simplaret}, é necessário atualizar a lista de pacotes para sua arquitetura e versão, o que pode ser feito com o comando
+
+\begin{verbatim}
+simplaret --update
+\end{verbatim}
+
+ou simplesmente
+
+\begin{verbatim}
+simplaret update
+\end{verbatim}
+
+já que o \emph{simplaret} suporta que suas opções básicas de linha de comando sejam passas precedidas por dois hífens ou não (\emph{--update} ou \emph{update}).
+
+Depois de atualizar a lista de pacotes, experimente buscar por um pacote com um comando do tipo
+
+\begin{verbatim}
+simplaret search ekiga
+\end{verbatim}
+
+O resultado pode ser algo do tipo
+
+\begin{verbatim}
+REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz
+\end{verbatim}
+
+Como veremos adiante, "REPOS" significa o tipo de repositório, "sarava" é o nome do
+repositório, "arch" mostra a arquitetura do pacote e do repositório (\emph{i386}, no caso)
+e "version" a versão do repositório (\emph{11.0}, no caso).
+
+Para instalar esse pacote, basta o comando
+
+\begin{verbatim}
+simplaret install ekiga
+\end{verbatim}
+
+Por padrão, se o \emph{simplaret} encontrar no repositório um arquivo \emph{slack-required} referente ao pacote en questão (ou seja, um arquivo \emph{ekiga.slack-required} na mesma pasta que o pacote do ekiga, neste caso), então o \emph{simplaret} tentará instalar todos os requisitos contidos nesse slack-required, caso já não estejam instalados no sistema. Essa resolução de dependências automática pode, no entanto, ser desabilitada através de um parâmetro de configuração, como veremos a seguir.
+
+Se você apenas quiser baixar o pacote, digite apenas
+
+\begin{verbatim}
+simplaret get ekiga
+\end{verbatim}
+
+No caso do \emph{simplaret} encontrar mais de um pacote com o mesmo nome, ele baixará na ordem que a opção "search" listá-los, sendo que essa precedência é definida de acordo com a ordem em que os repositórios estão listados no arquivo de configuração. Por exemplo, o comando
+
+\begin{verbatim}
+simplaret search kernel-generic
+\end{verbatim}
+
+pode retornar algo como
+
+\begin{verbatim}
+ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.17.13-i486-1.tgz
+ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.18-i486-1.tgz
+\end{verbatim}
+
+Assim, o comando
+
+\begin{verbatim}
+simplaret install kernel-generic
+\end{verbatim}
+
+instalará o pacote "kernel-generic-2.6.17.13-i486-1.tgz" ao invés do pacote "kernel-generic-2.6.18-i486-1.tgz". Caso você queira forçar a instalação do segundo pacote, basta especificá-lo com o nome completo:
+
+\begin{verbatim}
+simplaret install kernel-generic-2.6.18-i486-1.tgz
+\end{verbatim}
+
+Se um pacote já estiver instalado no sistema, a opção install fará o upgrade do mesmo, caso a versão ou o build number do pacote presente no repositório for diferente da instalada no sistema. Assim, o comando
+
+\begin{verbatim}
+simplaret install simplepkg
+\end{verbatim}
+
+atualiza o simplepkg caso haja uma nova versão disponível nalgum repositório.
+
+Para remover um pacote, digite
+
+\begin{verbatim}
+simplaret remove nome-do-pacote
+\end{verbatim}
+
+o que na verdade é apenas uma chamada indireta ao removepkg.
+
+O \emph{simplaret} armazena pacotes baixados de repositórios numa pasta local do sistema, que por padrão é \emph{/var/simplaret}. Conforme você vai baixando e instalando pacotes, essa pasta tende a crescer e ocupar muito espaço. Para apagar os pacotes, basta usar o comando
+
+\begin{verbatim}
+simplaret purge
+\end{verbatim}
+
+Isso apagará apenas os pacotes da arquitetura e versão usadas atualmente. Detalhes de como apagar os pacotes de todas a arquiteturas e versões serão dados numa seção seguinte.
+
+Você também pode forçar o \emph{simplaret} a apagar apenas pacotes antigos. O comando a seguir apaga apenas os pacotes baixados a três semanas ou mais (ou seja, os pacotes baixados a menos de três semanas continuam armazenados):
+
+\begin{verbatim}
+simplaret purge -w 3
+\end{verbatim}
+
+\section{Baixando patches e atualizando o sistema}
+
+O \emph{simplaret} possui, além do básico do gerenciamento de pacotes, duas funcionalidades adicionais: a obtenção e a aplicação de patches (pacotes contendo atualizações e correções de segurança).
+
+Assumindo que os repositórios contendo patches para sua distribuição do tipo Slackware estejam corretamente configurados, o que ocorre com a configuração padrão que acompanha o \emph{simplepkg} e que veremos a seguir como alterá-la, você pode baixar os patches disponíveis para o seu sistema com o comando
+
+\begin{verbatim}
+simplaret get-patches
+\end{verbatim}
+
+Se você quiser não só baixar mas também atualizar seu sistema, isto é, fazer um upgrade com os patches disponíveis, use
+
+\begin{verbatim}
+simplaret upgrade
+\end{verbatim}
+
+\section{Trabalhando com múltiplas arquiteturas e versões}
+
+Até aqui vimos apenas o que é a obrigação de qualquer sistema de gerenciamento de pacotes possuir: obtenção de pacotes, instalação, busca e atualização do sistema. O que diferencia o \emph{simplaret} das outras ferramentas, além do esquema de resolução de dependências, é sua capacidade de lidar simultaneamente com múltiplas arquiteturas, versões e até instalações de sistemas do tipo Slackware.
+
+O uso dos seguintes comandos só fará sentido à luz da próxima seção, onde trataremos a respeito de múltiplas instalações e jaulas num mesmo computador, porém é um pré-requisito para entendê-la.
+
+Supondo que você esteja rodando Slackware (arquitetura \emph{i386}) mas que queira atualizar a lista de pacotes do sistema Slamd64 versão \emph{11.0} (arquitetura \emph{x86\_64}), basta usar o comando
+
+\begin{verbatim}
+ARCH=x86_64 VERSION=11.0 simplaret update
+\end{verbatim}
+
+Esse comando baixará a lista de pacotes para o Slamd64 sem conflitar de nenhuma forma com a lista e os pacotes já baixados para o Slackware. Isso acontece porque o \emph{simplaret} armazena as informações e os pacotes de cada repositório em pastas próprias, organizadas de acordo com a arquitetura e versão.
+
+Passar as variaveis \emph{ARCH} e \emph{VERSION} para o \emph{simplaret} é opcional. Se qualquer uma delas não foi especificada, o \emph{simplaret} utilizará o valor padrão do seu sistema, usualmente obtido do arquivo \emph{/etc/slackware-version} ou então especificada através do arquivo de configuração do simplepkg.
+
+Por exemplo, para pesquisar por um pacote da arquitetura powerpc (distribuição Slackintosh) na versão \emph{11.0}, basta o comando
+
+\begin{verbatim}
+ARCH=powerpc VERSION=11.0 simplaret search nome-do-pacote
+\end{verbatim}
+
+Todos os comandos apresentados anteriormente funcionarão dessa maneira, à exceção daqueles que instalam ou fazer a atualização de pacotes, já que em geral é destrutivo misturar pacotes de arquiteturas e versões diferentes num mesmo sistema.
+
+\section{Trabalhando com múltiplas instalações}
+
+A funcionalidade apresentada na seção anterior só faz sentido quando existirem sistemas, jaulas e/ou vservers instalados num mesmo computador.
+
+Suponha que você possua uma máquina \emph{x86\_64} com três sistemas instalados:
+
+ - Slamd64 \emph{11.0} na raíz
+ - Slackware \emph{11.0} em \emph{/mnt/slackware-1}
+ - Slackware \emph{10.2} em \emph{/mnt/slackware-2}
+
+No caso da instalação de pacotes, da obtenção e aplicação de atualizações, o \emph{simplaret} suporta a variável de ambiente ROOT para especificar qual é a pasta na qual o \emph{simplaret} deve buscar o sistema.
+
+Para instalar um pacote no Slackware contido em /mnt/slackware-1, basta usar os comandos
+
+\begin{verbatim}
+ARCH=i386 VERSION=11.0 simplaret update
+ROOT=/mnt/slackware-1 simplaret install nome-do-pacote
+\end{verbatim}
+
+O primeiro comando apenas atualiza a lista de pacotes e o segundo faz com que o \emph{simplaret} baixe o pacote da arquitetura e versão do sistema presente em \emph{/mnt/slackware-1} bem como efetue sua instalação.
+
+Para o caso da instalação em \emph{/mnt/slackware-2}, o uso é análogo:
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 simplaret update
+ROOT=/mnt/slackware-2 simplaret install nome-do-pacote
+\end{verbatim}
+
+Existe ainda uma facilidade para que a obtenção e aplicação de atualizações seja feita de forma única, através do arquivo \emph{/etc/simplepkg/jailist}. Esse arquivo serve, além de outros propósitos descritos na documentação do simplepkg, para que o \emph{simplaret} saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema.
+
+Considerando que a máquina possua as três instalações citadas no início deste tópico, a atualização automática das mesmas pode ser feita quando o arquivo \emph{/etc/simplepkg/jailist} contiver as seguintes linhas (sem espaços no início de cada uma):
+
+\begin{verbatim}
+/mnt/slackware-1
+/mnt/slackware-2
+\end{verbatim}
+
+O sistema principal, contido na raíz do sistema, não precisa estar listado nesse arquivo. Se todas as suas instalações de sistema do tipo Slackware estiverem constando corretamente no \emph{/etc/simplepkg/jailist}, o seguinte comando baixará as atualizações disponíveis para todas elas, incluindo o sistema contido na raíz:
+
+\begin{verbatim}
+simplaret get-patches
+\end{verbatim}
+
+Analogamente, o seguinte comando baixará e/ou aplicará todas as atualizações disponíveis em todas as instalações, incluindo o sistema contido na raíz:
+
+\begin{verbatim}
+simplaret upgrade
+\end{verbatim}
+
+Desse modo, o gerenciamento de pacotes numa máquina que contenha mais de uma instalação do tipo Slackware fica unificada e consequentemente simplificada.
+
+\section{O arquivo repos.conf}
+
+Agora que o comportamento do \emph{simplaret} foi delineado, é importante descrever o arquivo de definição de repositórios, o \emph{/etc/simplepkg/repos.conf}. Se você não pretende fazer um uso avançado do \emph{simplaret}, provavelmente pode deixar de ler esta e a próxima seção, já que para o uso corriqueiro do \emph{simplaret} você provavelmente não precisará alterar seu \emph{repos.conf}, a não ser que queira mudar o espelho de download dos seus pacotes ou montar um esquema avançado para a escolha e priorização de repositórios.
+
+O arquivo \emph{/etc/simplepkg/repos.conf} contém uma definição de repositório por linha e a sintaxe de cada uma delas é:
+
+\begin{verbatim}
+TIPO[-ARQUITETURA][-VERSAO]="nome%URL"
+\end{verbatim}
+
+O conteúdo demarcado por colchetes é opcional dependendo do tipo de repositório, como veremos a seguir. Os tipos de repositório aceitos pelo \emph{simplaret} são:
+
+\subsection{PATCHES}
+
+\emph{PATCHES}: definição para repositórios que contenham patches (pacotes de atualização) e cuja lista de arquivos é \emph{FILE\_LIST} e não \emph{FILELIST.TXT}; exemplo:
+
+\begin{verbatim}
+PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"
+\end{verbatim}
+
+No caso da definição acima, temos um repositório de patches para a arquitetura \emph{i386} (distribuição Slackware), versão \emph{11.0} e o nome dado ao repositório é "sarava".
+
+Possuir uma definição do tipo \emph{PATCHES} é opcional para ter acesso às atualizações: a definição de repositório \emph{ROOT}, que veremos em seguida, já lida com patches: o tipo de repositório \emph{PATCHES} serve apenas se você quiser utilizar algum repositório não-oficial como fonte de patches prioritária, já que repositório \emph{PATCHES} são pesquisados pelo \emph{simplaret} antes de qualquer outro.
+
+Em resumo, se você não tiver um bom motivo para usar esse tipo de repositório, evite-o.
+
+\subsection{ROOT}
+
+\emph{ROOT}: são tipos de repositórios cujo conteúdo está dividido por versão. O exemplo tradicional deste caso é o próprio repositório oficial das distribuições:
+
+\begin{verbatim}
+ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+\end{verbatim}
+
+Repositórios \emph{ROOT} necessitam apenas de uma definição de arquitetura, um nome e uma URL. No caso acima, temos a definição de repositório \emph{ROOT} de nome "tds", ou seja, não há definição de versão, já que o \emph{simplaret} considerará que a versão desejada está numa subpasta dessa URL. Ou seja, definições ROOT implicam que as pastas contendo pacotes de cada versão estejam bem separadas, ou seja, pastas como http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ e http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/.
+
+\subsection{REPOS}
+
+\emph{REPOS}: este tipo de repositório é orientado a arquitetura e versão, como por exemplo
+
+\begin{verbatim}
+REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"
+\end{verbatim}
+
+No caso acima, um repositório de nome "sarava" é definido para a arquitetura \emph{i386} e versão \emph{11.0} com a URL http://slack.sarava.org/packages/slackware/slackware-11.0/. Esse tipo de definição é recomendado para repositórios não-oficiais.
+
+\subsection{NOARCH}
+
+\emph{NOARCH}: o último tipo de definição é usado para repositórios cujos pacotes são independentes de arquitetura e versão da distribuição. Como exemplo temos um repositório do Projeto Slack:
+
+\begin{verbatim}
+NOARCH="sarava%http://slack.sarava.org/packages/noarch"
+\end{verbatim}
+
+Em qualquer tipo de repositório, a URL pode ser do tipo http://, ftp:// ou file:// (para repositórios locais).
+
+\section{Ordem e precedência em repositórios}
+
+Como podem haver mais de uma definição de repositório para cada tipo, versão e/ou arquitetura, as mesmas são diferenciadas de acordo com o nome. Definições de repositório podem ter nomes idênticos, desde que se refiram a tipo de repositório e/ou arquitetura e versão diferentes.
+
+Existe ainda uma prioridade dentre tipos de repositório e ordens de precedência. Numa pesquisa, repositórios são pesquisados de acordo com a seguinte ordem:
+
+\begin{enumerate}
+\item \emph{PATCHES} tem prioridade mais alta: caso um pacote de uma dada arquitetura e versão não seja encontrado no primeiro repositório \emph{PATCHES} do \emph{repos.conf}, o próximo repositório definido na ordem em que ele aparece no arquivo é pesquisado, e assim por diante.
+\item Em seguida, pacotes são procurados nas definições \emph{ROOT} da arquitetura em questão, na ordem em que aparecem no \emph{repos.conf}.
+\item Depois, são os pacotes de repositórios \emph{REPOS} daquela arquitetura e versão são pesquisados, na ordem em que aparecem no repos.conf.
+\item Por fim, repositórios \emph{NOARCH} são pesquisados, na ordem em que são definidos.
+\end{enumerate}
+
+Em resumo, o \emph{simplaret} tem uma ordem de precedência e execução de repositórios e para busca e obtenção de pacotes: pacotes são exibidos de acordo com a ordem e precedência descritas acima. No caso da ontenção de pacotes, o primeiro repositório que possuí-lo será utilizado, isto é, caso o pacote não for solicitado explicitamente com seu nome de arquivo completo mas sim apenas com seu nome.
+
+No caso da obtenção de patches, por padrão apenas repositórios do tipo \emph{PATCHES} e \emph{ROOT} são pesquisados, a não ser que isso seja configurado como contrário.
+
+Em repositórios do tipo \emph{REPOS} e \emph{ROOT} ainda é possível, através de parâmetros de configuração, explicitar a ordem de pastas que são pesquisadas dentro dos repositórios, algo que veremos a seguir e facilita no caso do usuário estar interessado em dar prioridade para aplicativos em fase de testes (usualmente armazenados na pasta testing/) ou pacotes antigos (pasture).
+
+\section{Parâmetros de configuração do simplepkg.conf}
+
+Nesta seção os parâmetros do arquivo de configuração \emph{/etc/simplepkg/simplepkg.conf} relevantes ao \emph{simplaret} estão descritos. Para uma lista completa de todos os parâmetros disponíveis, consulte o simplepkg.conf contido no pacote do simplepkg. Aqui estão descritos apenas os principais, que são:
+
+\begin{itemize}
+\item \emph{STORAGE}: local de armazenameto dos pacotes baixados e das informações de repositório. O valor padrão é \emph{/var/simplaret/packages}.
+
+\item \emph{PATCHES\_DIR}: local de armazenamento de pacotes que são patches (atualizações), isto é, o local de armazenamento de pacotes de repositórios do tipo PATCHES (e eventualmente de patches encontrados em repositórios do tipo \emph{ROOT}, como veremos a seguir). O valor padrão é \emph{/var/simplaret/patches}.
+
+\item \emph{SIMPLARET\_DOWNLOAD\_FROM\_NEXT\_REPO}: indica se o \emph{simplaret} deve tentar baixar um pacote do próximo repositório (caso exista) quando o download do repositório atual tiver falhado. Valores possíveis são "1" ou "yes" para habilitar a opção (que é o comportamento padrão) ou "0" ou "no" para desabilitá-la.
+
+\item \emph{SIMPLARET\_PURGE\_PATCHES}: indica se o conteúdo da pasta de patches também deve ser apagado quando o comando "simplaret --purge" é chamado. Use "yes" ou "1" para habilitar e "no" ou "0" para desabilitar. O valor padrão é "1".
+
+\item \emph{SIMPLARET\_PURGE\_WEEKS}: controla o número de semanas a partir do qual o \emph{simplaret} irá apagar pacotes quando chamado com o comando "simplaret --purge", o que é equivalente a usar o comando "simplaret --purge -w N". O valor padrão é "3". Para desabilitar essa opção, atribua o valor "0".
+
+\item \emph{PASSIVE\_FTP}: Indica se o \emph{simplaret} deve fazer as transferências de FTP no modo passivo. O valor padrão é "1" (habilitado).
+
+\item \emph{HTTP\_TOOL}: especifica qual a ferramenta para obtenção de arquivos via protocolo HTTP. As opções disponíveis são "curl" e "wget", sendo que a opção padrão é "curl".
+
+\item \emph{FTP\_TOOL}: especifica qual a ferramenta para obtenção de arquivos via protocolo FTP. As opções disponíveis são "curl", "wget" e "ncftpget", sendo que a opção padrão é "curl".
+
+\item \emph{CONNECT\_TIMEOUT}: tempo máximo de espera para uma conexão de rede, dado em segundos. O valor padrão é "20".
+
+\item \emph{ROOT\_PRIORITY}: especifica a ordem de prioridades das pastas de repositórios do tipo \emph{ROOT} numa pesquisa. O valor padrão é "patches slackware extra testing pasture", indicando que a pasta de patches tem precedência sobre todas as outras no repositório, sendo seguida pela pasta slackware e depois pelas extra, testing e pasture. Como podem existir nomes de pacotes idênticos nessas pastas, o estabelecimento de uma ordem se faz necessária.
+
+\item \emph{REPOS\_PRIORITY}: da mesma forma como repositorios \emph{ROOT} necessitam de uma prioridade de pesquisa em pastas, este parâmetro de configuração especifica a prioridade de pastas em repositórios do tipo \emph{REPOS}. O valor padrão é "patches slackware extra testing pasture".
+
+\item \emph{SIGNATURE\_CHECKING}: indica se o \emph{simplaret} deve checar pela assinatura dos pacotes baixados, caso ela esteja disponível. Você deve ter a chave pública do distribuidor dos pacotes no seu chaveiro. O valor padrão é "0" (desabilitado).
+
+\item \emph{DEPENDENCY\_CHECKING}: indica se o \emph{simplaret} deve trabalhar com a resuloção de dependências caso ele encontre, no repositório, um arquivo slack-required correspondente ao pacote que está sendo instalado. O valor padrão é "1" (habilitado).
+
+\item \emph{DOWNLOAD\_EVEN\_APPLIED\_PATCHES}: indica de o \emph{simplaret} deve baixar todos os patches disponíveis a uma dada instalação de sistema do tipo Slackware, mesmo que os mesmo já se encontrem aplicados. Esta opção é útil se você quiser manter uma cópia local das atualizações existentes para seu sistema. O valor padrão é "0" (desabilitado).
+
+\item \emph{CONSIDER\_ALL\_PACKAGES\_AS\_PATCHES}: especifica se o \emph{simplaret} deve, durante a obtenção de pacotes de atualização, procurar por atualizações também nos tipos de repositórios \emph{REPOS} e \emph{NOARCH}. Com essa opção, o \emph{simplaret} faz uma pesquisa pelo pacote e, se sua versão ou buildnumber da primeira ocorrência não bater com as do pacote atualmente instalado, ele baixa e o aplica, mesmo que seja um pacote de repositórios do tipo \emph{REPOS} ou \emph{NOARCH}. O valor padrão é "0" (desabilitado). O uso dessa opção não é muito recomendado por poder causar confusão e deixar o \emph{simplaret} mais lento, mas pode ser útil caso você esteja usando um repositório não-oficial que sempre atualiza seus pacotes.
+
+\item \emph{STORE\_ROOT\_PATCHES\_ON\_PATCHES\_DIR}: controla se o \emph{simplaret} deve armazenar os patches baixados de repositórios do tipo \emph{ROOT} na mesma pasta de armazenamento de patches provenientes de repositórios do tipo \emph{PATCHES}. É uma opção útil apenas se você quiser manter todos os patches de repositórios \emph{ROOT} e \emph{PATCHES} num mesmo local. O valor padrão é "0" (desabilitado).
+\end{itemize}
+
+Vale lembrar que todas as opções booleanas (isto é, que podem ser apenas habilitadas ou desabilitadas)
+do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para
+desabilitado.
+
+\section{Mas pra quê serve isso?}
+
+Você pode estar se perguntando: para que mais um gerenciador de pacotes para o Slackware e quem utilizaria
+uma ferramenta que baixa pacotes de várias arquiteturas?
+
+O \emph{simplaret} foi escrito tendo em mente um ambiente \emph{*86} onde várias \emph{jaulas} de diferentes arquiteturas estão instaladas. Suponha por exemplo uma máquina \emph{x86\_64} que possua as seguintes jaulas:
+
+\begin{itemize}
+ \item slamd64 \emph{11.0}
+ \item slackware \emph{11.0}
+ \item slackware \emph{11.0} com pacotes adicionais em \emph{i686}
+ \item \htmladdnormallink{uSlack}{http://gnuden.sarava.org} (\emph{uClibc para i386})
+\end{itemize}
+
+O condenado/a em questão que roda todas essas jaulas, pelos mais diversos motivos, pode ter uma grande dor de cabeça para manter os pacotes em ordem de forma manual. Com o \emph{simplaret} e eventualmente com o \emph{simplepkg}, a tarefa se torna trivial.
+
+Além disso, as inúmeras novas tecnologias de virtualização poderão necessitar de um sistema de gerenciamento de pacotes que trabalha simultaneamente com múltiplas arquiteturas e versões.
+
+Mesmo que você possua apenas um único sistema do tipo Slackware em seu computador ou trabalhe apenas com uma única arquitetura e/ou versão, o \emph{simplaret} possui todas as funcionalidades necessárias para facilitar seu dia-a-dia de gerenciamento de pacotes.
+
+\section{Mais informações}
+
+O \emph{simplaret} foi escrito por Silvio Rhatto (rhatto at riseup.net) e é disponibilizado dentro do pacote do
+simplepkg e sob a licença GPL. Para obter o código fonte, digite
+
+\begin{verbatim}
+svn checkout http://slack.sarava.org/simplepkg
+\end{verbatim}
+
+O wiki de desenvolvimento é \htmladdnormallink{http://slack.sarava.org/trac/wiki/Simplepkg}{http://slack.sarava.org/trac/wiki/Simplepkg} e o endereço da lista de discussão utilizada para discussões sobre \emph{simplaret}, simplepkg ou mesmo distribuições e pacotes do tipo Slackware é \htmladdnormallink{http://listas.sarava.org/wws/info/slack}{http://listas.sarava.org/wws/info/slack}.
+
+\end{document}
+
diff --git a/tags/0.6rc1/doc/simplepkg-en.tex b/tags/0.6rc1/doc/simplepkg-en.tex
new file mode 100644
index 0000000..4d32876
--- /dev/null
+++ b/tags/0.6rc1/doc/simplepkg-en.tex
@@ -0,0 +1,390 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\usepackage{html,makeid}
+
+\title{Simplepkg: installation manager and packaging system}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+Simplepkg is a non-intrusive management system running on top of pkgtool made of a set of scripts which helps the sysadmin and developing cycles of an slackware system. It can be used to create packages and repositories as long as the operational system installation and config file change tracking. Portuguese documentation \htmladdnormallink{here}{/simplepkg}.
+\end{abstract}
+
+\section{Description}
+
+All GNU/Linux distributions comes with a well developed packaging system. The question now is how pratical is the way to install, configure and control any changes in a system.
+
+As an example, suppose you should keep a list of about 200 slackware machines, some of them used as desktops, others as mail or webservers. If you lost some hardrives or usually need to re-install or update some of those boxes.
+
+Using the slackware installation cd and configuring by hand all the time you got a crash is a time loss activity and you'll never know if something remained missconfigured. An alternative is to keep a complete backup of a machine or some parts of the tree, but for a large number of different boxes this procedure costs a lots of resources.
+
+Simplepkg offers an alternative sollution for this and other problems related to installation management, allowing you to keep templates of each machine and install a custom slackware system with just one or a few commands. Creating and upgrading chroot and vservers is easy with simplepkg.
+
+Package and installation management is not everything simplepkg can do. It can also be used to create vservers, create packages and store system configuration files in a subversion repository.
+
+Simplepkg works with any (official or not) slackware port that follows the minimum system guidelines.
+
+\section{Architecture}
+
+Simplepkg is a set of scripts wrote in the KISS philosophy. Its a pretty simple system, composed by the following commands:
+
+\begin{itemize}
+ \item mkjail: build a slackware jail/installation in a folder
+ \item templatepkg: create or update a package list of an installation template
+ \item lspkg: show installed packages and its contents
+ \item jail-commit: update all configuration files of a template
+ \item jail-update: jail-commit counterpart
+ \item rebuildpkg: rebuild a package based on its /var/log/packages entry
+ \item simplaret: package retrieval tool
+ \item createpkg: donwload, compile and package creation script
+ \item repos: creates and manages binary repositories
+ \item mkbuild: app to build slackware build scripts
+\end{itemize}
+
+\section{Installation}
+
+The latest version of simplepkg is locate at \htmladdnormallink{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/}. Install it with the usual way:
+
+\begin{verbatim}
+installpkg simplepkg-VERSION-noarch-BUILD.tgz
+\end{verbatim}
+
+\section{Simplepkg usage}
+
+The three main simplepkg uses are:
+
+\begin{itemize}
+ \item Package managemen
+ \item Jail/installation creation and management
+ \item Package creation
+\end{itemize}
+
+Package management is made with simplaret app, whose behaviour is detailed in its own document. The following sections will only show how simplepkg can be used to manage jails and template and create packages.
+
+\section{Creating templates}
+
+Initially, simplepkg was built to help slackware install automation. To do that, it uses installation templates -- lists of installed packages, post-installation scripts and config files -- allowing the creation of installation profiles that can be used for system replication in other partition or even custom chroot building.
+
+Template creation is done with "templatepkg" script. To create a template called "my-slackware" containig the installed package list of your slackware installation, just type
+
+\begin{verbatim}
+templatepkg -c my-slackware
+\end{verbatim}
+
+The -c (or --create) flag tells templatepkg to create the /etc/simplepkg/templates/my-slackware folder with the following components:
+
+\begin{itemize}
+ \item /etc/simplepkg/templates/my-slackware/my-slackware.d: template config files
+ \item /etc/simplepkg/templates/my-slackware/my-slackware.s: post-installation scripts
+ \item /etc/simplepkg/templates/my-slackware/my-slackware.perms: metadata for config files
+ \item /etc/simplepkg/templates/my-slackware/my-slackware.template: installaed package list
+\end{itemize}
+
+This four components are enough to store all slackware installation characteristics: the package list controls with applications are installed, the config file folder can contain all desired configurations for any installed application and the post-installation scripts take care of all procedures that should be executed exactly after the system installation. The my-slackware.perms file contains metadata for the saved config files, i.e, permission and ownership.
+
+If you want to build a template from a installation placed in another folder or partition thats not your current root dir, just type something like
+
+\begin{verbatim}
+templatepkg -c my-slackware /mnt/slackware
+\end{verbatim}
+
+where /mnt/slackware is the place where this alternative system is installed. After created, the template will contain just the installed package list or that folder. As the folder /var/log/packages of your installation doesn't keep information about the package installation order, its recommended that you manually edit the template's package list. To do that, just type
+
+\begin{verbatim}
+templatepkg -e my-slackware
+\end{verbatim}
+
+To add configuration files inside the template, type something like
+
+\begin{verbatim}
+templatepkg -a my-slackware /etc/hosts
+\end{verbatim}
+
+This should add /etc/hosts file to "my-slackware" template. Beyond just automatically copy the file when you install a new system using this template, simplepkg can also take care of every change that /etc/hosts can suffer on your system, such as file content or permission and ownership change. If you're also storing your templates in a subversion repository, you'll be able to track all changes it ever had.
+
+WARNING: avoid the storage in a template of config files that contains important security information such as passwords or secret keys. The prefered place to put such stuff is a secured backup.
+
+\section{Creating jails and replicating installations}
+
+As long as your template was created and populated with the package list, configuration files and post-installation scripts (what will be treated in another section), your can replicate your slackware installation as simpler than typing the following command:
+
+\begin{verbatim}
+mkjail jail my-slackware
+\end{verbatim}
+
+This creates a fresh slackware tree at /vservers/jail with all packages listed in the template "my-slackware" and all saved config files. The package installation is made by simplaret app, that should be properly configured. The standard simplaret configuration should work for most situations.
+
+If you want to install your jail in a place other than /vservers (this standard location can be changed through simpleokg config file), say /mnt/hda2, just use something like that:
+
+\begin{verbatim}
+ROOT=/mnt mkjail hda2 my-slackware
+\end{verbatim}
+
+The above command does exactly what you think: installs slackware in /mnt/hda2 with exactly the same packages you have on your system, replacing the need of the slackware installer!
+
+In case no template specified, mkjail uses the one stored /etc/simplepkg/defaults, if exists. Simplepkg already came if some pre-built templates at /etc/simplepkg/defaults/templates.
+
+\section{Post-installation scripts}
+
+Optionally, its possible to keep post-installation scripts inside a template. Such scripts are executed by mkjail exactly after a jail is installed and the template config files copied. To create or edit a post-installation script, just type
+
+\begin{verbatim}
+templatepkg -b my-slackware script-name.sh
+\end{verbatim}
+
+This adds the script-name.sh at "my-slackware" template. Mkjail passes two command line arguments to a post-install script: the upward folder and the jail's name ("/mnt" and "hda2" from our previous example). Then, an example script is something like that:
+
+\begin{verbatim}
+#!/bin/bash
+chroot $1/$2/ sbin/ldconfig
+\end{verbatim}
+
+\section{Listing template contents}
+
+To list available templates or the template content, use commands such as
+
+\begin{verbatim}
+templatepkg -l
+templatepkg -l my-slackware
+\end{verbatim}
+
+\section{Removing files from a template}
+
+As you did to add files, you can easily remove then from a template, using a comand such as
+
+\begin{verbatim}
+templatepkg -d my-slackware /etc/hosts
+\end{verbatim}
+
+This removes the file /etc/hosts from "my-slackware" template.
+
+\section{Removing a template}
+
+To remove a template, just type
+
+\begin{verbatim}
+templatepkg -r my-slackware
+\end{verbatim}
+
+\section{Updating a template}
+
+Now that we just talked about creating templates and jails, its time to cover another application, this time used to keep a template always updated. Jail-commit is a script that copies all config file changes (content, permissions and ownership) from a installation to a simplepkg template.
+
+For instance, if one wants to copy all changes from /mnt/hda2 jail into "my-slackware" template, he or she just needs to type the following command:
+
+\begin{verbatim}
+jail-commit /mnt/hda2 my-slackware
+\end{verbatim}
+
+Not just the package list from "my-slackware" template is updated according the installed packages from /mnt/hda2/var/log/packages: all config files from "my-slackware" template are compared it the ones from the jail and in case of any difference they're copied from the jail back to the template. Permissions and file ownership commit into the template works at the same way.
+
+Jail-commit allows that a template to being kept always updated and mirroring the actual configuration of an installed system. But if you want just to commit into the template just the installed package list, simply type
+
+\begin{verbatim}
+templatepkg -u my-template
+\end{verbatim}
+
+To make life even easier, there's also a feature of keeping a list of all installed slackware system in the box in the file /etc/simplepkg/jailist. This file, despite its use by simplaret (what is described in its own text), allow jail-commit to run with no arguments.
+
+Suppose you have three slackware installations: the root system and two more:
+
+\begin{itemize}
+ \item /mnt/slackware-1 using "slackware-1" template
+ \item /mnt/slackware-2 using "slackware-2" template
+\end{itemize}
+
+If your /etc/simplepkg/jailist has the following lines:
+
+\begin{verbatim}
+/mnt/slackware-1
+/mnt/slackware-2
+\end{verbatim}
+
+then the command
+
+\begin{verbatim}
+jail-commit
+\end{verbatim}
+
+will update both "slackware-1" and "slackware-2" templates according, respectivelly, the contents of /mnt/slackware-1 and /mnt/slackware-2. If you also have a template called "main", then jail-commit will sync the contents of your root system with that template.
+
+You can even add the following line at root's crontab
+
+\begin{verbatim}
+20 4 * * * jail-commit
+\end{verbatim}
+
+so all your templates get updated everyday. If your system is configured to send emails, then crontab's jail-commit output you give a summary of yesterday changes your system suffered, both config file changes and package additions and removals.
+
+\section{Restoring changes in a jail}
+
+The opposite operation of jail-commit also is possible: suppose you edited some config files in your system but suddenly wants to go back and copy all config files from a template to your jail. To do that, just use the command
+
+\begin{verbatim}
+jail-update /mnt/hda2 my-slackware
+\end{verbatim}
+
+\section{Storing templates inside a Subversion repository}
+
+In order to increase once more the control and flexibility of template contents, simplepkg can also handle templates inside a subversion repository. To do that, edit first the config gile /etc/simplepkg/simplepkg.conf and set the parameter TEMPLATES\_UNDER\_SVN to "yes".
+
+Then, create a fresh subversion repository to keep your templates with a command like that:
+
+\begin{verbatim}
+svnadmin create /var/svn/simplepkg --fs-type fsfs
+\end{verbatim}
+
+Then, you just need to import your templates with
+
+\begin{verbatim}
+templatepkg -e file:///var/svn/simplepkg
+\end{verbatim}
+
+From now jail-commit will commit automatically any template changes to the svn repository. If, in the other hand, you wish to grab the changes from the svn repository to your local copy, use
+
+\begin{verbatim}
+templatepkg -s
+\end{verbatim}
+
+In case you want to import a template folder from an existing repository, use
+
+\begin{verbatim}
+templatepkg -i file:///var/svn/simplepkg
+\end{verbatim}
+
+where file:///var/svn/simplepkg is the repository path.
+
+\section{Upgrading jails}
+
+Jail and installed system upgrading is done through simplaret and also supports /etc/simplepkg/jailist file.
+For more info on how it works, take a look at simplaret own documentation.
+
+\section{Different archs and versions}
+
+Simplepkg was idealized to permit a template to create jails from any architecture and version of a slackware-like system. Upgrading tasks also are unified. This feature just works if you use simplaret and not swaret as the package retrieval tool.
+
+As another example, to create an slack 10.1 installation (assuming your /etc/simplepkg/repos.conf with the right configuration), just type
+
+\begin{verbatim}
+VERSION=10.1 mkjail my-jail server-template
+\end{verbatim}
+
+Different archs can be used too. If you have a x86\_64 system and wants to install a slack 10.2 in a partition, try something like
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 my-slackware
+\end{verbatim}
+
+Note that the templates are arch and version independent, as they just contain package names, configuration files and scripts. For this reason, the commands templatepkg, metapkg, lspkg and jail-update can be used normaly.
+
+\section{Creating a package from a template}
+
+If, for any reason, you wish to build a package from an existing template, try the command
+
+\begin{verbatim}
+templatepkg -p template-name
+\end{verbatim}
+
+Although that should work smoothly, its not the recommended behaviour, as simplepkg was designed to deal easily with templates and repositories.
+
+\section{Building packages}
+
+Until now, we just showed simplepkg applications used to manage installations and packages. But simplepkg can also create packages using createpkg script: it downloads, builds and packages software that has an available script from a SlackBuild in a repository, working like a slackware ports system.
+
+Createpkg works with any SlackBuild repository but works better and is well integrated if they are compliant with the standards from http://slack.sarava.org/trac/wiki/SlackBuilds.
+
+Specifically, createpkg was built to use slackbuilds from http://slack.sarava.org/slackbuilds through a subversion repository.
+
+To fetch all scripts from slack.sarava.org, type
+
+\begin{verbatim}
+createpkg --sync
+\end{verbatim}
+
+Then, you can list all available script using
+
+\begin{verbatim}
+createpkg --list
+\end{verbatim}
+
+To search for a script, use something like
+
+\begin{verbatim}
+createpkg --search latex2html
+\end{verbatim}
+
+This searches for a SlackBuild for the program "latex2html". If you want to build that package, just type
+
+\begin{verbatim}
+createpkg latex2html
+\end{verbatim}
+
+The resulting package should be available at /tmp or at the folder specified by the environment variable \$REPOS. To create and install the package, type
+
+\begin{verbatim}
+createpkg --install latex2html
+\end{verbatim}
+
+If the package has dependencies listed in a slack-required file that aren't installed in the system, then createpkg will try to process then before the desired package's SlackBuild: if the dependencies aren't available in the SlackBuild tree, then createpkg will call simplaret and try to install the package from a binary repository. If you want to avoid createpkg's dependency checking, just use it with the flag --no-deps.
+
+For more information about createpkg, type
+
+\begin{verbatim}
+createpkg --help
+\end{verbatim}
+
+or take a look at http://slack.sarava.org/trac/wiki/SlackBuilds.
+
+\section{Auxiliar applications}
+
+Simplepkg comes also with the following tools:
+
+\begin{itemize}
+ \item lspkg: show installed packages and its contents
+ \item rebuildpkg: rebuild a package based on its /var/log/packages entry
+ \item repos: creates and manages binary repositories
+ \item mkbuild: app to build slackware build scripts
+\end{itemize}
+
+The command lspkg is used to show installed packages. Also, Simplepkg comes with an additional helper tool that recover installed packages which the original .tgz file was lost. The command rebuildpkg rebuilds a package from their entry in /var/log/packages. As an example,
+
+\begin{verbatim}
+rebuildpkg coreutils
+\end{verbatim}
+
+rebuilds the coreutils package using the files, scripts and metainformations stored in /var/log/packages/ and /var/log/scripts/.
+
+For their time, scripts repos and mkbuild are used, respectivelly, to create and manage binary repositories and to create SlackBuild scripts.
+
+\section{Configuration parameters}
+
+Simplepkg's config file is /etc/simplepkg/simplepkg.conf and it keeps parameters used by all scripts. If you want to change some of its parameters, do not edit this file. Use /etc/simplepkg/simplepkg.conf instead as it overrides the default settings.
+
+In this section, we won't cover any parameter that's just used by simplaret, whose settings are covered in its own documentation.
+
+\begin{itemize}
+ \item JAIL\_ROOT: Where jails are placed by mkjail. Default: "/vservers".
+ \item ADD\_TO\_JAIL\_LIST: Wheter mkjial should add new jails to /etc/simplepkg/jailist. Default is "1" (enabled).
+ \item TEMPLATES\_UNDER\_SVN: Set to yes if your templates will be placed in a subversion repository. Default is "no" (disabled).
+ \item TEMPLATE\_FOLDER: Where your templates will be located. Default is "/etc/simplepkg/templates" and dont change it except you know what you're doing.
+ \item TEMPLATE\_STORAGE\_STYLE: This variable controls in which folder / subfolder your templates will be stored. Default value is "own-folder" and you'll just need to change that if you're storing your templates using an old simplepkg format and wants to keep compatibilty.
+\end{itemize}
+
+Its important to note that all boolean parameters in the config file can be set either to "1" or "yes" to enable and "0" or "no" to disable.
+
+\section{Additional information}
+
+Simplepkg was written by Silvio Rhatto (rhatto at riseup.net) and is released under GPL license. The code can be obtained from the subversion repository:
+
+\begin{verbatim}
+svn checkout http://slack.sarava.org/simplepkg
+\end{verbatim}
+
+Simplepkg's wiki is http://slack.sarava.org/trac/wiki/Simplepkg and its mailing list address is http://listas.sarava.org/wws/info/slack.
+
+\end{document}
diff --git a/tags/0.6rc1/doc/simplepkg-pt_BR.tex b/tags/0.6rc1/doc/simplepkg-pt_BR.tex
new file mode 100644
index 0000000..a80f0e7
--- /dev/null
+++ b/tags/0.6rc1/doc/simplepkg-pt_BR.tex
@@ -0,0 +1,397 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\usepackage{html,makeid}
+
+\title{Gerenciamento de instalações e metapacotes com o simplepkg}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+O \emph{simplepkg} é um sistema de gerenciamento de sistemas slackware que roda sobre o pkgtool. Ele é composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada.
+
+Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes. Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração, informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula.
+\end{abstract}
+
+\section{Descrição}
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão agora é a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos de configuração de uma máquina, além da facilidade na criação de pacotes.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina, por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O \emph{simplepkg} permite que você mantenha um template para cada grupo de máquinas e com apenas um comando instalar o template numa partição. Além do template, você precisa configurar o \emph{simplepkg} para obter pacotes de um repositório local ou remoto.
+
+Gerenciar instalações e pacotes não é tudo o que o \emph{simplepkg} faz. Ele pode ser usado até na criação de jaula e vservers, podendo manter toda a configuração das máquinas num repositório Subversion.
+
+O \emph{simplepkg} funciona não apenas com o Slackware mas com qualquer port (oficial ou não) que siga minimamente os padrões oficiais.
+
+\section{Arquitetura}
+
+O \emph{simplepkg} é um conjunto de scripts escritos com a filosofia KISS (Keep It Simple, Stupid) em mente. Ele é um sistema muito simples, composto pelos seguintes comandos:
+
+\begin{itemize}
+ \item mkjail: constrói uma jaula/instalação de slackware numa pasta
+ \item templatepkg: criar ou adiciona pacotes a um template
+ \item lspkg: lista pacotes instalados
+ \item jail-update: inverso do jail-commit
+ \item jail-commit: atualiza o template
+ \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+ \item simplaret: obtém pacotes de repositórios locais ou remotos
+ \item createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório
+ \item repos: cria e mantém repositórios
+ \item mkbuild: cria scripts de construção de pacotes
+\end{itemize}
+
+\section{Instalando o simplepkg}
+
+Para baixar o pacote do \emph{simplepkg}, vá em \htmladdnormallink{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/}. Depois, basta usar o comando
+
+\begin{verbatim}
+installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+\end{verbatim}
+
+\section{Usando o simplepkg}
+
+As três principais aplicações desse conjunto são:
+
+\begin{itemize}
+ \item Gerenciamento de pacotes
+ \item Criação e manutenção de jaulas
+ \item Criação de pacotes
+\end{itemize}
+
+O gerencamento de pacotes é feito através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, e por ser algo bem específico está detalhado no artigo correspondente. As seções a seguir mostrarão como o \emph{simplepkg} pode ser utilizado para criar e manter jaulas, assim como também criar pacotes.
+
+\section{Criando templates de instalação}
+
+Originalmente, o \emph{simplepkg} foi desenvolvido para ajudar na automatização de instalações de sistemas slackware. Para isso, ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa outra partição ou criar um chroot.
+
+A construção de um template é feita através do programa templatepkg. Para criar um template de nome "meu-slackware" contendo a lista de pacotes atualmente instalados no seu sistema, digite
+
+\begin{verbatim}
+templatepkg -c meu-slackware
+\end{verbatim}
+
+A opção -c (ou --create) criará a pasta /etc/simplepkg/templates/meu-slackware, que conterá os seguintes componentes:
+
+\begin{itemize}
+ \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.d}: cópia de arquivos de configuração
+ \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.s}: scripts de pós-instalação
+ \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.perms}: informações sobre arquivos
+ \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.template}: lista de pacotes
+\end{itemize}
+
+Esses quatro componentes são suficientes para armazenar todas as características de uma instalação de slackware: a lista de pacotes controla o software instalado (a partir do conteúdo da pasta \emph{/var/log/packages}), a cópia dos arquivos de configuração controla as personalizações feitas para o uso dos aplicativos e os scripts de pós-instalação cuidam de qualquer rotina que precisa ser realizada exatamente após a instalação do sistema. Já o arquivo de informações sobre arquivos contém as permissões, o dono/a e grupo de cada arquivo de configuração presente no template.
+
+Se você quiser criar um template a partir de uma instalação de slackware presente numa outra partição do sistema que não seja a raíz, basta usar um comando do tipo
+
+\begin{verbatim}
+templatepkg -c meu-slackware /mnt/slackware
+\end{verbatim}
+
+onde /mnt/slackware é o local onde o sistema alternativo está instalado. Após criado, o template possuirá apenas a lista de pacotes contendo o nome dos aplicativos instalados no seu sistema. Como a pasta /var/log/packages não preserva a ordem de instalação dos pacotes, então talvez você queira editar manualmente a lista de pacotes de um template. Para isso, use o comando
+
+\begin{verbatim}
+templatepkg -e meu-slackware
+\end{verbatim}
+
+Para adicionar um arquivo de configuração no seu novo template, basta dar um comando como
+
+\begin{verbatim}
+templatepkg -a meu-slackware /etc/hosts
+\end{verbatim}
+
+Isso adicionará o arquivo /etc/hosts no template "meu-slackware". Além de salvar o arquivo e copiá-lo automaticamente quando você instalar seu sistema, o \emph{simplepkg} ainda pode tomar conta de qualquer alteração que o /etc/hosts sofrer no sistema, seja mudança no conteúdo do arquivo, dono ou permissão. Se você ainda estiver armazenando seus templates num repositório svn (o que veremos a seguir), o \emph{simplepkg} pode ainda manter um histórico completo das alterações do arquivo.
+
+ATENÇÂO: evite ao máximo deixar arquivos contendo senhas ou chaves privadas num template. O lugar mais adequado para deixar esse tipo de coisa é num backup seguro.
+
+\section{Criando jaulas e replicando instalações}
+
+Uma vez que um template foi criado com uma lista de pacotes e opcionalmente com arquivos de configuração e scripts de pós-instalação (que serão detalhados a seguir), você pode replicar sua instalação de slackware utilizando o comando
+
+\begin{verbatim}
+mkjail jaula meu-slackware
+\end{verbatim}
+
+Isso cria uma nova árvore do slackware em /vservers/jaula contendo todos os pacotes e arquivos de configuração do template "meu-slackware". A instalação dos pacotes será feita pelo aplicativo \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, que deve estar configurado corretamente e cuja configuração padrão deve funcionar para a maioria dos casos.
+
+Se você quiser instalar essa jaula em outro local que não seja a pasta /vservers (esse local padrão pode ser mudado pelo arquivo de configuração do \emph{simplepkg}), basta usar um comando do tipo
+
+\begin{verbatim}
+ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em /mnt/hda2, dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/defaults. O \emph{simplepkg} já vem com alguns templates padrões, presentes em /etc/simplepkg/defaults/templates.
+
+\section{Scripts de pós-instalação}
+
+Opcionalmente, é possível manter scripts de pós-instalação num template. Tais script são executados exatamente
+após a instalação de uma jaula e cópia de arquivos de configuração pelo mkjail. Para criar ou editar um script
+de pós-instalação, use um comando como
+
+\begin{verbatim}
+templatepkg -b meu-slackware nome-do-script.sh
+\end{verbatim}
+
+Isso adicionará o script nome-do-script.sh no template "meu-slackware". O mkjail passa dois argumentos para cada script de pós-instalação: a pasta superior e o nome da jaula ("/mnt" e "hda2" no nosso exemplo anterior). Assim, um exemplo de script seria algo como
+
+\begin{verbatim}
+#!/bin/bash
+chroot $1/$2/ sbin/ldconfig
+\end{verbatim}
+
+\section{Listando o conteúdo de um template}
+
+Para listar os templates disponíveis ou o conteúdo de um template, use comandos como
+
+\begin{verbatim}
+templatepkg -l
+templatepkg -l meu-slackware
+\end{verbatim}
+
+\section{Removendo arquivos de um template}
+
+Analogamente à forma como se adicona arquivos num template, removê-los pode ser feito com o seguinte comando:
+
+\begin{verbatim}
+templatepkg -d meu-slackware /etc/hosts
+\end{verbatim}
+
+Isso remove o arquivo /etc/hosts do template "meu-slackware".
+
+\section{Apagando um template}
+
+Para apagar um template, basta utilizar um comando como
+
+\begin{verbatim}
+templatepkg -r meu-slackware
+\end{verbatim}
+
+\section{Atualizando um template}
+
+Agora que já abordamos as opções do templatepkg, é hora de visitarmos um outro aplicativo, desta vez utilizado para manter um template atualizado. O jail-commit é um script que copia as alterações dos arquivos (conteúdo, propriedade e permissões) de um template a partir do conteúdo de uma jaula ou instalação.
+
+Por exemplo, caso se queira copiar as alterações da jaula /mnt/hda2 no template "meu-slackware", basta usar o comando
+
+\begin{verbatim}
+jail-commit /mnt/hda2 meu-slackware
+\end{verbatim}
+
+Além da lista de pacotes do template "meu-slackware" ser atualizada de acordo com a lista de pacotes presente em /mnt/hda2/var/log/packages, todos os arquivos de configuração presentes no template "meu-slackware" serão comparados com os correspondentes da pasta /mnt/hda2 e as diferenças são copiadas para o template. Da mesma forma, as permissões e informação de dono/grupo dos arquivos também é atualizada no template.
+
+O comando jail-commit possibilita que um template sempre esteja atualizado e refletindo a configuração atual de uma instalação de slackware. Se você quiser atualizar apenas a lista de pacotes de um template, porém, use
+
+\begin{verbatim}
+templatepkg -u meu-template
+\end{verbatim}
+
+Para facilitar ainda mais o controle das alterações do sistema, existe ainda uma facilidade do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret}, para que o jail-commit saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema.
+
+Suponha que uma máquina possua duas instalações de slackware, além da principal (raíz):
+
+\begin{itemize}
+ \item /mnt/slackware-1 usando o template "slackware-1"
+ \item /mnt/slackware-2 usando o template "slackware-2"
+\end{itemize}
+
+Se o arquivo /etc/simplepkg/jailist contiver as seguintes linhas,
+
+\begin{verbatim}
+/mnt/slackware-1
+/mnt/slackware-2
+\end{verbatim}
+
+então o comando
+
+\begin{verbatim}
+jail-commit
+\end{verbatim}
+
+atualizará o template "slackware-1" de acordo com o conteúdo da jaula /mnt/slackware-1 e o template "slackware-2" com o conteúdo da jaula /mnt/slackware-2. Se, além desses dois templates, existir um outro de nome "main", então o jail-commit sem argumentos também copiará as atualizações da instalação raíz, deixando-as no template "main".
+
+Você pode inclusive colocar uma entrada no crontab do tipo
+
+\begin{verbatim}
+20 4 * * * jail-commit
+\end{verbatim}
+
+para que seus templates sejam atualizados diariamente. Se você ainda possui o envio de emails configurado na sua máquina, então a saída do jail-commit será enviada pelo cron diariamente para seu email, contendo diffs das alterações de arquivos de configuração a lista de pacotes adicionados ou removidos no sistema.
+
+\section{Restaurando arquivos de configuração numa jaula}
+
+A operação contrária ao que o jail-commit faz também é possível: suponha que você mexeu na configuração do sistema mas se arrependeu das alterações e deseja voltar a configuração para o modo como ela se encontra no seu template, basta usar o comando
+
+\begin{verbatim}
+jail-update /mnt/hda2 meu-slackware
+\end{verbatim}
+
+\section{Armazenando as configurações no repositório Subversion}
+
+Para aumentar ainda mais a flexibilidade e o controle do conteúdo dos templates, é possível armazená-los num repositório Subversion. Para isso, edite o arquivo /etc/simplepkg/simplepkg.conf e deixe o parâmetro de configuração \emph{TEMPLATES\_UNDER\_SVN} com o valor "yes".
+
+Depois, crie um repositório subversion para armazenar seus templates, usando algo como
+
+\begin{verbatim}
+svnadmin create /var/svn/simplepkg --fs-type fsfs
+\end{verbatim}
+
+Com o repositório criado, basta importar seus templates com o comando
+
+\begin{verbatim}
+templatepkg -e file:///var/svn/simplepkg
+\end{verbatim}
+
+A partir daí, o comando jail-commit enviará automaticamente todas as alterações dos templates para o repositório subversion. Se, por outro lado, você quiser baixar as alterações dos templates que estão no repositório remoto para sua cópia local, use o comando
+
+\begin{verbatim}
+templatepkg -s
+\end{verbatim}
+
+Caso você queira importar uma pasta de templates de um repositório já existente, use
+
+\begin{verbatim}
+templatepkg -i file:///var/svn/simplepkg
+\end{verbatim}
+
+onde file:///var/svn/simplepkg é o camninho do repositório.
+
+\section{Atualização de jaulas}
+
+A atualização de jaulas e sistemas instalados é feita através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret} e também utiliza o arquivo /etc/simplepkg/jailist. Para mais informações a respeito, consulte a \htmladdnormallink{documentação do simplaret}{http://slack.sarava.org/simplaret} para mais detalhes.
+
+\section{Arquiteturas e versões diferentes}
+
+O \emph{simplepkg} foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também é unificada. Essa possibilidade só é permitida se você usa o \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret} e não o swaret como ferramenta de obtenção de pacotes.
+
+Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios do /etc/simplepkg/repos.conf contenham locais com slack 10.1), basta usar o comando
+
+\begin{verbatim}
+VERSION=10.1 mkjail minha-jaula template-servidor
+\end{verbatim}
+
+Arquiteturas diferentes também podem ser usadas. Se você está num sistema x86\_64 e quer instalar um slack 10.2 numa partição, experimente
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes, arquivos de configuração e scripts.
+
+\section{Criando um pacote de um template}
+
+Se, por algum motivo, você quiser construir um pacote com o conteúdo de um template, experimente o comando
+
+\begin{verbatim}
+templatepkg -p nome-do-template
+\end{verbatim}
+
+No entanto, o \emph{simplepkg} foi criado para que esse tipo de comportamento seja evitado, já que é mais simples manter templates de configuração do que pacotes contendo a configuração de uma instalação.
+
+\section{Construindo pacotes}
+
+Até aqui, apenas mostramos os aplicativos do \emph{simplepkg} usados para a manutenção de instalações de slackware. No entanto, uma das outras finalidades desta suíte é a construção de pacotes, o que é feita pelo programa createpkg, Como dito anteriormente, o createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório de scripts, funcionando com um gerenciador de "ports" para slackware.
+
+O createpkg pode funcionar com qualquer tipo de script de construção de pacotes (SlackBuilds) mas funcionará melhor se os mesmos seguirem o padrão descrito na página
+
+\begin{verbatim}
+http://slack.sarava.org/trac/wiki/SlackBuilds
+\end{verbatim}
+
+Especificamente, o createpkg foi desenvolvido para utilizar os slackbuild disponíveis em \htmladdnormallink{http://slack.sarava.org/slackbuilds}{http://slack.sarava.org/slackbuilds}. O createpkg trabalha com repositórios do tipo subversion.
+
+Para obter os scripts do repositório do slack.sarava.org, digite
+
+\begin{verbatim}
+createpkg --sync
+\end{verbatim}
+
+Em seguida, você pode listas todos os scripts disponíveis:
+
+\begin{verbatim}
+createpkg --list
+\end{verbatim}
+
+Para buscar por um pacote, use
+
+\begin{verbatim}
+createpkg --search latex2html
+\end{verbatim}
+
+No caso, a busca é feita pelo SlackBuild do aplicativo "latex2html". Suponha agora que você queira construir o pacote desse aplicativo:
+
+\begin{verbatim}
+createpkg latex2html
+\end{verbatim}
+
+O pacote resultante estará na pasta /tmp ou no valor especificado pela variável de ambiente \emph{\$REPOS}. Para criar e também instalar o pacote, basta
+
+\begin{verbatim}
+createpkg --install latex2html
+\end{verbatim}
+
+Se o pacote possuir dependências listadas num arquivo slack-required e que não estiverem instaladas no sistema, o createpkg tentará processá-las uma a uma antes de tentar construir o pacote desejado: se as dependências não forem encontradas no repositório de scripts, então o createpkg tentará baixá-las de um repositório binário através do \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}. Se você não quiser que a resolução de dependências seja seguida, use a opção --no-deps.
+
+Para mais detalhes de funcionamento, experimente o comando
+
+\begin{verbatim}
+createpkg --help
+\end{verbatim}
+
+ou então acesse a página http://slack.sarava.org/trac/wiki/SlackBuilds
+
+\section{Aplicativos auxiliares}
+
+O \emph{simplepkg} acompanha ainda alguns aplicativos auxiliares:
+
+\begin{itemize}
+ \item lspkg: lista pacotes instalados
+ \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+ \item repos: cria e mantém repositórios
+ \item mkbuild: cria scripts de construção de pacotes
+\end{itemize}
+
+O comando lspkg é um utilitário simples para a visualização de pacotes instalados no sistema. Já o rebuildpkg ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando rebuildpkg reconstrói um pacote a partir de uma entrada no /var/log/packages. O comando
+
+\begin{verbatim}
+rebuildpkg coreutils
+\end{verbatim}
+
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do /var/log/packages/ correspondente ao coreutils.
+
+Por fim, os scripts repos e mkbuild são os que se encontram na etapa de maior desenvolvimento: repos cria um repositório de pacotes a partir de uma pasta contendo pacotes do tipo pkgtool e o mkbuild é um aplicativo para auxiliar a criação de scripts de construção de pacotes que podem ser utilizados sozinhos ou pelo o createpkg.
+
+\section{Parâmetros de configuração}
+
+O arquivo de configuração do \emph{simplepkg} é o /etc/simplepkg/simplepkg.conf. Ele contém parâmetros de configuração de todos os scripts, porém neste texto não trataremos das opções específicas ao \htmladdnormallink{simplaret}{http://slack.sarava.org/simplaret}, as quais tem uma seção específica no artigo correspondente.
+
+Se você quiser alterar algum parâmetro, não edite esse arquivo: use, ao invés dele, o arquivo /etc/simplepkg/simplepkg.conf, pois este sobrescreve qualquer opção padrão.
+
+\begin{itemize}
+ \item \emph{JAIL\_ROOT}: pasta padrão onde as jaulas são criadas pelo mkjail. Valor padrão: "/vservers".
+ \item \emph{ADD\_TO\_JAIL\_LIST}: controla se uma jaula criada pelo mkjail deve ser adicionada automaticamente no arquivo /etc/simplepkg/jailist. O valor padrão é "1" (habilitado).
+ \item \emph{TEMPLATES\_UNDER\_SVN}: indica se os templates estão armazenados num repositório subversion. O valor padrão é "no" (não).
+ \item \emph{TEMPLATE\_FOLDER}: indica qual é a pasta de templates. O valor padrão é "/etc/simplepkg/templates" e não é recomendável alterá-lo.
+ \item \emph{TEMPLATE\_STORAGE\_STYLE}: controla a forma de armazenamento de templates. O valor padrão é "own-folder" e essa opção apenas deve ser modificada se você armazena seus templates num formato antigo do \emph{simplepkg} e deseja manter compatibilidade.
+\end{itemize}
+
+Vale lembrar que todas as opções booleanas (isto é, que podem ser apenas habilitadas ou desabilitadas) do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para desabilitado.
+
+\section{Mais informações}
+
+O \emph{simplepkg} foi escrito por Silvio Rhatto (rhatto at riseup.net) sob licença GPL e seu código fonte é disponibilizado através do repositório subversion:
+
+\begin{verbatim}
+svn checkout http://slack.sarava.org/simplepkg
+\end{verbatim}
+
+O wiki de desenvolvimento está em http://slack.sarava.org/trac/wiki/Simplepkg e o endereço da lista de discussão utilizada para discussões sobre o \emph{simplepkg} ou mesmo distribuições e pacotes do tipo Slackware é http://listas.sarava.org/wws/info/slack.
+
+\end{document}
diff --git a/tags/0.6rc1/install/slack-desc b/tags/0.6rc1/install/slack-desc
new file mode 100644
index 0000000..38ea489
--- /dev/null
+++ b/tags/0.6rc1/install/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+simplepkg: simplepkg (slackware management system)
+simplepkg:
+simplepkg: simplepkg is a very small set of scripts intended to help slackware
+simplepkg: users and developers, like the createpkg packaging tool, simplaret
+simplepkg: package retrieval, mkjail chroot installer and templatepkg template
+simplepkg: management system.
+simplepkg:
+simplepkg:
+simplepkg:
+simplepkg:
+simplepkg:
diff --git a/tags/0.6rc1/lib/common.sh b/tags/0.6rc1/lib/common.sh
new file mode 100644
index 0000000..0f2edcd
--- /dev/null
+++ b/tags/0.6rc1/lib/common.sh
@@ -0,0 +1,1870 @@
+#!/bin/bash
+#
+# common.sh: common functions for simplepkg
+# feedback: rhatto at riseup.net
+#
+# common.sh is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# common.sh is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# $Rev$ - $Author$
+#
+
+BASE_CONF="/etc/simplepkg"
+CONF="$BASE_CONF/simplepkg.conf"
+HOME_CONF="$HOME/.simplepkg/simplepkg.conf"
+DEFAULT_CONF="$BASE_CONF/defaults/simplepkg.conf"
+JAIL_LIST="$BASE_CONF/jailist"
+SIMPLARET="simplaret"
+
+# -----------------------------------------------
+# pkgtool functions
+# -----------------------------------------------
+
+function package_name {
+
+ # get the package name
+ # in some places (like in /var/log/packages), the package name is appended with
+ # an -upgrade information that should be striped
+ basename $1 .tgz | sed -e 's/-upgraded-[0-9]*-[0-9]*-[0-9]*,[0-9]*:[0-9]*:[0-9]*$//' \
+ -e 's/-[^-]*-[^-]*-[^-]*$//'
+
+}
+
+# -----------------------------------------------
+# package info functions
+# -----------------------------------------------
+
+function package_version {
+
+ # get VERSION from a package name
+ local file pack version
+ file="`basename $1`"
+ pack="`package_name $1`"
+ echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 1
+
+}
+
+function package_arch {
+
+ # get ARCH from a package name
+ local file pack arch
+ basename $1 | sed -e 's/.*\-\(.*\)\-.*.tgz$/\1/' -e 's/_slamd64$//g' -e 's/_sflack$//g'
+
+}
+
+function package_build {
+
+ # get BUILD from a package name
+ local file pack build
+ basename $1 | sed -e 's/.*\-.*\-\(.*\).tgz$/\1/'
+
+}
+
+# -----------------------------------------------
+# package administrative functions
+# -----------------------------------------------
+
+function install_packages {
+
+ local check installed unable_to_install root
+
+ # check if is time to clean the local repository
+ if [ "$SIMPLARET_CLEAN" == "1" ]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ elif [ ! -z "$SIMPLARET_PURGE_WEEKS" ] && [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge -w $SIMPLARET_PURGE_WEEKS
+ fi
+
+ root="$JAIL_ROOT/$server"
+ mkdir -p $root/var/log/packages
+
+ # now tries to install each package listed in the template
+ for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1 | awk '{ print $1 }'`; do
+
+ # try to install the package
+ ROOT=/$root ARCH=$ARCH VERSION=$VERSION $SIMPLARET --install $pack --skip-checks
+
+ # check if the package was installed
+ pack="`echo $pack | sed -e 's/\+/\\\+/'`"
+ installed="`check_installed $pack $root`"
+ check=$?
+
+ if [ ! -z "$installed" ] && [ "$check" == "0" ]; then
+ # the package is installed
+ if [ ! -z "$SIMPLARET_DELETE_DURING" ] && [ "$SIMPLARET_DELETE_DURING" != "0" ]; then
+ SILENT=1 ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ fi
+ else
+ unable_to_install="$unable_to_install\n\t`echo $pack | sed -e 's/\\\+/\+/'`"
+ fi
+
+ done
+
+ # purge packages, if needed
+ if [ "$SIMPLARET_DELETE_DOWN" == "1" ]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ fi
+
+ if [ ! -z "$unable_to_install" ]; then
+ echo "mkjail was unable to install the following packages on $root:"
+ echo -e "$unable_to_install"
+ fi
+
+}
+
+function remove_packages {
+
+ local pack
+
+ for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
+ ROOT=/$JAIL_ROOT/$server removepkg $pack
+ done
+
+}
+
+# -----------------------------------------------
+# config file functions
+# -----------------------------------------------
+
+function eval_parameter {
+
+ # usage: eval $1 parameter from $HOME_CONF, $CONF or $DEFAULT_CONF
+ # return the evaluated parameter if available or $2 $3 ... $n
+
+ if [ -e "$HOME_CONF" ] && grep -qe "^$1=" $HOME_CONF; then
+ grep -e "^$1=" $HOME_CONF | tail -n 1 | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | sed -e 's/ *#.*$//'
+ elif [ -e "$CONF" ] && grep -qe "^$1=" $CONF; then
+ grep -e "^$1=" $CONF | tail -n 1 | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | sed -e 's/ *#.*$//'
+ elif [ -e "$DEFAULT_CONF" ] && grep -qe "^$1=" $DEFAULT_CONF; then
+ grep -e "^$1=" $DEFAULT_CONF | tail -n 1 | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | sed -e 's/ *#.*$//'
+ else
+ shift
+ echo $*
+ fi
+
+}
+
+function set_constants {
+
+ # Set common constants
+ # on/off
+ on=1
+ off=0
+ # yes/no
+ yes=1
+ no=0
+
+}
+
+function eval_boolean_parameter {
+
+ # get a boolean parameter from the configuration
+
+ local value
+
+ # get the value
+ value="`eval_parameter $1 $2`"
+
+ convert_boolean $value
+
+}
+
+function convert_boolean {
+
+ # force case insensitiveness
+ local value="`echo $1 | tr '[:upper:]' '[:lower:]'`"
+
+ # convert it to wheter 0 or 1
+ if [ "$value" == "yes" ] || [ "$value" == "1" ] || [ "$value" == "on" ]; then
+ echo 1
+ else
+ echo 0
+ fi
+
+}
+
+function eval_config {
+
+ # simplepkg config file evaluation
+ # usage: eval_config <program-name> [-u]
+
+ if [ -f "$DEFAULT_CONF" ]; then
+
+ DEFAULT_ARCH="`eval_parameter DEFAULT_ARCH $(default_arch)`"
+ DEFAULT_VERSION="`eval_parameter DEFAULT_VERSION $(default_version)`"
+
+ TMP="`eval_parameter TMP /tmp`"
+ STORAGE="`eval_parameter STORAGE /var/simplaret/packages`"
+ JAIL_ROOT="`eval_parameter JAIL_ROOT /vservers`"
+ PATCHES_DIR="`eval_parameter PATCHES_DIR /var/simplaret/patches`"
+ ROOT_PRIORITY="`eval_parameter ROOT_PRIORITY patches slackware extra testing pasture`"
+ REPOS_PRIORITY="`eval_parameter REPOS_PRIORITY patches slackware extra testing pasture`"
+ SIMPLARET_PURGE_WEEKS="`eval_parameter SIMPLARET_PURGE_WEEKS 0`"
+ FTP_TOOL="`eval_parameter FTP_TOOL curl`"
+ HTTP_TOOL="`eval_parameter HTTP_TOOL curl`"
+ CONNECT_TIMEOUT="`eval_parameter CONNECT_TIMEOUT 0`"
+ TEMPLATE_FOLDER="`eval_parameter TEMPLATE_BASE /etc/simplepkg/templates`"
+ TEMPLATE_STORAGE_STYLE="`eval_parameter TEMPLATE_STORAGE_STYLE compact`"
+
+ SIMPLARET_CLEAN="`eval_boolean_parameter SIMPLARET_CLEAN 1`"
+ SIMPLARET_DELETE_DOWN="`eval_boolean_parameter SIMPLARET_DELETE_DOWN 1`"
+ SIMPLARET_UPDATE="`eval_boolean_parameter SIMPLARET_UPDATE 0`"
+ SIMPLARET_DELETE_DURING="`eval_boolean_parameter SIMPLARET_DELETE_DURING 0`"
+ SIMPLARET_PURGE_PATCHES="`eval_boolean_parameter SIMPLARET_PURGE_PATCHES 1`"
+ SIMPLARET_DOWNLOAD_FROM_NEXT_REPO="`eval_boolean_parameter SIMPLARET_DOWNLOAD_FROM_NEXT_REPO 1`"
+ PASSIVE_FTP="`eval_boolean_parameter PASSIVE_FTP 0`"
+ WARNING="`eval_boolean_parameter WARNING 0`"
+ SIGNATURE_CHECKING="`eval_boolean_parameter SIGNATURE_CHECKING 0`"
+ DEPENDENCY_CHECKING="`eval_boolean_parameter DEPENDENCY_CHECKING 1`"
+ TEMPLATES_UNDER_SVN="`eval_boolean_parameter TEMPLATES_UNDER_SVN 0`"
+ ADD_TO_JAIL_LIST="`eval_boolean_parameter ADD_TO_JAIL_LIST 1`"
+
+ # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+ # donwload even # already applied patches, a good option when you plan
+ # to keep local copies of all needed patches for your system
+ DOWNLOAD_EVEN_APPLIED_PATCHES="`eval_boolean_parameter DOWNLOAD_EVEN_APPLIED_PATCHES 0`"
+
+ # Enabling this option, jail-upgrade will look at your
+ # standard repositories for new packages; if it find a package
+ # with different version of your current installed package and
+ # also this package isnt in the packages folder, then the new
+ # package is apllied; if in doubt, just say no or leave blank.
+ CONSIDER_ALL_PACKAGES_AS_PATCHES="`eval_boolean_parameter CONSIDER_ALL_PACKAGES_AS_PATCHES 0`"
+
+ # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+ # store patches it finds on ROOT repositories on
+ #
+ # $PATCHES_DIR/$ARCH/$VERSION/root-$repository_name.
+ #
+ # By default this option is turned off because it breaks the standard
+ # way to store packages and can cause some confusion, but its an useful
+ # feature if you like to see all patches apart from common packages and/or
+ # stored in the same tree.
+ STORE_ROOT_PATCHES_ON_PATCHES_DIR="`eval_boolean_parameter STORE_ROOT_PATCHES_ON_PATCHES_DIR 0`"
+
+ # now we place "patches" on the top of ROOT_PRIORITY
+ ROOT_PRIORITY="patches `echo $ROOT_PRIORITY | sed -e 's/patches//'`"
+
+ else
+ echo $1 error: config file $DEFAULT_CONF not found
+ exit 1
+ fi
+
+ if [ ! -d "$STORAGE" ]; then
+ mkdir -p $STORAGE
+ fi
+
+ if [ ! -d "$PATCHES_DIR" ]; then
+ mkdir -p $PATCHES_DIR
+ fi
+
+ if [ ! -d "$TMP" ]; then
+ mkdir -p $TMP
+ fi
+
+ if [ -z "$ARCH" ]; then
+ ARCH="$DEFAULT_ARCH"
+ fi
+
+ if [ -z "$VERSION" ]; then
+ VERSION="$DEFAULT_VERSION"
+ fi
+
+ if [ "$FTP_TOOL" != "wget" ] && [ "$FTP_TOOL" != "curl" ] && [ "$FTP_TOOL" != "ncftpget" ]; then
+ echo "$1 configuration error: invalid value $FTP_TOOL for config parameter FTP_TOOL"
+ echo "$1 assuming value \"curl\" for variable FTP_TOOL"
+ FTP_TOOL="curl"
+ fi
+
+ if [ "$HTTP_TOOL" != "wget" ] && [ "$HTTP_TOOL" != "curl" ]; then
+ echo "$1 configuration error: invalid value $HTTP_TOOL for config parameter HTTP_TOOL"
+ echo "$1 assuming value \"curl\" for variable HTTP_TOOL"
+ HTTP_TOOL="curl"
+ fi
+
+ if which $SIMPLARET &> /dev/null; then
+ if [ "$SIMPLARET_UPDATE" == "1" ]; then
+ if [ "$2" == "-u" ]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --update
+ fi
+ fi
+ else
+ echo "$SIMPLARET not found, please install it before run $0"
+ fi
+
+ if [ "$TEMPLATE_STORAGE_STYLE" != "simplepkg-folder" ] && \
+ [ "$TEMPLATE_STORAGE_STYLE" != "templates-folder" ] && \
+ [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ] && \
+ [ "$TEMPLATE_STORAGE_STYLE" != "compact" ]; then
+ TEMPLATE_STORAGE_STYLE="compact"
+ fi
+
+ if [ ! -z "$ROOT" ]; then
+ JAIL_ROOT="$ROOT"
+ fi
+
+}
+
+# -----------------------------------------------
+# arch and version functions
+# -----------------------------------------------
+
+function default_version {
+
+ # get version from /etc/slackware-version
+ if [ -f "$1/etc/slackware-version" ]; then
+ cat $1/etc/slackware-version | awk '{ print $2 }' | sed -e 's/.0$//'
+ elif [ -f "$1/etc/slamd64-version" ]; then
+ cat $1/etc/slamd64-version | awk '{ print $2 }' | sed -e 's/.0$//'
+ elif [ -f "$1/etc/bluewhite64-version" ]; then
+ cat $1/etc/bluewhite64-version | awk '{ print $2 }' | sed -e 's/.0$//'
+ elif [ -f "$1/etc/sflack-version" ]; then
+ cat $1/etc/sflack-version | awk '{ print $2 }' | sed -e 's/.0$//'
+ else
+ aaa_base="`basename $(ls $1/var/log/packages/aaa_base-[0-9]* 2> /dev/null)`"
+ echo `package_version $aaa_base`
+ fi
+
+}
+
+function default_arch {
+
+ # get arch from /etc/slackware-version
+
+ local arch
+
+ if [ -f "$1/etc/slackware-version" ]; then
+ arch="`cat $1/etc/slackware-version | awk '{ print $3 }' | sed -e 's/(//' -e 's/)//'`"
+ if [ -z "$arch" ]; then
+ arch="i486"
+ fi
+ elif [ -f "$1/etc/slamd64-version" ] || [ -f "$1/etc/bluewhite64-version" ] || [ -f "$1/etc/sflack-version" ]; then
+ arch="x86_64"
+ else
+ aaa_base="`basename $(ls $1/var/log/packages/aaa_base-[0-9]* 2> /dev/null)`"
+ echo `package_arch $aaa_base`
+ fi
+
+ if [ -z "$arch" ]; then
+ echo `uname -m`
+ else
+ echo $arch
+ fi
+
+}
+
+function default_distro {
+
+ # get distro name from /etc/slackware-version
+ if [ "`default_arch`" == "x86_64" ]; then
+ if [ -f "$1/etc/slamd64-version" ]; then
+ echo slamd64
+ elif [ -f "$1/etc/bluewhite64-version" ]; then
+ echo bluewhite64
+ elif [ -f "$1/etc/sflack-version" ]; then
+ echo sflack
+ else
+ echo slamd64
+ fi
+ else
+ if [ -f "$1/etc/slackware-version" ]; then
+ cat $1/etc/slackware-version | awk '{ print $1 }' | tr '[[:upper:]]' '[[:lower:]]'
+ else
+ echo slackware
+ fi
+ fi
+
+}
+
+# -----------------------------------------------
+# template functions
+# -----------------------------------------------
+
+function search_default_template {
+
+ if [ -e "$BASE_CONF/default.template" ]; then
+ TEMPLATE_BASE="$BASE_CONF/default"
+ echo $BASENAME using default template
+ elif [ -e "$TEMPLATE_FOLDER/default.template" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/default"
+ echo $BASENAME: using default template
+ elif [ -e "$TEMPLATE_FOLDER/default/default.template" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/default/default"
+ echo $BASENAME: using default template
+ elif [ -e "$TEMPLATE_FOLDER/default/packages" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/default"
+ echo $BASENAME: using default template
+ elif [ -e "$BASE_CONF/defaults/templates/default/default.template" ]; then
+ TEMPLATE_BASE="$BASE_CONF/defaults/templates/default/default"
+ echo $BASENAME using default template
+ elif [ -e "$BASE_CONF/defaults/templates/default/packages" ]; then
+ TEMPLATE_BASE="$BASE_CONF/defaults/templates/default"
+ echo $BASENAME using default template
+ else
+ echo $BASENAME: error: default template not found
+ echo $BASENAME: please create a template using templatepkg
+ return 1
+ fi
+
+}
+
+function search_template {
+
+ # determine the template to be used
+ # usage: search-template <template-name> [--new | --update]
+
+ #
+ # templates can be stored either on
+ #
+ # - $BASE_CONF/template_name.template
+ # - $TEMPLATE_FOLDER/template_name.template
+ # - $TEMPLATE_FOLDER/template_name/template_name.template
+ #
+ # also, there's a folder for "oficial" simplepkg templates,
+ # $BASE_CONF/defaults/templates/ and you can override any template
+ # in the default folder by placing a template with the same name
+ # in the template storage folders
+ #
+
+ if [ -f "$BASE_CONF/$1.template" ]; then
+ TEMPLATE_BASE="$BASE_CONF/$1"
+ elif [ -f "$TEMPLATE_FOLDER/$1.template" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+ elif [ -f "$TEMPLATE_FOLDER/$1/$1.template" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1/$1"
+ elif [ -f "$TEMPLATE_FOLDER/$1/packages" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+ elif [ -f "$BASE_CONF/defaults/templates/$1/$1.template" ] && \
+ [ "$2" != "--update" ]; then
+ TEMPLATE_BASE="$BASE_CONF/defaults/templates/$1/$1"
+ else
+ if [ "$2" == "--new" ]; then
+ # we need to return the path for a new template
+ if [ "$TEMPLATE_STORAGE_STYLE" == "simplepkg-folder" ]; then
+ TEMPLATE_BASE="$BASE_CONF/$1"
+ elif [ "$TEMPLATE_STORAGE_STYLE" == "templates-folder" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+ elif [ "$TEMPLATE_STORAGE_STYLE" == "own-folder" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1/$1"
+ elif [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+ else
+ TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+ fi
+ elif [ "$2" == "--update" ]; then
+ return 1
+ else
+ echo $BASENAME: template $1 not found
+ search_default_template
+ fi
+ fi
+
+}
+
+function template_packages {
+
+ if [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ echo $TEMPLATE_BASE/packages
+ else
+ echo $TEMPLATE_BASE.template
+ fi
+
+}
+
+function template_perms {
+
+ if [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ echo $TEMPLATE_BASE/perms
+ else
+ echo $TEMPLATE_BASE.perms
+ fi
+
+}
+
+function template_files {
+
+ if [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ echo $TEMPLATE_BASE/files
+ else
+ echo $TEMPLATE_BASE.d
+ fi
+
+}
+
+function template_scripts {
+
+ if [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ echo $TEMPLATE_BASE/scripts
+ else
+ echo $TEMPLATE_BASE.s
+ fi
+
+}
+
+# -----------------------------------------------
+# unix permission functions
+# -----------------------------------------------
+
+function numeric_perm {
+
+ # get the numeric permission of a file
+ # usage: numeric_perm <file-name>
+
+ # just a bit of forbidden secrets
+
+ if [ -a "$1" ]; then
+ ls -lnd $1 | awk '{ print $1 }' | \
+ sed -e 's/^.//' -e 's/r/4/g' -e 's/w/2/g' -e 's/x/1/g' \
+ -e 's/-/0/g' -e 's/\(.\)\(.\)\(.\)/\1+\2+\3/g' | \
+ fold -w5 | bc -l | xargs | sed -e 's/ //g'
+ fi
+
+}
+
+function get_owner {
+
+ # get the numeric owner for a file
+ # usage: get_owner <file>
+
+ if [ -a "$1" ]; then
+ ls -lnd $1 | awk '{ print $3 }'
+ fi
+
+}
+
+function get_group {
+
+ # get the numeric group for a file
+ # usage: get_group <file>
+
+ if [ -a "$1" ]; then
+ ls -lnd $1 | awk '{ print $4 }'
+ fi
+
+}
+
+function is_writable_folder {
+
+ # check if a folder is writable
+ # usage: is_writable_folder <folder>
+
+ local tmpfile folder="$1"
+
+ if mkdir -p $folder &> /dev/null && tmpfile=`mktemp $folder/is_writable_folder.XXXXXX`; then
+ rm -f $tmpfile
+ return 0
+ else
+ return 1
+ fi
+
+}
+
+# -----------------------------------------------
+# subversion functions
+# -----------------------------------------------
+
+function svn_update {
+
+ # simple wrapper around svn update
+ # usage: svn_update
+
+ svn update
+
+}
+
+function svn_folder {
+
+ # simple svn folder checker
+ # usage: svn_folder <folder>
+
+ if [ -d "$1/.svn" ]; then
+ return
+ else
+ return 1
+ fi
+
+}
+
+function templates_under_svn {
+
+ # check if svn usage is enabled
+
+ if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then
+ if [ "$TEMPLATE_STORAGE_STYLE" == "own-folder" ] || \
+ [ "$TEMPLATE_STORAGE_STYLE" == "compact" ]; then
+ return 0
+ else
+ return 1
+ fi
+ else
+ return 1
+ fi
+
+}
+
+function svn_check {
+
+ # check if a file is under svn
+ # usage: svn_check <file>
+
+ local folder file
+
+ folder="`dirname $1`"
+ file="`basename $1`"
+
+ if [ ! -e "$folder/$file" ]; then
+
+ return 1
+
+ elif svn_folder $folder/$file; then
+
+ return 0
+
+ elif svn_folder $folder; then
+
+ (
+ cd $folder
+
+ if [ "`svn status $file | awk '{ print $1 }'`" == "?" ]; then
+ return 1
+ else
+ return 0
+ fi
+ )
+
+ else
+ return 1
+ fi
+
+}
+
+function build_svn_repo {
+
+ # Checkout a new slackbuild working copy
+ # input: $1 - svn directory name
+ # $2 - svn address
+ [ $# -ne 2 ] && exit 5
+ SVN_BASEDIR="`dirname $1`"
+ mkdir -p $SVN_BASEDIR || exit 4
+ cd $SVN_BASEDIR
+ svn checkout $2
+ cd $1
+
+}
+
+function check_svn_repo {
+
+ # Verify if repository exist
+ # input: $1 - svn directory name
+ # $2 - svn address
+ [ $# -ne 2 ] && exit 5
+ [ ! -d "$1" ] && build_svn_repo $1 $2
+
+}
+
+function sync_svn_repo {
+
+ # Synchronize repository
+ # input: $1 - svn directory name
+ # $2 - svn address
+ [ $# -ne 2 ] && exit 5
+
+ local folder url cwd
+ folder="$1"
+ url="$2"
+ cwd="`pwd`"
+
+ mkdir -p $folder
+ cd $folder
+ if svn_folder $(pwd); then
+ su_svn update
+ else
+ build_svn_repo $folder $url
+ fi
+ cd $pwd
+
+}
+
+function svn_add {
+
+ local file="$1" folder folders dir_list cwd
+ local subfolder subfolders
+
+ if [ -e "$file" ] && ! svn_check $file; then
+
+ folder="`absolute_folder $file`"
+ cwd="`pwd`"
+
+ if svn_folder $folder; then
+ cd $folder
+ su_svn add `basename $file`
+ else
+
+ # reverse folder order
+ dir_list="`echo $folder | tr '/' ' '`"
+ for i in $dir_list; do
+ folders="$i $folders"
+ done
+
+ cd $folder
+
+ for i in $folders; do
+ cd ..
+ if svn_folder $(pwd); then
+ # add the parent folder
+ su_svn add --depth=empty $i
+
+ # add all subfolders
+ cd $i
+ subfolders="$(echo $folder | sed -e "s/^$(regexp_slash $(pwd))//")"
+ for subfolder in `echo $subfolders | tr '/' ' '`; do
+ if ! svn_check $subfolder; then
+ su_svn add --depth=empty $subfolder
+ cd $subfolder
+ fi
+ done
+
+ # add the file
+ cd $folder
+ su_svn add `basename $file`
+
+ break
+ fi
+ done
+
+ fi
+
+ cd $cwd
+
+ fi
+
+}
+
+function svn_del {
+
+ local file folder
+
+ file="$1"
+ folder="`dirname $file`"
+
+ if [ -e "$file" ] && svn_folder $folder && svn_check $file; then
+ chown_svn $file && chgrp_svn $file
+ ( cd $folder && su_svn del --force `basename $file` )
+ else
+ ( cd $folder && rm -rf `basename $file` )
+ fi
+
+}
+
+function svn_copy {
+
+ # svn add file
+ # usage: svn_copy <orig> <dest>
+
+ [ $# -ne 2 ] && handle_error $ERROR_PAR_NUMBER
+
+ if [ -e "$1" ]; then
+
+ local orig file dest
+
+ orig="`dirname $1`"
+ file="`basename $1`"
+ dest="$2"
+
+ if [ -d "$dest" ]; then
+ dest="$dest/$file"
+ fi
+
+ # copy file
+ if ! is_the_same $orig $(dirname $dest); then
+ cp $orig/$file $dest
+ fi
+
+ # add file to the revision system
+ if svn_folder `dirname $dest`; then
+ chown_svn $dest && chgrp_svn $dest
+ ( cd `dirname $dest` && svn_add `basename $dest` )
+ fi
+
+ fi
+
+}
+
+function svn_mkdir {
+
+ # svn make directory
+ # usage: svn_mkdir <folder>
+
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+
+ DIR_LIST=`echo $1 | tr '/' ' '`
+
+ DIR=""
+ for i in $DIR_LIST; do
+ DIR=$DIR/$i
+ if [ ! -e ${DIR:1} ]; then
+ su_svn mkdir ${DIR:1}
+ elif [ -d "${DIR:1}" ] && ! svn_folder ${DIR:1}; then
+ su_svn add ${DIR:1}
+ fi
+ done
+
+}
+
+function is_inside_svn_repo {
+
+ # check if a file is inside a svn repository
+ # usage: is_inside_svn_repo <file>
+
+ local file="$1" folder folders dir_list cwd
+
+ if [ -e "$file" ]; then
+ folder="`absolute_folder $file`"
+ fi
+
+ if svn_folder $folder; then
+ return true
+ fi
+
+ # reverse folder order
+ dir_list="`echo $folder | tr '/' ' '`"
+ for i in $dir_list; do
+ folders="$i $folders"
+ done
+
+ cwd="`pwd`"
+ cd $folder
+
+ for i in $folders; do
+ cd ..
+ if svn_folder $(pwd); then
+ cd $cwd
+ return true
+ fi
+ done
+
+ cd $cwd
+ return false
+
+}
+
+function su_svn {
+
+ # execute svn using a different user
+ if [ ! -z "$SVN_USER" ]; then
+ if [ "`whoami`" != "$SVN_USER" ]; then
+ su $SVN_USER -c "svn $*"
+ else
+ svn $*
+ fi
+ else
+ svn $*
+ fi
+
+}
+
+function chown_svn {
+
+ # set svn folder ownership
+ if [ ! -z "$SVN_USER" ] && [ -e "$1" ]; then
+ chown -R $SVN_USER $1
+ fi
+
+}
+
+function chgrp_svn {
+
+ # set svn folder group
+ if [ ! -z "$SVN_GROUP" ] && [ -e "$1" ]; then
+ chgrp -R $SVN_GROUP $1
+ fi
+
+}
+
+function svn_remove_empty_folders {
+
+ if [ -z "$1" ] && [ ! -d "$1" ]; then
+ return 1
+ fi
+
+ local folder
+
+ for folder in `find $1 -type d -print | grep -v "/\.svn" | sort -r`; do
+ if [ "`ls -A -1 $folder | grep -v -e '^\.svn' | wc -l`" -eq "0" ]; then
+ svn_del $folder
+ fi
+ done
+
+}
+
+function commit_changes {
+
+ # usage: commit_changes <path>
+
+ local repos="$1" tmpfile
+ shift
+
+ if svn_folder $repos; then
+ cwd="`pwd`"
+ chown_svn $repos && chgrp_svn $repos
+ cd $repos
+ if [ ! -z "$1" ]; then
+ if tmpfile=`mktemp $TMP/simplepkg_commit.XXXXXX`; then
+ echo $* > $tmpfile
+ chmod +r $tmpfile
+ su_svn commit -F $tmpfile
+ rm -f $tmpfile
+ else
+ su_svn commit
+ fi
+ else
+ su_svn commit
+ fi
+ cd $cwd
+ fi
+
+}
+
+function valid_svn_repo {
+
+ # check a svn repository URL
+ # usage: set_svn_repo <repository>
+
+ if [ ! -z "$1" ]; then
+ if echo $1 | grep -q -v -e "^svn://"; then
+ if echo $1 | grep -q -v -e "svn+.\+://"; then
+ if echo $1 | grep -q -v -e "^file://"; then
+ echo $BASENAME: invalid repository URL $1
+ return 1
+ fi
+ fi
+ fi
+ else
+ echo $BASENAME: no repository defined
+ return 1
+ fi
+
+}
+
+function check_and_create_svn_repo {
+
+ # check and create svn repository
+ # usage: check_and_create_svn_repo <repository>
+
+ local repository="$1" repository_type repository_path
+
+ if ! echo $repository | grep -q ":"; then
+ repository="file://$repository"
+ fi
+
+ repository_type="`echo $repository | cut -d : -f 1`"
+ repository_path="`echo $repository | cut -d : -f 2`"
+
+ if [ "$repository_type" == "file" ] && [ ! -d "$repository_path" ]; then
+ echo "Creating subversion repository $repository..."
+ mkdir -p `dirname $repository_path`
+ svnadmin create $repository_path --fs-type fsfs
+ if [ "$?" != "0" ]; then
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ else
+ return 0
+ fi
+ fi
+
+}
+
+function repository_import {
+
+ # import a folder into a subversion repository
+ # usage: repository_import <folder> <repository>
+
+ local folder="$1" oldfolder tmpfile
+ local repository="$2" repository_type repository_path
+
+ if [ ! -d "$folder" ] || [ -z "$repository" ]; then
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+ if ! valid_svn_repo $repository; then
+ echo "Invalid repository $repository, aborting."
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+ if ! echo $repository | grep -q ":"; then
+ repository="file://$repository"
+ fi
+
+ mkdir -p $folder
+
+ if svn_folder $folder; then
+ echo "Packages folder $folder seens to be already under revision control, aborting."
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+ check_and_create_svn_repo $repository
+ if [ "$?" != "0" ]; then
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+ repository_path="`echo $repository | cut -d : -f 2`"
+ if [ -d "$repository_path" ]; then
+ chown_svn $repository_path && chgrp_svn $repository_path
+ fi
+
+ echo "Importing files from $folder into $repository..."
+ if tmpfile=`mktemp $TMP/simplepkg_import.XXXXXX`; then
+ echo "initial import" > $tmpfile
+ chmod +r $tmpfile
+ su_svn import $folder $repository -F $tmpfile
+ rm -f $tmpfile
+ else
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+ if [ "$?" == "0" ]; then
+ echo "Making $folder a working copy of $repository..."
+ oldfolder="$(mktemp -d $(echo $folder | sed -e 's/\/*$//g').XXXXXX)"
+ echo "Backing up old $folder at $oldfolder..."
+ mv $folder $oldfolder
+ chown_svn `dirname $folder` && chgrp_svn `dirname $folder`
+ su_svn checkout $repository $folder
+ else
+ EXIT_CODE="1"
+ return $EXIT_CODE
+ fi
+
+}
+
+# -----------------------------------------------
+# update jail functions
+# -----------------------------------------------
+
+function update_template_files {
+
+ # update template files from svn
+ # usage: update_template_files
+
+ if templates_under_svn && svn_folder `template_files`; then
+ echo Checking out last template revision from svn...
+ cd `dirname $TEMPLATE_BASE`
+ svn update
+ fi
+
+}
+
+function update_jail_packages {
+
+ # update jail packages according the template
+ # usage: update_jail_packages <jail-path>
+
+ # check if installed packages are listed in the template
+ for pack in `ls -1 $1/var/log/packages/`; do
+ pack=`package_name $pack`
+ if ! `grep -v -e "^#" $(template_packages) | cut -d : -f 1 | awk '{ print $1 }' | grep -q -e "^$pack\$"`; then
+ ROOT=$1 removepkg $pack
+ fi
+ done
+
+ # check if each package from the template is installed
+ grep -v -e "^#" `template_packages` | cut -d : -f 1 | awk '{ print $1 }' | while read pack; do
+
+ # check if the package is installed
+ pack="`echo $pack | sed -e 's/\+/\\\+/'`"
+ installed="`check_installed $pack $1`"
+ check=$?
+
+ if [ -z "$installed" ] || [ "$check" != "0" ]; then
+ # the package isn't installed
+ ROOT=$1 simplaret install $pack
+ fi
+ done
+
+}
+
+function copy_template_files {
+
+ # copy template files into jail
+ # usage: copy_template_files <jail-path>
+
+ if [ -d "$1" ]; then
+ if [ -d "`template_files`" ]; then
+ echo "Copying template files to $1..."
+ if templates_under_svn && svn_folder `template_files`; then
+ rsync -av --exclude=.svn `template_files`/ $1/
+ else
+ rsync -av `template_files`/ $1/
+ fi
+ fi
+ fi
+
+}
+
+function set_jail_perms {
+
+ # set template file permissions under a jail
+ # usage: set_jail_perms <jail-path>
+
+ if [ -s "`template_perms`" ]; then
+ echo Setting jail $1 permissions...
+ cat `template_perms` | while read entry; do
+ file="`echo $entry | cut -d ";" -f 1`"
+ if [ -e "`template_files`/$file" ] && [ -a "$1/$file" ]; then
+ owner="`echo $entry | cut -d ";" -f 2`"
+ group="`echo $entry | cut -d ";" -f 3`"
+ perms="`echo $entry | cut -d ";" -f 4`"
+ chmod $perms $1/$file
+ chown $owner:$group $1/$file
+ fi
+ done
+ fi
+
+}
+
+# -----------------------------------------------
+# repository build functions
+# -----------------------------------------------
+
+function svn_add_meta {
+
+ find . -name '*meta' -exec svn add {} 2> /dev/null \;
+
+}
+
+function gen_filelist {
+
+ # generate FILELIST.TXT
+ # usage: gen_filelist
+
+ find . -type f -name '*.tgz' -follow -print | sort | tr '\n' '\0' | \
+ xargs -0r ls -ldL --time-style=long-iso > FILELIST.TXT
+ echo "Created new FILELIST.TXT"
+
+ svn_add FILELIST.TXT
+
+}
+
+function gen_patches_filelist {
+
+ # generate FILE_LIST
+ # usage: gen_patches_filelist <folder>
+
+ if [ ! -z "$1" ] && [ -d "$1" ]; then
+
+ local folder
+ folder="$1"
+
+ (
+
+ cd $folder
+
+ find . -type f -name '*.tgz' -follow -print | sort | tr '\n' '\0' | \
+ xargs -0r ls -ldL --time-style=long-iso > FILE_LIST
+
+ svn_add FILE_LIST
+
+ )
+
+ if [ "$1" == "." ]; then
+ echo "Created new FILE_LIST"
+ else
+ echo "Created new $1/FILE_LIST"
+ fi
+
+ fi
+
+}
+
+function gen_packages_txt {
+
+ # generate PACKAGES.TXT
+ # usage: gen_packages_txt <folder>
+
+ if [ ! -z "$1" ] && [ -d "$1" ]; then
+
+ local folder
+ folder="$1"
+
+ (
+
+ cd $folder
+
+ echo '' > PACKAGES.TXT
+ find . -type f -name '*.meta' -exec cat {} \; >> PACKAGES.TXT
+ cat PACKAGES.TXT | gzip -9 -c - > PACKAGES.TXT.gz
+
+ svn_add PACKAGES.TXT
+ svn_add PACKAGES.TXT.gz
+
+ )
+
+ if [ "$1" == "." ]; then
+ echo "Created new PACKAGES.TXT and PACKAGES.TXT.gz"
+ else
+ echo "Created new $1/PACKAGES.TXT and $1/PACKAGES.TXT.gz for $folder"
+ fi
+
+ fi
+
+}
+
+function gen_md5_checksums {
+
+ # generate CHECKSUMS.md5
+ # usage: gen_md5_checksums <folder>
+
+ if [ -d "$1" ]; then
+
+ local folder
+ folder="$1"
+
+ (
+
+ cd $folder
+
+ echo 'MD5 digest for files in this directory.' > CHECKSUMS.md5
+ echo '' >> CHECKSUMS.md5
+ find . -type f -name '*.tgz' -exec md5sum {} \; >> CHECKSUMS.md5
+ cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
+
+ svn_add CHECKSUMS.md5
+ svn_add CHECKSUMS.md5.gz
+
+ )
+
+ if [ "$1" == "." ]; then
+ echo "Created new CHECKSUMS.md5 and CHECKSUMS.md5.gz"
+ else
+ echo "Created new $1/CHECKSUMS.md5 and $1/CHECKSUMS.md5.gz for $folder"
+ fi
+
+ fi
+
+}
+
+function update_md5_checksum {
+
+ # update CHECKSUMS.md5
+ # usage: update_md5_checksums <folder> <file>
+
+ if [ -z "$2" ] || [ ! -d "$1" ] || [ ! -f "$1/$2" ]; then
+ return 1
+ else
+ local file folder
+ file="$2"
+ folder="$1"
+ fi
+
+ (
+
+ cd $folder
+
+ if [ ! -f CHECKSUMS.md5 ]; then
+ gen_md5_checksums .
+ else
+ # remove the old entry and add a new one
+ sed -i "/ \.*\/*$(regexp_slash $file)$/d" CHECKSUMS.md5
+ file="`echo $file | sed -e 's/\.*\/*//'`" # remove additional ./
+ md5sum ./$file >> CHECKSUMS.md5
+ fi
+
+ cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
+
+ echo "Updated CHECKSUMS.md5 at $folder"
+
+ svn_add CHECKSUMS.md5
+ svn_add CHECKSUMS.md5.gz
+
+ )
+
+}
+
+function gen_meta {
+
+ # generate metafiles
+ # usage: gen_meta <package-file>
+
+ if [ ! -f $1 ]; then
+ return 1
+ else
+ file="$1"
+ fi
+
+ if [ "`echo $file | grep -E '(.*{1,})\-(.*[\.\-].*[\.\-].*).tgz[ ]{0,}$'`" == "" ]; then
+ return
+ fi
+
+ NAME=$(echo $file | sed -re "s/(.*\/)(.*.tgz)$/\2/")
+ LOCATION=$(echo $file | sed -re "s/(.*)\/(.*.tgz)$/\1/")
+ SIZE=$( expr `gunzip -l $file | tail -n 1 | awk '{ print $1 }'` / 1024 )
+ USIZE=$( expr `gunzip -l $file | tail -n 1 | awk '{ print $2 }'` / 1024 )
+ REQUIRED=$(tar xzfO $file install/slack-required 2>/dev/null | grep -v -e "^#" | xargs -r -iZ echo -n "Z," | sed -e "s/,$//")
+ CONFLICTS=$(tar xzfO $file install/slack-conflicts 2>/dev/null | grep -v -e "^#" | xargs -r -iZ echo -n "Z," | sed -e "s/,$//")
+ SUGGESTS=$(tar xzfO $file install/slack-suggests 2>/dev/null | grep -v -e "^#" | xargs -r )
+ METAFILE=${NAME%tgz}meta
+
+ echo "PACKAGE NAME: $NAME" > $LOCATION/$METAFILE
+
+ if [ -n "$DL_URL" ]; then
+ echo "PACKAGE MIRROR: $DL_URL" >> $LOCATION/$METAFILE
+ fi
+
+ echo "PACKAGE LOCATION: $LOCATION" >> $LOCATION/$METAFILE
+ echo "PACKAGE SIZE (compressed): $SIZE K" >> $LOCATION/$METAFILE
+ echo "PACKAGE SIZE (uncompressed): $USIZE K" >> $LOCATION/$METAFILE
+ echo "PACKAGE REQUIRED: $REQUIRED" >> $LOCATION/$METAFILE
+ echo "PACKAGE CONFLICTS: $CONFLICTS" >> $LOCATION/$METAFILE
+ echo "PACKAGE SUGGESTS: $SUGGESTS" >> $LOCATION/$METAFILE
+ echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE
+
+ tar xzfO $file install/slack-desc | grep -E '\w+\:' | grep -v '^#' >> $LOCATION/$METAFILE
+
+ echo "" >> $LOCATION/$METAFILE
+ echo "Created metafile for `basename $file`"
+
+ ( cd `dirname $file` && svn_add `basename $file .tgz`.meta )
+
+}
+
+function repo_gpg_key {
+
+ # adds or updates a repository keyring
+ # usage: repo_gpg_key <folder> [update]
+
+ local folder="$1" update="$2" tmp_gpg_folder
+
+ if [ -z "$SIGN_KEYID" ]; then
+ echo "GPG-KEY checking failed, no sign key id set."
+ return 1
+ fi
+
+ if [ "$update" == "--update" ]; then
+ update=true
+ else
+ update=false
+ fi
+
+ if [ $SIGN -eq $on ]; then
+ if [ -f "$folder/GPG-KEY" ]; then
+ if $update || ! gpg --with-colons < $folder/GPG-KEY | cut -d : -f 5 | grep -q -e "$SIGN_KEYID$"; then
+ echo "Adding OpenPGP key id $SIGN_KEYID to $folder/GPG-KEY file..."
+
+ tmp_gpg_folder="`mktemp -d $TMP/tmp_gpg_folder.XXXXXX`"
+ tmp_gpg_pubkey="`mktemp -d $TMP/tmp_gpg_pubkey.XXXXXX`"
+
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ chown $SIGN_USER $tmp_gpg_folder
+ chown $SIGN_USER $tmp_gpg_pubkey
+
+ # merge pubkey information in a temporary keyring
+ su $SIGN_USER -c "gpg --export --armor $SIGN_KEYID > $tmp_gpg_pubkey/pubkey.asc"
+ su $SIGN_USER -c "gpg --homedir $tmp_gpg_folder --import < $folder/GPG-KEY"
+ su $SIGN_USER -c "gpg --homedir $tmp_gpg_folder --import < $tmp_gpg_pubkey/pubkey.asc"
+
+ # export temporary keyring to repository keyring
+ su $SIGN_USER -c "gpg --homedir $tmp_gpg_folder --export --armor" > $folder/GPG-KEY
+ else
+ # merge pubkey information in a temporary keyring
+ gpg --export --armor $SIGN_KEYID > $tmp_gpg_pubkey/pubkey.asc
+ gpg --homedir $tmp_gpg_folder --import < $folder/GPG-KEY
+ gpg --homedir $tmp_gpg_folder --import < $tmp_gpg_pubkey/pubkey.asc
+
+ # export temporary keyring to repository keyring
+ gpg --homedir $tmp_gpg_folder --export --armor > $folder/GPG-KEY
+ fi
+
+ # cleanup
+ rm -rf $tmp_gpg_folder $tmp_gpg_pubkey
+
+ fi
+ else
+ echo "Adding OpenPGP key id $SIGN_KEYID to $folder/GPG-KEY file..."
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ su $SIGN_USER -c "gpg --export --armor $SIGN_KEYID" > $folder/GPG-KEY
+ else
+ gpg --export --armor $SIGN_KEYID > $folder/GPG-KEY
+ fi
+ fi
+ svn_add $folder/GPG-KEY
+ fi
+
+}
+
+# -----------------------------------------------
+# Error functions
+# -----------------------------------------------
+
+function error_codes {
+
+ # Slackbuilds error codes ** not change **
+ ERROR_WGET=31 # wget error
+ ERROR_MAKE=32 # make source error
+ ERROR_INSTALL=33 # make install error
+ ERROR_MD5=34 # md5sum error
+ ERROR_CONF=35 # ./configure error
+ ERROR_HELP=36 # dasable
+ ERROR_TAR=37 # tar error
+ ERROR_MKPKG=38 # makepkg error
+ ERROR_GPG=39 # gpg check error
+ ERROR_PATCH=40 # patch error
+ ERROR_VCS=41 # cvs error
+ ERROR_MKDIR=42 # make directory error
+ ERROR_MANIFEST=43 # manifest error
+ # Slackbuilds error codes ** not change **
+
+ # Commum error codes
+ ERROR_FILE_NOTFOUND=100 # file not found
+ ERROR_NOT_NUMBER=101 # argument is not a number
+ ERROR_PAR_NUMBER=102 # incorrect number of parameters
+ ERROR_COMMON_NOT_FOUND=103 # common.sh not found
+
+ # Createpkg error codes
+ ERROR_CREATEPKG_INSTALLPKG=200 # installpkg error
+ ERROR_CREATEPKG_DEPENDENCY=201 # dependency error
+ ERROR_CREATEPKG_SLACKBUILD_NOTFOUND=202 # Script or package not found
+
+ # Mkbuild error codes
+ ERROR_MKBUILD_FILE_NOT_FOUND=500
+ ERROR_MKBUILD_CONSTRUCTION=501
+ ERROR_MKBUILD_PROGRAM=502
+ ERROR_MKBUILD_INPUT_PAR=503
+ ERROR_MKBUILD_SVN=504
+
+ # Mkpatch error codes
+ ERROR_MKPATCH=600
+}
+
+function handle_error {
+
+ # This function deals with internal createpkg errors
+ # and also with non-zero exit codes from slackbuilds
+ # Input: $1 - error code
+ # Output: Error mensage
+ #
+ # check slackbuild exit status are:
+ #
+ # ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
+ # ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
+ # ERROR_TAR=37; ERROR_MKPKG=38 ERROR_GPG=39
+ # ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
+ #
+
+ # we don't want to process when exit status = 0
+ [ "$1" == "0" ] && return
+
+ # Exit codes
+ case $1 in
+ #
+ # Slackbuilds errors
+ $ERROR_WGET)
+ eecho $error "$BASENAME: error downloading source/package for $2" ;;
+ $ERROR_MAKE)
+ eecho $error "$BASENAME: error compiling $2 source code" ;;
+ $ERROR_INSTALL)
+ eecho $error "$BASENAME: error installing $2" ;;
+ $ERROR_MD5)
+ eecho $error "$BASENAME: error on source code integrity check for $2" ;;
+ $ERROR_CONF)
+ eecho $error "$BASENAME: error configuring the source code for $2" ;;
+ $ERROR_HELP)
+ exit 0 ;; # its supposed to never happen here :P
+ $ERROR_TAR)
+ eecho $error "$BASENAME: error decompressing source code for $2" ;;
+ $ERROR_MKPKG)
+ eecho $error "$BASENAME: error creating package $2" ;;
+ $ERROR_GPG)
+ eecho $error "$BASENAME: error verifying GPG signature the source code for $2" ;;
+ $ERROR_PATCH)
+ eecho $error "$BASENAME: error patching the source code for $2" ;;
+ $ERROR_VCS)
+ eecho $error "$BASENAME: error downloading $2 source from version control system" ;;
+ $ERROR_MKDIR)
+ eecho $error "$BASENAME: make directory $2 error, aborting" ;;
+ $ERROR_MANIFEST)
+ eecho $error "$BASENAME: problem with Manifest file, aborting" ;;
+
+ #
+ # General errors
+ $ERROR_FILE_NOTFOUND)
+ eecho $error "$BASENAME: file $2 not found!" ;;
+ $ERROR_NOT_NUMBER)
+ eecho $error "$BASENAME: $2 need a number argument" ;;
+ $ERROR_PAR_NUMBER)
+ eecho $error "$BASENAME: incorrect number of parameters" ;;
+ #$ERROR_COMMON_NOT_FOUND)
+ # eecho $error "$BASENAME: file $COMMON_SH not found. Check your $BASENAME installation" ;;
+
+ #
+ # Createpkg errors
+ $ERROR_CREATEPKG_INSTALLPKG)
+ eecho $error "$BASENAME: install package $2 error, aborting" ;;
+ $ERROR_CREATEPKG_DEPENDENCY)
+ eecho $error "$BASENAME: dependency solve error, aborting" ;;
+ $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND)
+ eecho $error "$BASENAME: SlackBuild or package not found" ;;
+
+ #
+ # Mkbuild errors
+ $ERROR_MKBUILD_CONSTRUCTION)
+ eecho $error "$BASENAME: Construction error in $2 variable." ;;
+ $ERROR_MKBUILD_PROGRAM)
+ eecho $error "$BASENAME: Program logical error." ;;
+ $ERROR_MKBUILD_INPUT_PAR)
+ eecho $error "$BASENAME: Input parameter $2 error. See \"mkbuild --help\"." ;;
+ $ERROR_MKPATCH)
+ eecho $error "$BASENAME: Mkpatch error. Check .mkbuild file." ;;
+ $ERROR_MKBUILD_VCS)
+ eecho $error "$BASENAME: VCS or empty URL. Disable this sections in .mkbuild file:\n - download_source;\n - md5sum_download_and_check_0;\n - md5sum_download_and_check_1;\n - gpg_signature_check\n - untar_source"
+ ;;
+ #
+ # Others errors
+ *)
+ eecho $error "$BASENAME: unknown error or user interrupt" ;;
+ esac
+
+ is_number $1 && exit $1 || exit 1
+
+}
+
+# -----------------------------------------------
+# misc functions
+# -----------------------------------------------
+
+function slash {
+
+ # remove additional slashes
+ echo $* | sed -e 's/\/\+/\//g'
+
+}
+
+function color_select {
+
+ # Select color mode: gray, color or none (*)
+ # commun - Communication
+ # messag - Commum messages
+ # error - Error messages
+ # normal - turn off color
+
+ case "$1" in
+ 'gray')
+ # colors
+ normal="\033[m"
+ dark_gray="\033[30;1m"
+ gray="\033[37m"
+ white="\033[37;1m"
+
+ red=$dark_gray
+ blue=$dark_gray
+ green=$gray
+ yellow=$gray
+
+ # Actions
+ commun=$white
+ messag=$white
+ error=$dark_gray
+ alert=$gray
+ ;;
+ 'color')
+ # colors
+ normal="\033[m"
+ dark_gray="\033[30;1m"
+ gray="\033[37m"
+ white="\033[37;1m"
+
+ red="\033[31;1m"
+ blue="\033[34;1m"
+ green="\033[32;1m"
+ yellow="\033[33;1m"
+
+ # Actions
+ commun=$green
+ messag=$blue
+ error=$red
+ alert=$yellow
+ ;;
+ *)
+ commun=""
+ messag=""
+ error=""
+ alert=""
+ ;;
+ esac
+
+}
+
+function eecho {
+
+ # echoes a message
+ # usage: eecho <message-type> <message>
+ # message-type can be: commun, messag, error, normal
+
+ echo -e "${1}${2}${normal}"
+
+}
+
+function is_number {
+
+ # Check if $1 is a number
+ local -i int
+ if [ $# -eq 0 ]; then
+ return 1
+ else
+ (let int=$1) 2>/dev/null
+ return $? # Exit status of the let thread
+ fi
+
+}
+
+function regexp_slash {
+
+ # escape slashes
+ echo $1 | sed -e 's/\//\\\//g'
+
+}
+
+function is_the_same {
+
+ # check if two files are in fact the same
+ # usage: is_the_same <path1> <path2>
+
+ if [ -e "$1" ] && [ -e "$2" ] && \
+ [ "`stat -c '%d' $1`" == "`stat -c '%d' $2`" ] && \
+ [ "`stat -c '%i' $1`" == "`stat -c '%i' $2`" ]; then
+ return 0
+ else
+ return 1
+ fi
+
+}
+
+function check_gnupg {
+
+ # setup gnupg keyring if needed
+ # usage: check_gnupg [username]
+
+ local user="$1" home
+
+ if [ ! -z "$user" ]; then
+ home="`grep "^$user:" /etc/passwd | cut -d : -f 6`"
+ if [ ! -d "$home/.gnupg" ]; then
+ echo "Setting up gnupg..."
+ su $user -c "gpg --list-keys"
+ fi
+ else
+ if [ ! -d "$HOME/.gnupg" ]; then
+ echo "Setting up gnupg..."
+ gpg --list-keys
+ fi
+ fi
+
+}
+
+function strip_gpg_signature {
+
+ # strip gpg signature from file
+ # usage: strip_gpg_signature <file>
+
+ local file="$1"
+
+ if [ -e "$file" ]; then
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $file; then
+ sed -e '1,3d' -e '/^$/d' -e '/-----BEGIN PGP SIGNATURE-----/,/-----END PGP SIGNATURE-----/d' $file
+ else
+ cat $file
+ fi
+ fi
+
+}
+
+function get_sign_user {
+
+ # get sign package user
+ # usage: get_sign_package_user
+
+ check_gnupg $SIGN_USER
+
+ if [ -z "$SIGN_KEYID" ]; then
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ SIGN_KEYID="`su $SIGN_USER -c \
+ "gpg --list-secret-keys --with-colons | grep ^sec | head -n 1 | cut -d : -f 5 | sed 's/^.*\(.\{8\}\)$/\1/'"`"
+ else
+ SIGN_KEYID="`gpg --list-secret-keys --with-colons | grep ^sec | head -n 1 | cut -d : -f 5 | sed 's/^.*\(.\{8\}\)$/\1/'`"
+ fi
+ fi
+
+}
+
+function update_keyring {
+
+ # update keyring using GPG-KEY from a repository
+ # usage: update_keyring <keyfile>
+
+ local keyring keys key
+
+ keyring="$1"
+
+ if [ ! -e "$keyring" ]; then
+ repo_gpg_key `dirname $keyring`
+ return
+ fi
+
+ keys="`gpg --with-colons $keyring | cut -d : -f 5 | sed -e '/^$/d'`"
+
+ for key in $keys; do
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ su $SIGN_USER -c "gpg --list-keys $key &> /dev/null"
+ if [ "$?" != "0" ]; then
+ echo "Updating keyring using $keyring..."
+ su $SIGN_USER -c "gpg --import $keyring"
+ break
+ fi
+ else
+ gpg --list-keys $key &> /dev/null
+ if [ "$?" != "0" ]; then
+ echo "Updating keyring using $keyring..."
+ gpg --import $keyring
+ break
+ fi
+ fi
+ done
+
+}
+
+function rmd160sum {
+
+ # computes RIPEMD-160 message digest
+ # usage: rmd160sum <file>
+
+ local sum file="$1"
+
+ if [ ! -e "$file" ]; then
+ return 1
+ fi
+
+ sum="`openssl rmd160 $file | awk '{ print $2 }'`"
+ echo "$sum $file"
+
+}
+
+function gethash {
+
+ # get a file's hash
+ # usage: gethash <algorithm> <file>
+
+ if [ ! -e "$2" ]; then
+ return 1
+ fi
+
+ $1sum $file | awk '{ print $1 }'
+
+}
+
+function file_size {
+
+ # get file size
+ # usage: filesize <file>
+
+ if [ ! -e "$1" ]; then
+ return 1
+ fi
+
+ wc -c $file | awk '{ print $1 }'
+
+}
+
+function file_extension {
+
+ # output file extension
+ # usage: filesize <filename>
+
+ echo `basename $1` | sed -e 's/.*\.\(.*\)$/\1/'
+
+}
+
+function absolute_folder {
+
+ # get the absolute folder from a file
+ # usage: absolute_folder <file>
+
+ local file="$1" cwd
+
+ if [ -e "$file" ]; then
+ cwd="`pwd`"
+ cd `dirname $file`
+ pwd
+ cd $cwd
+ fi
+
+}
+
+function list_builds {
+
+ # list all available builds
+ # usage: list_builds <folder> <file_type>
+
+ local folder="$1" file_type="$2"
+ local i j k
+
+ if [ ! -d "$folder" ] || [ -z "$file_type" ]; then
+ return
+ fi
+
+ cd $folder
+ echo "Sarava $file_type list"
+ # level 1
+ for i in *; do
+ if [ -d $i ]; then
+ echo -e " $i: "
+ (
+ cd $i
+ # level 2
+ for j in *; do
+ if [ -d $j ]; then
+ eecho $commun " $j"
+ (
+ cd $j
+ BUILD="`ls *.$file_type 2>/dev/null`"
+ if [ "$BUILD" != "" ]; then
+ # level 3
+ for k in $BUILD; do
+ eecho $messag " $k"
+ done
+ else
+ BUILD=""
+ fi
+ for k in *; do
+ if [ -d $k ]; then
+ eecho $messag " $k.$file_type"
+ fi
+ done
+ )
+ fi
+ done
+ )
+ fi
+ done
+
+}
+
+function check_installed {
+
+ # checks if a package is installed
+ # usage: check_installed <package_name> [root]
+
+ eval "ls /$2/var/log/packages/ | grep -E '^$1-[^-]+-[^-]+-[^-]+$'"
+
+}
diff --git a/tags/0.6rc1/mkbuild/generic.mkSlackBuild b/tags/0.6rc1/mkbuild/generic.mkSlackBuild
new file mode 100644
index 0000000..5b3b73c
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/generic.mkSlackBuild
@@ -0,0 +1,527 @@
+#################################################################
+## Generic template for SlackBuilds
+##
+## Version 0.9.9 - Luis ( luis at riseup d0t net)
+## Alves ( rudsonalves at yahoo d0t com d0t br )
+## Version $Rev$ - $Author$
+#################################################################
+#!/bin/bash
+<head> off
+#
+# [[PROGRAM NAME]].SlackBuild is free software; you can redistribute
+# it and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the License,
+# or any later version.
+#
+# [[PROGRAM NAME]].SlackBuild is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# slackbuild for [[PROGRAM NAME]], by [[SLACKBUILD AUTHOR]]
+# requires: [[REQUIRES]]
+# tested: [[PROGRAM NAME]]-[[VERSION]]
+# model: generic.mkSlackBuild $Rev$
+#
+</head>
+
+<slackbuildrc> off
+# Look for slackbuildrc
+if [ -f ~/.slackbuildrc ]; then
+ source ~/.slackbuildrc
+elif [ -f /etc/slackbuildrc ]; then
+ source /etc/slackbuildrc
+fi
+</slackbuildrc>
+
+<set_variables> off
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=[[BUILD NUMBER]][[SLACKBUILD AUTHOR INITIALS]]}
+SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
+TMP=${TMP:=/tmp}
+PKG=${PKG:=$TMP/package-$PKG_NAME}
+REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_WORK="$TMP/$SRC_NAME"
+CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
+NUMJOBS=${NUMJOBS:="[[NUMBER OF JOBS]]"}
+</set_variables>
+
+<slkflags> off
+# Set system libraries' path and optmization flags based on $ARCH
+LIBDIR="$PREFIX/lib"
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mtune=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIR="$PREFIX/lib64"
+ LDFLAGS="-L/lib64 -L/usr/lib64"
+fi
+</slkflags>
+
+<error_codes> off
+# Set error codes (used by createpkg)
+ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
+ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
+ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39
+ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
+ERROR_MANIFEST=43;
+</error_codes>
+
+<start_structure> off
+# Clean up any leftovers of previous builds
+rm -rf "$PKG_WORK" 2> /dev/null
+rm -rf "$PKG" 2> /dev/null
+
+# Create directories if necessary
+mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR
+mkdir -p "$PKG" || exit $ERROR_MKDIR
+mkdir -p "$REPOS" || exit $ERROR_MKDIR
+mkdir -p "$PKG_WORK" || exit $ERROR_MKDIR
+
+</start_structure>
+
+<create_build_user_and_group> off
+# Creating build user and group
+if ! grep -qe "^$PKG_NAME:" /etc/group; then
+ groupadd $PKG_NAME
+fi
+if ! grep -qe "^$PKG_NAME:" /etc/passwd; then
+ useradd $PKG_NAME -g $PKG_NAME
+fi
+</create_build_user_and_group>
+
+<download_source> off
+# Dowload source if necessary
+SRC="[[SOURCE NAME CONSTRUCTION STRING]]"
+URL="[[DOWNLOAD FOLDER URL]]/$SRC"
+
+if [ ! -s "$SRC_DIR/$SRC" ] || ! [[DECOMPRESSOR]] [[DECOMPRESSOR TEST FLAG]] "$SRC_DIR/$SRC" 2> /dev/null; then
+ wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
+fi
+</download_source>
+
+<svn_source> off
+# Get svn source code
+cd "$SRC_DIR"
+SND_DIR="`basename [[DOWNLOAD FOLDER URL]]`"
+
+if [ "`find "$SRC_DIR/" -name .svn`" != "" ] && [ -d "$SRC_DIR/$SND_DIR" ]; then
+ cd $SND_DIR
+ svn update || exit $ERROR_VCS
+else
+ svn checkout [[DOWNLOAD FOLDER URL]] $SND_DIR || exit $ERROR_VCS
+ cd $SND_DIR
+fi
+
+PKG_VERSION="`svn info | awk '/Last Changed Rev:/ { print $4 }'`_svn"
+
+# Copy svn source
+cd "$PKG_WORK"
+cp -a $SRC_DIR/* .
+PKG_SRC="$PWD/$SND_DIR"
+cd "$PKG_SRC"
+</svn_source>
+
+<git_source> off
+# Get git source code
+cd "$SRC_DIR"
+SND_DIR="`basename [[DOWNLOAD FOLDER URL]] .git`"
+
+if [ "`find "$SRC_DIR/" -name .git`" != "" ] && [ -d "$SRC_DIR/$SND_DIR" ]; then
+ cd $SND_DIR
+ git pull || exit $ERROR_VCS
+else
+ git clone [[DOWNLOAD FOLDER URL]] $SND_DIR || exit $ERROR_VCS
+ cd $SND_DIR
+fi
+
+PKG_VERSION="`git log | head -n 1 | awk '{ print $2 }'`_git"
+
+# Copy git source
+cd "$PKG_WORK"
+cp -a $SRC_DIR/* .
+PKG_SRC="$PWD/$SND_DIR"
+cd "$PKG_SRC"
+</git_source>
+
+<download_patches> off
+# Download patches
+if echo [[PATCH URLS]] | grep -q -v "PATCH URLS"; then
+ for patch_url in [[PATCH URLS]]; do
+ patch="`basename $patch_url`"
+ if [ ! -s "$SRC_DIR/$patch" ]; then
+ wget "$patch_url" -O "$SRC_DIR/$patch" || exit $ERROR_WGET
+ fi
+ done
+fi
+</download_patches>
+
+<md5sum_check> off
+# MD5 checksum
+MD5SUM_URL="[[MD5SUM CODE]]"
+
+if [ ${#MD5SUM_URL} -eq 32 ]; then
+ MD5SUM_SRC="$(md5sum "$SRC_DIR/$SRC" | cut -c-32 )"
+ [ "$MD5SUM_SRC" == "$MD5SUM_URL" ] || exit $ERROR_MD5
+
+# Download source's MD5 checksum if necessary and check it
+if [ ! -s "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" ]; then
+ wget "$URL.[[MD5SUM EXTENSION]]" -O "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_WGET
+fi
+
+md5sum -c "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_MD5
+</md5sum_check>
+
+<gpg_signature_check> off
+# Import minimized signing key from
+if echo [[SIGNING KEY URL]] | grep -q -v "SIGNING KEY URL"; then
+ lynx -dump [[SIGNING KEY URL]] | gpg --import || exit $ERROR_GPG
+elif echo [[SIGNING KEY ID]] | grep -q -v "SIGNING KEY ID"; then
+ gpg --recv-keys [[SIGNING KEY ID]] || exit $ERROR_GPG
+else
+ gpg --import << EOKEY || exit $ERROR_GPG
+[[SIGNING KEY]]
+EOKEY
+fi
+
+# Download source's signature if necessary and check it
+if echo [[SIGNING URL]] | grep -q -v "SIGNING URL"; then
+ SIGNATURE="`basename [[SIGNING URL]]`"
+ if [ ! -s "$SRC_DIR/$SIGNATURE" ]; then
+ wget "[[SIGNING URL]]" -O "$SRC_DIR/$SIGNATURE" || exit $ERROR_WGET
+ fi
+else
+ if [ -s "$SRC_DIR/$SRC.sig" ]; then
+ SIGNATURE="$SRC.sig"
+ elif [ -s "$SRC_DIR/$SRC.asc" ]; then
+ SIGNATURE="$SRC.asc"
+ else
+ echo Trying to get signature file from $URL.sig...
+ if wget "$URL.sig" -O "$SRC_DIR/$SRC.sig"; then
+ SIGNATURE="$SRC.sig"
+ else
+ rm $SRC_DIR/$SRC.sig
+ echo Trying to get signature file from $URL.asc...
+ if wget "$URL.asc" -O "$SRC_DIR/$SRC.asc"; then
+ SIGNATURE="$SRC.asc"
+ else
+ rm $SRC_DIR/$SRC.asc
+ echo "Error getting source's signature file"
+ exit $ERROR_GPG
+ fi
+ fi
+ fi
+fi
+
+echo Checking $SRC_DIR/$SRC with gpg using $SRC_DIR/$SIGNATURE...
+gpg --verify "$SRC_DIR/$SIGNATURE" "$SRC_DIR/$SRC" || exit $ERROR_GPG
+echo Success.
+</gpg_signature_check>
+
+<manifest_check> off
+# Check Manifest file
+if [ -e "$CWD/Manifest" ]; then
+
+ # Manifest signature checking
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $CWD/Manifest; then
+ echo "Checking Manifest signature..."
+ gpg --verify $CWD/Manifest
+ if [ "$?" != "0" ]; then
+ exit $ERROR_MANIFEST
+ fi
+ fi
+
+ MANIFEST_LINES="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | wc -l`"
+
+ for ((MANIFEST_COUNT=1; MANIFEST_COUNT <= $MANIFEST_LINES; MANIFEST_COUNT++)); do
+
+ MANIFEST_LINE="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | head -n $MANIFEST_COUNT | tail -n 1`"
+ MANIFEST_FILE="`echo $MANIFEST_LINE | awk '{ print $2 }'`"
+ MANIFEST_FILE_TYPE="`echo $MANIFEST_LINE | awk '{ print $1 }'`"
+
+ if [ -e "$SRC_DIR/$MANIFEST_FILE" ]; then
+ MANIFEST_FILE="$SRC_DIR/$MANIFEST_FILE"
+ else
+ MANIFEST_FILE="`find $CWD -name $MANIFEST_FILE`"
+ fi
+
+ if [ ! -e "$MANIFEST_FILE" ] || [ -d "$MANIFEST_FILE" ]; then
+ continue
+ fi
+
+ echo "Checking Manifest for $MANIFEST_FILE_TYPE $MANIFEST_FILE integrity..."
+
+ SIZE_SRC="`wc -c $MANIFEST_FILE | awk '{ print $1 }'`"
+ SIZE_MANIFEST="`echo $MANIFEST_LINE | awk '{ print $3 }'`"
+
+ # Check source code size
+ if [ "$SIZE_SRC" != "$SIZE_MANIFEST" ]; then
+ echo "SIZE Manifest: $SIZE_MANIFEST; SIZE $SRC: $SIZE_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "Size match."
+ fi
+
+ # Check source code integrity
+ for ALGO in md5 rmd160 sha1 sha256 sha512; do
+ if [ $ALGO = "rmd160" ]; then
+ ALGO_SRC="`openssl rmd160 $MANIFEST_FILE | awk '{ print $2 }'`"
+ else
+ ALGO_SRC="`"$ALGO"sum $MANIFEST_FILE | awk '{ print $1 }'`"
+ fi
+ ALGO="`echo $ALGO | tr '[:lower:]' '[:upper:]'`"
+ ALGO_MANIFEST=$(echo $MANIFEST_LINE | sed "s/.* $ALGO //" | awk '{ print $1 }')
+ if [ "$ALGO_SRC" != "$ALGO_MANIFEST" ]; then
+ echo "$ALGO Manifest: $ALGO_MANIFEST; $ALGO $SRC: $ALGO_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "$ALGO match."
+ fi
+ done
+
+ done
+
+else
+ exit $ERROR_MANIFEST
+fi
+</manifest_check>
+
+<untar_source> off
+# Untar
+cd "$PKG_WORK"
+[[UNPACKER]] [[UNPACKER FLAGS]] "$SRC_DIR/$SRC" || exit $ERROR_TAR
+PKG_SRC="$PWD/`ls -l | awk '/^d/ { print $NF }'`"
+cd "$PKG_SRC"
+</untar_source>
+
+<patch_source> off
+# Patch source
+patches="[[PATCH FILES]] [[PATCH URLS]]
+ $PKG_NAME.diff $PKG_NAME-$PKG_VERSION.diff
+ $PKG_NAME-$PKG_VERSION-$ARCH.diff $PKG_NAME-$ARCH.diff"
+for patch in $patches; do
+ patch="`basename $patch`"
+ if [ -f "$CWD/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/patches/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/$patch.gz" ]; then
+ gzip -dc "$CWD/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch.gz" ]; then
+ gzip -dc "$CWD/patches/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$SRC_DIR/$patch" ]; then
+ if [ "`basename $patch .gz`" != "$patch" ]; then
+ gzip -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ "`basename $patch .bz2`" != "$patch" ]; then
+ bzip2 -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ else
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$SRC_DIR/$patch" || exit $ERROR_PATCH
+ fi
+ fi
+done
+</patch_source>
+
+<files_permissions> off
+# Set permissions
+chown -R root:root .
+find . \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+</files_permissions>
+
+<configure> off
+# Configure
+CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ ./configure \
+ --prefix="$PREFIX" --libdir="$LIBDIR" $CONF_OPTIONS || exit $ERROR_CONF
+</configure>
+
+<make_package> off
+# Compile
+make $NUMJOBS || exit $ERROR_MAKE
+</make_package>
+
+<install_package> off
+# Install
+make install DESTDIR="$PKG" || exit $ERROR_INSTALL
+</install_package>
+
+<strip_binaries> off
+# Strip binaries
+( cd "$PKG"
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+</strip_binaries>
+
+<compress_manpages> off
+# Compress and link manpages
+if [ -d "$PKG/$PREFIX/man" ]; then
+ ( cd "$PKG/$PREFIX/man"
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+</compress_manpages>
+
+<compress_info_files> off
+# Compress info files
+if [ -d "$PKG/$PREFIX/info" ]; then
+ ( cd "$PKG/$PREFIX/info"
+ rm -f dir
+ gzip -9 *
+ )
+fi
+</compress_info_files>
+
+<copy_init_scripts> off
+# Copy init scripts
+mkdir -p $PKG/etc/rc.d
+cp $CWD/rc.* $PKG/etc/rc.d/
+</copy_init_scripts>
+
+<copy_config_files> off
+# Copy config files
+mkdir -p $PKG/etc
+for conf in [[CONFIG FILES]]; do
+ mkdir -p $PKG/etc/`dirname $conf`
+ if [ -e "$CWD/conf/$conf" ]; then
+ cp -a $CWD/conf/$conf $PKG/etc/$conf
+ elif [ -e "$CWD/$conf" ]; then
+ cp -a $CWD/$conf $PKG/etc/$conf
+ elif [ -e "$conf" ]; then
+ cp -a $conf $PKG/etc/$conf
+ fi
+done
+</copy_config_files>
+
+<install_documentation> off
+# Install documentation
+DOCS="[[DOCUMENTATION FILES]]"
+mkdir -p "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR
+for doc in $DOCS; do
+ if [ -f "$doc" ]; then
+ cp -a $doc "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION"
+ fi
+done
+</install_documentation>
+
+<slackdesc> off
+# Add package description (slack-desc)
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+cat << EODESC > "$PKG/install/slack-desc"
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler----------------------------------------------------|
+[[SLACK-DESC]]
+EODESC
+</slackdesc>
+
+<move_config_files> off
+# Move config files to .new to avoid overwriting any system config
+for config_file in [[CONFIG FILES]]; do
+ mv $PKG/$config_file $PKG/$config_file.new
+done
+</move_config_files>
+
+<postinstall_script> off
+# Add a post-installation script (doinst.sh)
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+cat << EOSCRIPT > "$PKG/install/doinst.sh"
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ OLD="\$(dirname \$NEW)/\$(basename \$OLD .sample)"
+ OLD="\$(dirname \$NEW)/\$(basename \$OLD .dist)"
+
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+mkgroup() {
+ GROUP="\$1"
+ if ! grep -qe "^\$GROUP:" etc/group; then
+ echo Creating group \$GROUP...
+ chroot . /usr/sbin/groupadd \$GROUP
+ fi
+}
+
+mkuser() {
+ USER="\$1"
+ if [ ! -z "\$2" ]; then
+ GROUP="\$2"
+ else
+ GROUP="\$USER"
+ fi
+ if ! grep -qe "^\$USER:" etc/passwd; then
+ echo Creating user \$USER...
+ chroot . /usr/sbin/useradd \$USER -g \$GROUP
+ fi
+}
+
+[[REST OF DOINST.SH]]
+EOSCRIPT
+</postinstall_script>
+
+<slack_required> off
+# Copy slack-required
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+if [ -f "$CWD/slack-required" ]; then
+ cp $CWD/slack-required $PKG/install
+fi
+</slack_required>
+
+<build_package> off
+# Build the package
+cd "$PKG"
+mkdir -p $REPOS/$SLACKBUILD_PATH
+makepkg -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+</build_package>
+
+<clean_builds> off
+# Delete source and build directories if requested
+if [ "$CLEANUP" == "yes" ] || [ "$1" = "--cleanup" ]; then
+ rm -rf "$PKG_WORK" "$PKG"
+fi
+</clean_builds>
diff --git a/tags/0.6rc1/mkbuild/kde4.mkSlackBuild b/tags/0.6rc1/mkbuild/kde4.mkSlackBuild
new file mode 100644
index 0000000..8253267
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/kde4.mkSlackBuild
@@ -0,0 +1,521 @@
+#################################################################
+## Generic template for SlackBuilds
+##
+## Version 1.0.0 - Luis ( luis at riseup d0t net)
+## Alves ( rudsonalves at yahoo d0t com d0t br )
+#################################################################
+#!/bin/bash
+<head> off
+#
+# [[PROGRAM NAME]].SlackBuild is free software; you can redistribute
+# it and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the License,
+# or any later version.
+#
+# [[PROGRAM NAME]].SlackBuild is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# slackbuild for [[PROGRAM NAME]], by [[SLACKBUILD AUTHOR]]
+# requires: [[REQUIRES]]
+# tested: [[PROGRAM NAME]]-[[VERSION]]
+# model: kde4.mkSlackBuild $Rev$
+#
+</head>
+
+<slackbuildrc> off
+# Look for slackbuildrc
+if [ -f ~/.slackbuildrc ]; then
+ source ~/.slackbuildrc
+elif [ -f /etc/slackbuildrc ]; then
+ source /etc/slackbuildrc
+fi
+</slackbuildrc>
+
+<set_variables> off
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=[[BUILD NUMBER]][[SLACKBUILD AUTHOR INITIALS]]}
+SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
+TMP=${TMP:=/tmp}
+PKG=${PKG:=$TMP/package-$PKG_NAME}
+REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_WORK="$TMP/$SRC_NAME"
+CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
+NUMJOBS=${NUMJOBS:="[[NUMBER OF JOBS]]"}
+</set_variables>
+
+<slkflags> off
+# Set system libraries' path and optmization flags based on $ARCH
+LIBDIR="$PREFIX/lib"
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIR="$PREFIX/lib64"
+ LDFLAGS="-L/lib64 -L/usr/lib64"
+fi
+
+QTDIR="$LIBDIR/qt"
+KDEDIRS="$PREFIX"
+PATH="$PATH:$LIBDIR/kde4/libexec"
+
+if [ ! "$XDG_CONFIG_DIRS" == "" ]; then
+ XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/etc/kde/xdg
+else
+ XDG_CONFIG_DIRS=/etc/xdg:/etc/kde/xdg
+fi
+
+</slkflags>
+
+<error_codes> off
+# Set error codes (used by createpkg)
+ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
+ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
+ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39
+ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
+ERROR_MANIFEST=43;
+</error_codes>
+
+<start_structure> off
+# Clean up any leftovers of previous builds
+rm -rf "$PKG_WORK" 2> /dev/null
+rm -rf "$PKG" 2> /dev/null
+
+# Create directories if necessary
+mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR
+mkdir -p "$PKG" || exit $ERROR_MKDIR
+mkdir -p "$REPOS" || exit $ERROR_MKDIR
+mkdir -p "$PKG_WORK" || exit $ERROR_MKDIR
+
+</start_structure>
+
+<create_build_user_and_group> off
+# Creating build user and group
+if ! grep -qe "^$PKG_NAME:" /etc/group; then
+ groupadd $PKG_NAME
+fi
+if ! grep -qe "^$PKG_NAME:" /etc/passwd; then
+ useradd $PKG_NAME -g $PKG_NAME
+fi
+</create_build_user_and_group>
+
+<download_source> off
+# Dowload source if necessary
+SRC="[[SOURCE NAME CONSTRUCTION STRING]]"
+URL="[[DOWNLOAD FOLDER URL]]/$SRC"
+
+if [ ! -s "$SRC_DIR/$SRC" ] || ! [[DECOMPRESSOR]] [[DECOMPRESSOR TEST FLAG]] "$SRC_DIR/$SRC" 2> /dev/null; then
+ wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
+fi
+</download_source>
+
+<svn_source> off
+# Get svn source code
+cd "$SRC_DIR"
+SND_DIR="`basename [[DOWNLOAD FOLDER URL]]`"
+
+if [ "`find "$SRC_DIR/" -name .svn`" != "" ] && [ -d "$SRC_DIR/$SND_DIR" ]; then
+ cd $SND_DIR
+ svn update || exit $ERROR_VCS
+else
+ svn checkout [[DOWNLOAD FOLDER URL]] $SND_DIR || exit $ERROR_VCS
+ cd $SND_DIR
+fi
+
+PKG_VERSION="`svn info | awk '/Last Changed Rev:/ { print $4 }'`_svn"
+
+# Copy svn source
+cd "$PKG_WORK"
+cp -a $SRC_DIR/* .
+PKG_SRC="$PWD/$SND_DIR"
+cd "$PKG_SRC"
+</svn_source>
+
+<download_patches> off
+# Download patches
+if echo [[PATCH URLS]] | grep -q -v "PATCH URLS"; then
+ for patch_url in [[PATCH URLS]]; do
+ patch="`basename $patch_url`"
+ if [ ! -s "$SRC_DIR/$patch" ]; then
+ wget "$patch_url" -O "$SRC_DIR/$patch" || exit $ERROR_WGET
+ fi
+ done
+fi
+</download_patches>
+
+<md5sum_check> off
+MD5SUM_URL="[[MD5SUM CODE]]"
+
+if [ ${#MD5SUM_URL} -eq 32 ]; then
+ MD5SUM_SRC="$(md5sum "$SRC_DIR/$SRC" | cut -c-32 )"
+ [ "$MD5SUM_SRC" == "$MD5SUM_URL" ] || exit $ERROR_MD5
+
+# Download source's MD5 checksum if necessary and check it
+if [ ! -s "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" ]; then
+ wget "$URL.[[MD5SUM EXTENSION]]" -O "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_WGET
+fi
+
+md5sum -c "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_MD5
+</md5sum_check>
+
+<gpg_signature_check> off
+# Import minimized signing key from
+if echo [[SIGNING KEY URL]] | grep -q -v "SIGNING KEY URL"; then
+ lynx -dump [[SIGNING KEY URL]] | gpg --import || exit $ERROR_GPG
+elif echo [[SIGNING KEY ID]] | grep -q -v "SIGNING KEY ID"; then
+ gpg --recv-keys [[SIGNING KEY ID]] || exit $ERROR_GPG
+else
+ gpg --import << EOKEY || exit $ERROR_GPG
+[[SIGNING KEY]]
+EOKEY
+fi
+
+# Download source's signature if necessary and check it
+if echo [[SIGNING URL]] | grep -q -v "SIGNING URL"; then
+ SIGNATURE="`basename [[SIGNING URL]]`"
+ if [ ! -s "$SRC_DIR/$SIGNATURE" ]; then
+ wget "[[SIGNING URL]]" -O "$SRC_DIR/$SIGNATURE" || exit $ERROR_WGET
+ fi
+else
+ if [ -s "$SRC_DIR/$SRC.sig" ]; then
+ SIGNATURE="$SRC.sig"
+ elif [ -s "$SRC_DIR/$SRC.asc" ]; then
+ SIGNATURE="$SRC.asc"
+ else
+ echo Trying to get signature file from $URL.sig...
+ if wget "$URL.sig" -O "$SRC_DIR/$SRC.sig"; then
+ SIGNATURE="$SRC.sig"
+ else
+ rm $SRC_DIR/$SRC.sig
+ echo Trying to get signature file from $URL.asc...
+ if wget "$URL.asc" -O "$SRC_DIR/$SRC.asc"; then
+ SIGNATURE="$SRC.asc"
+ else
+ rm $SRC_DIR/$SRC.asc
+ echo "Error getting source's signature file"
+ exit $ERROR_GPG
+ fi
+ fi
+ fi
+fi
+
+echo Checking $SRC_DIR/$SRC with gpg using $SRC_DIR/$SIGNATURE...
+gpg --verify "$SRC_DIR/$SIGNATURE" "$SRC_DIR/$SRC" || exit $ERROR_GPG
+echo Success.
+</gpg_signature_check>
+
+<manifest_check> off
+# Check Manifest file
+if [ -e "$CWD/Manifest" ]; then
+
+ # Manifest signature checking
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $CWD/Manifest; then
+ echo "Checking Manifest signature..."
+ gpg --verify $CWD/Manifest
+ if [ "$?" != "0" ]; then
+ exit $ERROR_MANIFEST
+ fi
+ fi
+
+ MANIFEST_LINES="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | wc -l`"
+
+ for ((MANIFEST_COUNT=1; MANIFEST_COUNT <= $MANIFEST_LINES; MANIFEST_COUNT++)); do
+
+ MANIFEST_LINE="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | head -n $MANIFEST_COUNT | tail -n 1`"
+ MANIFEST_FILE="`echo $MANIFEST_LINE | awk '{ print $2 }'`"
+ MANIFEST_FILE_TYPE="`echo $MANIFEST_LINE | awk '{ print $1 }'`"
+
+ if [ -e "$SRC_DIR/$MANIFEST_FILE" ]; then
+ MANIFEST_FILE="$SRC_DIR/$MANIFEST_FILE"
+ else
+ MANIFEST_FILE="`find $CWD -name $MANIFEST_FILE`"
+ fi
+
+ if [ ! -e "$MANIFEST_FILE" ] || [ -d "$MANIFEST_FILE" ]; then
+ continue
+ fi
+
+ echo "Checking Manifest for $MANIFEST_FILE_TYPE $MANIFEST_FILE integrity..."
+
+ SIZE_SRC="`wc -c $MANIFEST_FILE | awk '{ print $1 }'`"
+ SIZE_MANIFEST="`echo $MANIFEST_LINE | awk '{ print $3 }'`"
+
+ # Check source code size
+ if [ "$SIZE_SRC" != "$SIZE_MANIFEST" ]; then
+ echo "SIZE Manifest: $SIZE_MANIFEST; SIZE $SRC: $SIZE_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "Size match."
+ fi
+
+ # Check source code integrity
+ for ALGO in md5 sha1 sha256 sha512 rmd160; do
+ if [ $ALGO = "rmd160" ]; then
+ ALGO_SRC="`openssl rmd160 $MANIFEST_FILE | awk '{ print $2 }'`"
+ else
+ ALGO_SRC="`"$ALGO"sum $MANIFEST_FILE | awk '{ print $1 }'`"
+ fi
+ ALGO="`echo $ALGO | tr '[:lower:]' '[:upper:]'`"
+ ALGO_MANIFEST=$(echo $MANIFEST_LINE | sed "s/.* $ALGO //" | awk '{ print $1 }')
+ if [ "$ALGO_SRC" != "$ALGO_MANIFEST" ]; then
+ echo "$ALGO Manifest: $ALGO_MANIFEST; $ALGO $SRC: $ALGO_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "$ALGO match."
+ fi
+ done
+
+ done
+
+else
+ exit $ERROR_MANIFEST
+fi
+</manifest_check>
+
+<untar_source> off
+# Untar
+cd "$PKG_WORK"
+[[UNPACKER]] [[UNPACKER FLAGS]] "$SRC_DIR/$SRC" || exit $ERROR_TAR
+PKG_SRC="$PWD/`ls -l | awk '/^d/ { print $NF }'`"
+cd "$PKG_SRC"
+</untar_source>
+
+<patch_source> off
+# Patch source
+patches="[[PATCH FILES]] [[PATCH URLS]]
+ $PKG_NAME.diff $PKG_NAME-$PKG_VERSION.diff
+ $PKG_NAME-$PKG_VERSION-$ARCH.diff $PKG_NAME-$ARCH.diff"
+for patch in $patches; do
+ patch="`basename $patch`"
+ if [ -f "$CWD/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/patches/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/$patch.gz" ]; then
+ gzip -dc "$CWD/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch.gz" ]; then
+ gzip -dc "$CWD/patches/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$SRC_DIR/$patch" ]; then
+ if [ "`basename $patch .gz`" != "$patch" ]; then
+ gzip -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ "`basename $patch .bz2`" != "$patch" ]; then
+ bzip2 -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ else
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$SRC_DIR/$patch" || exit $ERROR_PATCH
+ fi
+ fi
+done
+</patch_source>
+
+<files_permissions> off
+# Set permissions
+chown -R root:root .
+find . \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+</files_permissions>
+
+<configure> off
+# Configure
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DMAN_INSTALL_DIR=%PREFIX/man \
+ -DLIB_INSTALL_DIR=$LIBDIR \
+ -DSYSCONF_INSTALL_DIR=/etc/kde \
+ -DKDE_DISTRIBUTION_TEXT="volkerdi@slackware.com" \
+ ..
+</configure>
+
+<make_package> off
+ # Compile
+ make $NUMJOBS || exit $ERROR_MAKE
+</make_package>
+
+<install_package> off
+ # Install
+ make install DESTDIR=$PKG || exit $ERROR_INSTALL
+cd -
+</install_package>
+
+<strip_binaries> off
+# Strip binaries
+( cd "$PKG"
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+</strip_binaries>
+
+<compress_manpages> off
+# Compress and link manpages
+if [ -d "$PKG/$PREFIX/man" ]; then
+ ( cd "$PKG/$PREFIX/man"
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+</compress_manpages>
+
+<compress_info_files> off
+# Compress info files
+if [ -d "$PKG/$PREFIX/info" ]; then
+ ( cd "$PKG/$PREFIX/info"
+ rm -f dir
+ gzip -9 *
+ )
+fi
+</compress_info_files>
+
+<copy_init_scripts> off
+# Copy init scripts
+mkdir -p $PKG/etc/rc.d
+cp $CWD/rc.* $PKG/etc/rc.d/
+</copy_init_scripts>
+
+<copy_config_files> off
+# Copy config files
+mkdir -p $PKG/etc
+for conf in [[CONFIG FILES]]; do
+ mkdir -p $PKG/etc/`dirname $conf`
+ if [ -e "$CWD/conf/$conf" ]; then
+ cp -a $CWD/conf/$conf $PKG/etc/$conf
+ elif [ -e "$CWD/$conf" ]; then
+ cp -a $CWD/$conf $PKG/etc/$conf
+ elif [ -e "$conf" ]; then
+ cp -a $conf $PKG/etc/$conf
+ fi
+done
+</copy_config_files>
+
+<install_documentation> off
+# Install documentation
+DOCS="[[DOCUMENTATION FILES]]"
+mkdir -p "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR
+for doc in $DOCS; do
+ if [ -f "$doc" ]; then
+ cp -a $doc "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION"
+ fi
+done
+</install_documentation>
+
+<slackdesc> off
+# Add package description (slack-desc)
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+cat << EODESC > "$PKG/install/slack-desc"
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler----------------------------------------------------|
+[[SLACK-DESC]]
+EODESC
+</slackdesc>
+
+<move_config_files> off
+# Move config files to .new to avoid overwriting any system config
+for config_file in [[CONFIG FILES]]; do
+ mv $PKG/$config_file $PKG/$config_file.new
+done
+</move_config_files>
+
+<postinstall_script> off
+# Add a post-installation script (doinst.sh)
+cat << EOSCRIPT > "$PKG/install/doinst.sh"
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ OLD="\$(dirname \$NEW)/\$(basename \$OLD .sample)"
+ OLD="\$(dirname \$NEW)/\$(basename \$OLD .dist)"
+
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+mkgroup() {
+ GROUP="\$1"
+ if ! grep -qe "^\$GROUP:" etc/group; then
+ echo Creating group \$GROUP...
+ chroot . /usr/sbin/groupadd \$GROUP
+ fi
+}
+
+mkuser() {
+ USER="\$1"
+ if [ ! -z "\$2" ]; then
+ GROUP="\$2"
+ else
+ GROUP="\$USER"
+ fi
+ if ! grep -qe "^\$USER:" etc/passwd; then
+ echo Creating user \$USER...
+ chroot . /usr/sbin/useradd \$USER -g \$GROUP
+ fi
+}
+
+[[REST OF DOINST.SH]]
+EOSCRIPT
+</postinstall_script>
+
+<slack_required> off
+# Copy slack-required
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+if [ -f "$CWD/slack-required" ]; then
+ cp $CWD/slack-required $PKG/install
+fi
+</slack_required>
+
+<build_package> off
+# Build the package
+cd "$PKG"
+mkdir -p $REPOS/$SLACKBUILD_PATH
+makepkg -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+</build_package>
+
+<clean_builds> off
+# Delete source and build directories if requested
+if [ "$CLEANUP" == "yes" ] || [ "$1" = "--cleanup" ]; then
+ rm -rf "$PKG_WORK" "$PKG"
+fi
+</clean_builds>
diff --git a/tags/0.6rc1/mkbuild/model.mkbuild b/tags/0.6rc1/mkbuild/model.mkbuild
new file mode 100644
index 0000000..bffee96
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/model.mkbuild
@@ -0,0 +1,185 @@
+#
+# This mkbuild is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# Version 0.9.0 - Alves ( rudsonalves at yahoo d0t com d0t br )
+# Version $Rev$ - $Author$
+
+#--------------------
+# Personal variables
+#--------------------
+# Author name
+[[SLACKBUILD AUTHOR]]="[[YOUR NAME]]"
+
+# Initials author name
+[[SLACKBUILD AUTHOR INITIALS]]="[[YOUR SIGNATURE]]"
+
+#------------------------
+# Construction Variables
+#------------------------
+#
+# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... )
+[[DOWNLOAD FOLDER URL]]="[[DEFAULT URL]]"
+
+# Source base name. if different from package name. Null ("") to default value.
+# Auto-set, get SRC_NAME from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[SOURCE NAME]]=""
+
+# Package name. Null ("") to auto-set
+# Auto-set, get PKG_NAME from URL downcase(SRC_NAME): http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[PACKAGE NAME]]=""
+
+#
+# Package default ARCH
+# Default set is i486
+[[ARCH]]=""
+
+#
+# Package version. Null ("") to auto-set.
+# Auto-set, get VERSION from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[VERSION]]=""
+
+#
+# Package extension. Null ("") to auto-set
+# Auto-set, get EXTENSION from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[EXTENSION]]=""
+
+#
+# Build number.
+# Auto-set to default 1
+[[BUILD NUMBER]]=""
+
+#
+# Source Name construction string
+# Default value is: $SRC_NAME-$VERSION.tar.$EXTENSION
+[[SOURCE NAME CONSTRUCTION STRING]]="$SRC_NAME-$VERSION.tar.$EXTENSION"
+
+#
+# Unpacker programa ("") to auto-set. Default "tar"
+# Unpacke Flags ("") to auto-set. Default flags to tar "--no-same-owner --no-same-permissions -xvf"
+[[UNPACKER]]=""
+[[UNPACKER FLAGS]]=""
+
+#
+# Dependency list input
+# Enter string: "dependency_1 [condiction_1] [versio_1]: dependency_2 [condiction_2] [versio_2]"
+# Example:
+[[SLACK REQUIRED]]=""
+
+#
+# Decompress program
+# gz, tgz, bz2, set null ("") to auto-set
+# Auto-set, get DECOMPRESSOR from URL EXTENSION: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[DECOMPRESSOR]]=""
+
+#
+# Decompress check flag
+# gz, tgz, bz2, set null ("") to auto-set
+[[DECOMPRESSOR TEST FLAG]]=""
+
+#
+# Documentation files. Null ("") to auto-set commom doc-files:
+# NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*
+[[DOCUMENTATION FILES]]=""
+
+#
+# ./configure options
+[[OTHER CONFIGURE ARGS]]=""
+
+#
+# PREFIX. Default /usr
+[[PREFIX]]="/usr"
+
+#
+# Number of jobs
+[[NUMBER OF JOBS]]="-j4"
+
+#---------------------
+# Others changes
+#---------------------
+#[[MD5SUM CODE]]=""
+#[[MD5SUM EXTENSION]]=""
+#[[SIGNING KEY]]=""
+#[[SIGNING KEY URL]]=""
+#[[SIGNING KEY ID]]=""
+#[[SIGNING URL]]=""
+#[[CONFIG FILES]]=""
+#[[PATCH URLS]]=""
+#[[REST OF DOINST.SH]]=""
+[[PATCH FILES]]=""
+[[NUMBER OF PREFIX SLASHES TO STRIP]]="1"
+
+# SlackBuild model
+[[SLACKBUILD MODEL]]="generic.mkSlackBuild"
+
+# SlackBuild PATH in Slack.Sarava tree
+#[[SLACKBUILD PATH]]="others/unclassified/$PKG_NAME"
+[[SLACKBUILD PATH]]=""
+
+#---------------------
+# SlackBuild Sections
+#---------------------
+# Default sections:
+# head, set_variables, slkflags, start_structure, untar_source,
+# make_package, install_package, build_package
+# Warning: don't remove '#>>' and "#<<" tags.
+#>> Start SlackBuild Sections:
+ on: head
+ on: slackbuildrc
+ on: set_variables
+ on: slkflags
+ on: error_codes
+ on: start_structure
+off: create_build_user_and_group
+ on: download_source
+off: download_patches
+off: svn_source
+off: git_source
+off: md5sum_download_and_check_0
+off: md5sum_download_and_check_1
+off: gpg_signature_check
+ on: manifest_check
+ on: untar_source
+off: patch_source
+ on: configure
+ on: make_package
+ on: install_package
+ on: strip_binaries
+off: compress_manpages
+off: compress_info_files
+off: copy_init_scripts
+off: copy_config_files
+ on: install_documentation
+ on: slackdesc
+off: move_config_files
+off: postinstall_script
+off: slack_required
+ on: build_package
+ on: clean_builds
+#<< End SlackBuild Sections
+
+#------------------
+# Sections changes
+#------------------
+#>slackdesc
+[[PKG NAME]]: [[PKG NAME]] by Slack.Sarava
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+[[PKG NAME]]:
+#<slackdesc
diff --git a/tags/0.6rc1/mkbuild/perl.mkSlackBuild b/tags/0.6rc1/mkbuild/perl.mkSlackBuild
new file mode 100644
index 0000000..92add00
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/perl.mkSlackBuild
@@ -0,0 +1,444 @@
+###################################################
+## Perl template for SlackBuilds
+##
+## Based on generic.mkSlackBuild version 0.9.3 by
+## Luis (luis at riseup d0t net) and changed by
+## Rhatto (rhatto at riseup d0t net)
+##
+###################################################
+#!/bin/bash
+<head> off
+#
+# [[PROGRAM NAME]].SlackBuild is free software; you can redistribute
+# it and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the License,
+# or any later version.
+#
+# [[PROGRAM NAME]].SlackBuild is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# slackbuild for [[PROGRAM NAME]], by [[SLACKBUILD AUTHOR]]
+# requires: [[REQUIRES]]
+# tested: [[PROGRAM NAME]]-[[VERSION]]
+# model: perl.mkSlackBuild $Rev$
+#
+</head>
+
+<slackbuildrc> off
+# Look for slackbuildrc
+if [ -f ~/.slackbuildrc ]; then
+ source ~/.slackbuildrc
+elif [ -f /etc/slackbuildrc ]; then
+ source /etc/slackbuildrc
+fi
+</slackbuildrc>
+
+<set_variables> off
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]}
+SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
+TMP=${TMP:=/tmp}
+PKG=${PKG:=$TMP/package-$PKG_NAME}
+REPOS=${REPOS:=$TMP}
+SLACKBUILD_PATH=${SLACKBUILD_PATH:="[[SLACKBUILD PATH]]"}
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_WORK="$TMP/$SRC_NAME"
+CONF_OPTIONS=${CONF_OPTIONS:="[[OTHER CONFIGURE ARGS]]"}
+NUMJOBS=${NUMJOBS:="[[NUMBER OF JOBS]]"}
+</set_variables>
+
+<slkflags> off
+# Set system libraries' path and optmization flags based on $ARCH
+LIBDIR="$PREFIX/lib"
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIR="$PREFIX/lib64"
+fi
+</slkflags>
+
+<error_codes> off
+# Set error codes (used by createpkg)
+ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
+ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
+ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39
+ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
+ERROR_MANIFEST=43;
+</error_codes>
+
+<start_structure> off
+# Clean up any leftovers of previous builds
+rm -rf "$PKG_SRC" 2> /dev/null
+rm -rf "$PKG" 2> /dev/null
+
+# Create directories if necessary
+mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR
+mkdir -p "$PKG" || exit $ERROR_MKDIR
+mkdir -p "$REPOS" || exit $ERROR_MKDIR
+mkdir -p "$PKG_WORK" || exit $ERROR_MKDIR
+</start_structure>
+
+<download_source> off
+# Dowload source if necessary
+SRC="[[SOURCE NAME CONSTRUCTION STRING]]"
+URL="[[DOWNLOAD FOLDER URL]]/$SRC"
+
+if [ ! -s "$SRC_DIR/$SRC" ] || ! [[DECOMPRESSOR]] [[DECOMPRESSOR TEST FLAG]] "$SRC_DIR/$SRC" 2> /dev/null; then
+ wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
+fi
+</download_source>
+
+<download_patches> off
+# Download patches
+if echo [[PATCH URLS]] | grep -q -v "PATCH URLS"; then
+ for patch_url in [[PATCH URLS]]; do
+ patch="`basename $patch_url`"
+ if [ ! -s "$SRC_DIR/$patch" ]; then
+ wget "$patch_url" -O "$SRC_DIR/$patch" || exit $ERROR_WGET
+ fi
+ done
+fi
+</download_patches>
+
+<md5sum_download_and_check_0> off
+MD5SUM_SRC="$(md5sum "$SRC_DIR/$SRC" | cut -d " " -f 1)"
+MD5SUM_URL="[[MD5SUM CODE]]"
+
+[ "$MD5SUM_SRC" == "$MD5SUM_URL" ] || exit $ERROR_MD5
+</md5sum_download_and_check_0>
+
+<md5sum_download_and_check_1> off
+# Download source's MD5 checksum if necessary and check it
+if [ ! -s "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" ]; then
+ wget "$URL.[[MD5SUM EXTENSION]]" -O "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_WGET
+fi
+
+MD5SUM_SRC="$(md5sum "$SRC_DIR/$SRC" | cut -d " " -f 1)"
+MD5SUM_URL="$(grep "$SRC[ \t]*$" "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" | cut -d " " -f 1)"
+
+[ "$MD5SUM_SRC" == "$MD5SUM_URL" ] || exit $ERROR_MD5
+</md5sum_download_and_check_1>
+
+<gpg_signature_check> off
+# Import minimized signing key from
+if echo [[SIGNING KEY URL]] | grep -q -v "SIGNING KEY URL"; then
+ lynx -dump [[SIGNING KEY URL]] | gpg --import || exit $ERROR_GPG
+elif echo [[SIGNING KEY ID]] | grep -q -v "SIGNING KEY ID"; then
+ gpg --recv-keys [[SIGNING KEY ID]] || exit $ERROR_GPG
+else
+ gpg --import << EOKEY || exit $ERROR_GPG
+[[SIGNING KEY]]
+EOKEY
+fi
+
+# Download source's signature if necessary and check it
+if echo [[SIGNING URL]] | grep -q -v "SIGNING URL"; then
+ SIGNATURE="`basename [[SIGNING URL]]`"
+ if [ ! -s "$SRC_DIR/$SIGNATURE" ]; then
+ wget "[[SIGNING URL]]" -O "$SRC_DIR/$SIGNATURE" || exit $ERROR_WGET
+ fi
+else
+ if [ -f "$SRC_DIR/$SRC.sig" ]; then
+ SIGNATURE="$SRC.sig"
+ elif [ -f "$SRC_DIR/$SRC.asc" ]; then
+ SIGNATURE="$SRC.asc"
+ else
+ echo Trying to get signature file from $URL.sig...
+ if wget "$URL.sig" -O "$SRC_DIR/$SRC.sig"; then
+ SIGNATURE="$SRC.sig"
+ else
+ rm $SRC_DIR/$SRC.sig
+ echo Trying to get signature file from $URL.asc...
+ if wget "$URL.asc" -O "$SRC_DIR/$SRC.asc"; then
+ SIGNATURE="$SRC.asc"
+ else
+ rm $SRC_DIR/$SRC.asc
+ echo "Error getting source's signature file"
+ exit $ERROR_GPG
+ fi
+ fi
+ fi
+fi
+
+echo Checking $SRC_DIR/$SRC with gpg using $SRC_DIR/$SIGNATURE...
+gpg --verify "$SRC_DIR/$SIGNATURE" "$SRC_DIR/$SRC" || exit $ERROR_GPG
+echo Success.
+</gpg_signature_check>
+
+<manifest_check> off
+# Check Manifest file
+if [ -e "$CWD/Manifest" ]; then
+
+ # Manifest signature checking
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $CWD/Manifest; then
+ echo "Checking Manifest signature..."
+ gpg --verify $CWD/Manifest
+ if [ "$?" != "0" ]; then
+ exit $ERROR_MANIFEST
+ fi
+ fi
+
+ MANIFEST_LINES="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | wc -l`"
+
+ for ((MANIFEST_COUNT=1; MANIFEST_COUNT <= $MANIFEST_LINES; MANIFEST_COUNT++)); do
+
+ MANIFEST_LINE="`grep -E -v "^(MKBUILD|SLACKBUILD)" $CWD/Manifest | head -n $MANIFEST_COUNT | tail -n 1`"
+ MANIFEST_FILE="`echo $MANIFEST_LINE | awk '{ print $2 }'`"
+ MANIFEST_FILE_TYPE="`echo $MANIFEST_LINE | awk '{ print $1 }'`"
+
+ if [ -e "$SRC_DIR/$MANIFEST_FILE" ]; then
+ MANIFEST_FILE="$SRC_DIR/$MANIFEST_FILE"
+ else
+ MANIFEST_FILE="`find $CWD -name $MANIFEST_FILE`"
+ fi
+
+ if [ ! -e "$MANIFEST_FILE" ] || [ -d "$MANIFEST_FILE" ]; then
+ continue
+ fi
+
+ echo "Checking Manifest for $MANIFEST_FILE_TYPE $MANIFEST_FILE integrity..."
+
+ SIZE_SRC="`wc -c $MANIFEST_FILE | awk '{ print $1 }'`"
+ SIZE_MANIFEST="`echo $MANIFEST_LINE | awk '{ print $3 }'`"
+
+ # Check source code size
+ if [ "$SIZE_SRC" != "$SIZE_MANIFEST" ]; then
+ echo "SIZE Manifest: $SIZE_MANIFEST; SIZE $SRC: $SIZE_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "Size match."
+ fi
+
+ # Check source code integrity
+ for ALGO in md5 sha1 sha256 sha512 rmd160; do
+ if [ $ALGO = "rmd160" ]; then
+ ALGO_SRC="`openssl rmd160 $MANIFEST_FILE | awk '{ print $2 }'`"
+ else
+ ALGO_SRC="`"$ALGO"sum $MANIFEST_FILE | awk '{ print $1 }'`"
+ fi
+ ALGO="`echo $ALGO | tr '[:lower:]' '[:upper:]'`"
+ ALGO_MANIFEST=$(echo $MANIFEST_LINE | sed "s/.* $ALGO //" | awk '{ print $1 }')
+ if [ "$ALGO_SRC" != "$ALGO_MANIFEST" ]; then
+ echo "$ALGO Manifest: $ALGO_MANIFEST; $ALGO $SRC: $ALGO_SRC"
+ exit $ERROR_MANIFEST
+ else
+ echo "$ALGO match."
+ fi
+ done
+
+ done
+
+else
+ exit $ERROR_MANIFEST
+fi
+</manifest_check>
+
+<untar_source> off
+# Untar
+cd "$PKG_WORK"
+[[UNPACKER]] [[UNPACKER FLAGS]] "$SRC_DIR/$SRC" || exit $ERROR_TAR
+PKG_SRC=`ls -l | awk '/^d/ { print $8 }'`
+cd "$PKG_SRC"
+</untar_source>
+
+<patch_source> off
+# Patch source
+patches="[[PATCH FILES]] [[PATCH URLS]]
+ $PKG_NAME.diff $PKG_NAME-$PKG_VERSION.diff
+ $PKG_NAME-$PKG_VERSION-$ARCH.diff $PKG_NAME-$ARCH.diff"
+for patch in $patches; do
+ patch="`basename $patch`"
+ if [ -f "$CWD/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch" ]; then
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/patches/$patch" || exit $ERROR_PATCH
+ elif [ -f "$CWD/$patch.gz" ]; then
+ gzip -dc "$CWD/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$CWD/patches/$patch.gz" ]; then
+ gzip -dc "$CWD/patches/$patch.gz" | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ -f "$SRC_DIR/$patch" ]; then
+ if [ "`basename $patch .gz`" != "$patch" ]; then
+ gzip -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ elif [ "`basename $patch .bz2`" != "$patch" ]; then
+ bzip2 -dc $SRC_DIR/$patch | patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] || exit $ERROR_PATCH
+ else
+ patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$SRC_DIR/$patch" || exit $ERROR_PATCH
+ fi
+ fi
+done
+</patch_source>
+
+<configure> off
+# Configure
+perl Makefile.PL || exit $ERROR_CONF
+</configure>
+
+<make_package> off
+# Compile
+make $NUMJOBS || exit $ERROR_MAKE
+</make_package>
+
+<test_package> off
+# Test package
+make test
+</test_package>
+
+<install_package> off
+# Install
+make install DESTDIR="$PKG" || exit $ERROR_INSTALL
+
+# Fix .packlist
+string="`echo $PKG | sed -e 's/\//\\\\\//g'`"
+for file in `find $PKG -name .packlist`; do
+ sed -e "s/^$string//g" $file > $file.tmp
+ mv $file.tmp $file
+done
+</install_package>
+
+<strip_binaries> off
+# Strip binaries
+( cd "$PKG"
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+</strip_binaries>
+
+<compress_manpages> off
+# Compress and link manpages
+if [ -d "$PKG/$PREFIX/man" ]; then
+ ( cd "$PKG/$PREFIX/man"
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+</compress_manpages>
+
+<compress_info_files> off
+# Compress info files
+if [ -d "$PKG/$PREFIX/info" ]; then
+ ( cd "$PKG/$PREFIX/info"
+ rm -f dir
+ gzip -9 *
+ )
+fi
+</compress_info_files>
+
+<copy_init_scripts> off
+# Copy init scripts
+mkdir -p $PKG/etc/rc.d
+cp $CWD/rc.* $PKG/etc/rc.d/
+</copy_init_scripts>
+
+<copy_config_files> off
+# Copy config files
+mkdir -p $PKG/etc
+for conf in [[CONFIG FILES]]; do
+ mkdir -p $PKG/etc/`dirname $conf`
+ if [ -e "$CWD/conf/$conf" ]; then
+ cp -a $CWD/conf/$conf $PKG/etc/$conf
+ elif [ -e "$CWD/$conf" ]; then
+ cp -a $CWD/$conf $PKG/etc/$conf
+ elif [ -e "$conf" ]; then
+ cp -a $conf $PKG/etc/$conf
+ fi
+done
+</copy_config_files>
+
+<install_documentation> off
+# Install documentation
+DOCS="[[DOCUMENTATION FILES]]"
+mkdir -p "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR
+for doc in $DOCS; do
+ if [ -f "$doc" ]; then
+ cp -a $doc "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION"
+ fi
+done
+</install_documentation>
+
+<slackdesc> off
+# Add package description (slack-desc)
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+cat << EODESC > "$PKG/install/slack-desc"
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+[[SLACK-DESC]]
+EODESC
+</slackdesc>
+
+<postinstall_script> off
+# Add a post-installation script (doinst.sh)
+cat << EOSCRIPT > "$PKG/install/doinst.sh"
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config path/to/config_file.new
+[[REST OF DOINST.SH]]
+EOSCRIPT
+</postinstall_script>
+
+<slack_required> off
+# Copy slack-required
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+if [ -f "$CWD/slack-required" ]; then
+ cp $CWD/slack-required $PKG/install
+fi
+</slack_required>
+
+<build_package> off
+# Build the package
+cd "$PKG"
+mkdir -p $REPOS/$SLACKBUILD_PATH
+makepkg -l y -c n "$REPOS/$SLACKBUILD_PATH/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+</build_package>
+
+<clean_builds> off
+# Delete source and build directories if requested
+if [ "$CLEANUP" == "yes" ] || [ "$1" = "--cleanup" ]; then
+ rm -rf "$PKG_WORK" "$PKG"
+fi
+</clean_builds>
diff --git a/tags/0.6rc1/mkbuild/sample-Pyrex-large.mkbuild b/tags/0.6rc1/mkbuild/sample-Pyrex-large.mkbuild
new file mode 100644
index 0000000..047814a
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/sample-Pyrex-large.mkbuild
@@ -0,0 +1,176 @@
+#
+# This mkbuild is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+#--------------------
+# Personal variables
+#--------------------
+# Author name
+[[SLACKBUILD AUTHOR]]="Rudson R. Alves"
+
+# Initials author name
+[[SLACKBUILD AUTHOR INITIALS]]="rra"
+
+#------------------------
+# Construction Variables
+#------------------------
+#
+# Source base name. if different from package name. Null ("") to default value.
+# Auto-set, get SRC_NAME from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[SOURCE NAME]]="Pyrex"
+
+# Package name. Null ("") to auto-set
+# Auto-set, get PKG_NAME from URL downcase(SRC_NAME): http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[PACKAGE NAME]]=""
+
+#
+# Source Name construction string
+# Default value is: $SRC_NAME-$VERSION.tar.$EXTENSION
+#[[SOURCE NAME CONSTRUCTION STRING]]="SOURCE NAME CONSTRUCTION STRING"
+[[SOURCE NAME CONSTRUCTION STRING]]="$SRC_NAME-$VERSION.tar.$EXTENSION"
+
+#
+# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... )
+#[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/"
+
+#
+# Package version. Null ("") to auto-set.
+# Auto-set, get VERSION from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[VERSION]]="0.9.5.1a"
+
+#
+# Package extension. Null ("") to auto-set
+# Auto-set, get EXTENSION from URL: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[EXTENSION]]="gz"
+
+#
+# Unpacker programa ("") to auto-set. Default "tar"
+# Unpacke Flags ("") to auto-set. Default flags to tar "--no-same-owner --no-same-permissions -xvf"
+[[UNPACKER]]=""
+[[UNPACKER FLAGS]]=""
+
+#
+# Dependency list input
+# Enter string: "dependency_1 [condiction_1] [versio_1]: dependency_2 [condiction_2] [versio_2]"
+# Example:
+#[[SLACK REQUIRED]]="dep1 >= 1.1.1: dep2 >= 2.2.2:dep3:dep4:dep5 = 1.0"
+[[SLACK REQUIRED]]=""
+
+#
+# Decompress program
+# gz, tgz, bz2, set null ("") to auto-set
+# Auto-set, get DECOMPRESSOR from URL EXTENSION: http://.../$SRC_NAME-$VERSION.tar.$EXTENSION'
+[[DECOMPRESSOR]]=""
+
+#
+# Decompress check flag
+# gz, tgz, bz2, set null ("") to auto-set
+[[DECOMPRESSOR TEST FLAG]]=""
+
+#
+# Documentation files. Null ("") to auto-set commom doc-files:
+# NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*
+[[DOCUMENTATION FILES]]=""
+
+#
+# ./configure options
+[[OTHER CONFIGURE ARGS]]=""
+
+#
+# PREFIX. Default /usr
+[[PREFIX]]="/usr"
+
+#
+# Number of jobs
+[[NUMBER OF JOBS]]="-j7"
+
+#---------------------
+# Others changes
+#---------------------
+#[[PATCH FILES]]=""
+[[MD5SUM CODE]]="5a1bb7c76162a987a1d5040ea2d1f670"
+#[[MD5SUM EXTENSION]]=""
+#[[SIGNING KEY]]=""
+#[[SIGNING KEY URL]]=""
+#[[PATCH FILES]]=""
+
+# SlackBuild model
+[[SLACKBUILD MODEL]]="generic.mkSlackBuild"
+
+# SlackBuild PATH in Slack.Sarava tree
+[[SLACKBUILD PATH]]="dev/python/pyrex"
+
+#---------------------
+# SlackBuild Sections
+#---------------------
+# Default sections:
+# head, set_variables, slkflags, start_structure, untar_source,
+# make_package, install_package, build_package
+# Warning: don't remove '#>>' and "#<<" tags.
+#>> Start SlackBuild Sections:
+ on: head
+ on: slackbuildrc
+ on: set_variables
+ on: slkflags
+ on: error_codes
+ on: start_structure
+ on: download_source
+ on: md5sum_download_and_check_0
+off: md5sum_download_and_check_1
+off: gpg_signature_check
+ on: untar_source
+off: patch_source
+ on: configure
+ on: make_package
+ on: install_package
+ on: strip_binaries
+off: compress_manpages
+off: compress_info_files
+ on: install_documentation
+ on: slackdesc
+off: postinstall_script
+ on: build_package
+ on: clean_builds
+#<< End SlackBuild Sections
+
+#------------------
+# Sections changes
+#------------------
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
+
+#------------ test section: untar_source -----------------
+#>untar_source
+# Untar program
+
+# Change to temp dir
+cd "$TMP"
+
+# Uncompress e untar source
+gunzip "$SRC_DIR/$SRC" | tar --no-same-owner --no-same-permissions -xvf || exit $ERROR_TAR
+
+# Change to source dir
+cd "$PKG_SRC"
+#<untar_source
diff --git a/tags/0.6rc1/mkbuild/sample-Pyrex-small.mkbuild b/tags/0.6rc1/mkbuild/sample-Pyrex-small.mkbuild
new file mode 100644
index 0000000..5dcd4b4
--- /dev/null
+++ b/tags/0.6rc1/mkbuild/sample-Pyrex-small.mkbuild
@@ -0,0 +1,65 @@
+#
+# This mkbuild is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+#--------------------
+# Personal variables
+#--------------------
+# Author name
+[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader"
+
+#
+# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... )
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+
+#
+# Default sections:
+# head, set_variables, slkflags, start_structure, untar_source,
+# make_package, install_package, build_package
+# Warning: don't remove '#>>' and "#<<" tags.
+#>> Start SlackBuild Sections:
+ on: head
+ on: slackbuildrc
+ on: set_variables
+ on: slkflags
+ on: error_codes
+ on: start_structure
+ on: download_source
+ on: md5sum_download_and_check_0
+ on: untar_source
+ on: configure
+ on: make_package
+ on: install_package
+ on: strip_binaries
+ on: install_documentation
+ on: slackdesc
+ on: build_package
+ on: clean_builds
+#<< End SlackBuild Sections
+
+#------------------
+# Sections changes
+#------------------
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
diff --git a/tags/0.6rc1/src/createpkg b/tags/0.6rc1/src/createpkg
new file mode 100644
index 0000000..18e5aaf
--- /dev/null
+++ b/tags/0.6rc1/src/createpkg
@@ -0,0 +1,1070 @@
+#!/bin/bash
+#
+# createpkg: package builder using http://slack.sarava.org/slackbuilds scripts
+# feedback: rhatto at riseup.net / rudsonalves at yahoo.com.br
+#
+# createpkg is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# createpkg is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# Version $Rev$ - $Author$
+#
+
+#---------------------------------------------------
+# Createpkg functions
+#---------------------------------------------------
+
+function usage {
+
+ # Help message
+ echo -e "${red}NAME${normal}
+ createpkg - create Slackware packages from SlackBuilds in Sarava repository
+
+${red}SYNOPSIS
+ createpkg${normal} [${green}OPTIONS${normal}] [${green}program1${normal} ... ${green}programN${normal}]
+
+${red}DESCRIPTION${normal}
+ [${green}program${normal}] name to build/search (some options support more than one program)
+
+ Input ${green}OPTIONS${normal}:
+ ${red}-i${normal}, ${red}--install${normal} ${green}<program1>${normal}
+ create the package ${green}<program>${normal} and install
+ ${red}-a${normal}, ${red}--all${normal}
+ create all packages and install
+ ${red}-np${normal}, ${red}--no-deps${normal}
+ does not solve dependences
+ ${red}-d${normal}, ${red}--debug${normal} ${green}<program>${normal}
+ enable SlackBuild debug (sh -x ...)
+ ${red}-s${normal}, ${red}--search${normal} ${green}<program${normal}>
+ search for a ${green}<program>${normal}
+ ${red}-f${normal}, ${red}--info${normal} ${green}<program>${normal}
+ show description and dependences of the program
+ ${red}-l${normal}, ${red}--list${normal}
+ list all the SlackBuilds
+ ${red}--list-packages ${green}[repository]${normal}
+ list all packages in binary repositories
+ ${red}--sign${green}<package_name>${normal}
+ sign a binary package
+ ${red}--remove${green}<package_name>${normal}
+ remove a binary package
+ ${red}--sync${normal}
+ synchronize SlackBuilds repository
+ ${red}--update${normal}
+ synchronize packages repository
+ ${red}--commit${normal} ${green}["message"]${normal}
+ commit changes to binary packages' repository
+ ${red}--status${normal}
+ check binary packages' svn repository status
+ ${red}--import${normal}
+ import packages into a svn repository
+ ${red}--checkout${normal}
+ checkout binary packages from a svn repository
+ ${red}--update-keyring${normal}
+ update GPG-KEY from binary repositories
+ ${red}-h${normal}, ${red}--help${normal}
+ show this help
+
+${red}EXAMPLES${normal}
+ ${red}createpkg -i scilab${normal}
+ build and install scilab package
+ ${red}createpkg -s at*${normal}
+ search for all at* SlackBuilds scripts (at-spi, atk, ...)
+ ${red}createpkg --info pyrex${normal}
+ show pyrex description and dependences
+ $SYNC=yes {red}createpkg -i scilab${normal}
+ sync repository first, then build and install scilab package
+
+${red}AUTHOR${normal}
+ Written by ${blue}Rudson R. Alves${normal}
+
+${red}AVAILABILITY${normal}
+ by svn: ${yellow}svn checkout svn://slack.sarava.org/simplepkg${normal}
+ this mkbuild is found in branches/0.6/
+
+${red}REPORTING BUGS${normal}
+ Report bugs to <${blue}rudsonalves[at]rra.etc.br${normal}>
+
+${red}COPYRIGHT${normal}
+ Copyright © 2006 Free Software Foundation, Inc.
+ This is free software. You may redistribute copies of it under the
+ terms of the GNU General Public License
+ <${yellow}http://www.gnu.org/licenses/gpl.html${normal}>. There is NO WARRANTY,
+ to the extent permitted by law."
+}
+
+function build_all_slackbuilds {
+
+ # Build all SlackBuilds in repository
+ createpkg --sync
+
+ cd $SLACKBUILDS_DIR
+ LIST=`find . -name *.SlackBuild | sed 's/.*\/\(.*\)\.SlackBuild$/\1/' | sort | uniq`
+ for i in $LIST; do
+ [ ! lspkg $i >/dev/null ] && createpkg -i $i
+ done
+
+}
+
+function check_config {
+
+ # Check the configuration
+ TMP=${TMP:=/tmp}
+
+ if [ ! -z "$REPOS" ]; then
+ PACKAGES_DIR="$REPOS"
+ else
+ REPOS=$PACKAGES_DIR
+ fi
+
+ # Nested folders, if configured
+ if [ ! -z "$PACKAGES_REPOS_STYLE" ]; then
+ PACKAGES_REPOS_STYLE=$(echo $PACKAGES_REPOS_STYLE | sed -e "s/none//g" -e "s/distro/`default_distro`/g" \
+ -e "s/arch/`default_arch`/g" -e "s/version/`default_version`/g")
+ PACKAGES_DIR="$PACKAGES_DIR/$PACKAGES_REPOS_STYLE"
+ REPOS="$REPOS/$PACKAGES_REPOS_STYLE"
+ fi
+
+ # Create $TMP and $REPOS if need
+ [ ! -e $TMP ] && mkdir -p $TMP
+ [ ! -e $PACKAGES_DIR ] && create_repo_folder $PACKAGES_DIR
+ #
+ SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/simplepkg/slackbuilds}
+ #
+ SYNC=${SYNC:=$no}
+ SYNC=`convert_boolean $SYNC`
+ BASEDIR="`dirname $SLACKBUILDS_DIR`"
+
+}
+
+function solve_dep {
+
+ # Solve dependency
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+ local PACK="$1"
+ local COND="$2"
+ local VER="$3"
+
+ # Check package in local system
+ PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
+ INSTALLED="`check_installed $PACK`"
+ CHECK=$?
+
+ # TODO: check dependency versions
+ if [ -z "$INSTALLED" ]; then
+ if [ $CHECK -ne 0 ]; then
+ # Check package in SlackBuilds tree
+ eecho $messag "$BASENAME: processing $PACKAGE dependency $PACK"
+ SYNC=$no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
+
+ # Check if the package was built and installed
+ EXIT_CODE=$?
+
+ if [ $EXIT_CODE -eq $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND ]; then
+ # Try to use simplaret
+ ARCH=$CREATEPKG_ARCH simplaret --update
+ ARCH=$CREATEPKG_ARCH simplaret --install $PACK
+ [ $? -ne 0 ] && handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACK
+ elif [ $EXIT_CODE -ne 0 ]; then
+ handle_error $EXIT_CODE $PACK
+ fi
+
+ fi
+ fi
+
+}
+
+function find_slackbuild {
+
+ # Find SlackBuild script in the repository
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+ OUTPUT=`find $SLACKBUILDS_DIR -iname $1.SlackBuild`
+ [ "$OUTPUT" != "" ] && EXIT_CODE=0 || EXIT_CODE=1
+ echo $OUTPUT
+
+}
+
+function info_builds {
+
+ # Show packages info
+ if [ "$PKG_PATH" != "" ]; then
+ for i in $PKG_PATH; do
+ PACKAGE=`basename $i .SlackBuild`
+ NAME_UP=`echo $PACKAGE | tr [a-z] [A-Z]`
+ eecho $commun "$NAME_UP: "
+
+ PKG_DIR=`dirname $i`
+ if [ -e $PKG_DIR/slack-desc ]; then
+ eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
+ eecho $normal
+ else
+ eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
+ eecho $normal
+ fi
+
+ if [ -e $PKG_DIR/slack-required ]; then
+ eecho $commun "slack-required"
+ cat $PKG_DIR/slack-required | sed 's/^/ /'
+ fi
+ done
+ fi
+
+}
+
+function list_slackbuilds {
+
+ # list all available slackbuilds
+ # usage: list_slackbuilds
+
+ list_builds $SLACKBUILDS_DIR SlackBuild
+
+}
+
+function load_parameters {
+
+ # Load Createpkg parameters
+ PACKAGES_DIR="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`"
+ PACKAGES_SVN="`eval_parameter PACKAGES_SVN http://slack.sarava.org/packages`"
+ PACKAGES_REPOS_STYLE="`eval_parameter PACKAGES_REPOS_STYLE none`"
+ NOARCH_DIR="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`/noarch"
+ SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplepkg/sources`"
+ SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplepkg/slackbuilds`"
+ SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN http://slack.sarava.org/slackbuilds`"
+ SVN_USER="`eval_parameter PACKAGES_SVN_USER`"
+ SVN_GROUP="`eval_parameter PACKAGES_SVN_GROUP`"
+ SOURCE_DIR_USER="`eval_parameter SOURCE_DIR_USER`"
+ SOURCE_DIR_GROUP="`eval_parameter SOURCE_DIR_GROUP`"
+
+ COLOR_MODE="`eval_parameter COLOR_MODE none`"
+ CREATEPKG_ARCH="`eval_parameter CREATEPKG_ARCH $(default_arch)`"
+ CREATEPKG_CLEANUP="`eval_parameter CREATEPKG_CLEANUP yes`"
+ CREATEPKG_AUTHOR="`eval_parameter CREATEPKG_AUTHOR`"
+ TMP="`eval_parameter TMP /tmp`"
+
+ SIGN_PACKAGES="`eval_boolean_parameter SIGN_PACKAGES $off`"
+ SIGN_PACKAGES_USER="`eval_parameter SIGN_PACKAGES_USER`"
+ SIGN_PACKAGES_KEYID="`eval_parameter SIGN_PACKAGES_KEYID`"
+ SIGN_PACKAGES_WITH_GPG_AGENT="`eval_boolean_parameter SIGN_PACKAGES_WITH_GPG_AGENT $off`"
+
+ if [ ! -z "$SIGN_PACKAGES_KEYID" ]; then
+ SIGN_PACKAGES_KEYID="`echo $SIGN_PACKAGES_KEYID | tr '[:lower:]' '[:upper:]'`"
+ fi
+
+ if [ "$SIGN_PACKAGES_WITH_GPG_AGENT" -eq $on ]; then
+ GPG_AGENT_OPTION="--use-agent"
+ else
+ GPG_AGENT_OPTION=""
+ fi
+
+ # For use at common.sh functions
+ SIGN="$SIGN_PACKAGES"
+ SIGN_KEYID="$SIGN_PACKAGES_KEYID"
+ SIGN_USER="$SIGN_PACKAGES_USER"
+
+ REMOVE_OLD_PACKAGE="`eval_boolean_parameter REMOVE_OLD_PACKAGE $off`"
+ MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`"
+ MOVE_SLACK_REQUIRED="`eval_boolean_parameter MOVE_SLACK_REQUIRED $off`"
+ PACKAGES_REPOS_NOARCH="`eval_boolean_parameter PACKAGES_REPOS_NOARCH $on`"
+ FORCE_MANIFEST_CHECK="`eval_boolean_parameter FORCE_MANIFEST_CHECK $off`"
+ FORCE_MANIFEST_CHECK_SIGNATURE="`eval_boolean_parameter FORCE_MANIFEST_CHECK_SIGNATURE $off`"
+
+}
+
+function repository_checkout {
+
+ # checkout a binary repository
+ # usage: repository_checkout [repository-adress]
+
+ local svn oldfolder
+
+ if [ -d "$PACKAGES_DIR" ]; then
+ oldfolder="$(mktemp -d $(echo $PACKAGES_DIR | sed -e 's/\/*$//g').XXXXXX)"
+ echo "Backing up old $folder at $oldfolder..."
+ mv $PACKAGES_DIR $oldfolder
+ fi
+
+ if [ -z "$1" ]; then
+ svn="$1"
+ else
+ svn="$PACKAGES_SVN"
+ fi
+
+ if valid_svn_repo $svn; then
+ svn checkout $svn $PACKAGES_DIR
+ chown_svn $PACKAGES_DIR && chgrp_svn $PACKAGES_DIR
+ if [ "$svn" != "$PACKAGES_SVN" ]; then
+ echo "Using svn repository different from the one pointed at $CONF."
+ fi
+ else
+ echo "Invalid repository $repository, aborting."
+ EXIT_CODE="1"
+ fi
+
+}
+
+function repository_update {
+
+ if [ ! -z "$1" ] && svn_folder $1; then
+ echo "Fetching changes from svn repository for $1..."
+ cwd="`pwd`"
+ chown_svn $1 && chgrp_svn $1
+ cd $1 && su_svn update
+ cd $cwd
+ fi
+
+}
+
+function repository_status {
+
+ local cwd
+
+ if svn_folder $PACKAGES_DIR; then
+ echo "Status of $PACKAGES_DIR."
+ cwd="`pwd`"
+ cd $PACKAGES_DIR && su_svn status
+ cd $cwd
+ fi
+
+ if svn_folder $NOARCH_DIR; then
+ cwd="`pwd`"
+ echo "Status of $NOARCH_DIR."
+ cd $NOARCH_DIR && su_svn status
+ cd $cwd
+ fi
+
+ exit 0
+
+}
+
+function binary_repository_import {
+
+ # import packages into a subversion repository
+ # usage: binary_repository_import [repository]
+
+ local repository="$1" folder
+
+ if [ -z "$repository" ]; then
+ repository="file:////var/svn/packages"
+ fi
+
+ # eval again so it doesn't include repository style information
+ folder="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`"
+
+ repository_import $folder $repository
+
+}
+
+function create_repo_folder {
+
+ # Create repository directory
+ # usage: create_repo_folder <repository_folder>
+
+ local folder="$1" basedir
+
+ if [ ! -d "$folder" ]; then
+ echo "Creating packages folder $folder..."
+ basedir="`dirname $folder`"
+ if svn_folder $basedir && ! svn_check $folder; then
+ (
+ cd $basedir
+ chown_svn $basedir && chgrp_svn $basedir
+ svn_mkdir `basename $folder`/$SUBFOLDER
+ )
+ else
+ mkdir -p $folder/$SUBFOLDER
+ fi
+ elif [ ! -e $folder/$SUBFOLDER ]; then
+ if svn_folder $folder && ! svn_check $folder/$SUBFOLDER; then
+ (
+ cd $folder
+ chown_svn $folder && chgrp_svn $folder
+ svn_mkdir $SUBFOLDER
+ )
+ else
+ mkdir -p $folder/$SUBFOLDER
+ fi
+ fi
+
+}
+
+function remove_old_package_data {
+
+ # Remove old packages from repository tree
+ # usage: remove_old_package_data <repository_folder>
+
+ if [ ! -d "$1" ]; then
+ return 1
+ fi
+
+ local makepkg_repos="$1"
+
+ # Remove old PACKAGEs from repository tree
+ if [ $REMOVE_OLD_PACKAGE -eq $on ]; then
+
+ # first remove entries from CHECKSUMS.md5
+ if [ -f "$makepkg_repos/CHECKSUMS.md5" ]; then
+ sed -i "/$PACKAGE-.*-.*-.*.*$/d" $makepkg_repos/CHECKSUMS.md5
+ fi
+
+ # then remove entries from patches/CHECKSUMS.md5
+ if [ -f "$makepkg_repos/patches/CHECKSUMS.md5" ]; then
+ sed -i "/$PACKAGE-.*-.*-.*.*$/d" $makepkg_repos/patches/CHECKSUMS.md5
+ fi
+
+ # Using subversion
+ if svn_folder $makepkg_repos; then
+
+ (
+
+ cd $makepkg_repos
+
+ # Using -mindepth 2 so it doesn't delete the new PACKAGE
+ for file in `find . -mindepth 2 -name "$PACKAGE-*-*-*.tgz" -o -name "$PACKAGE-*-*-*.meta" -o -name "$PACKAGE-*-*-*.tgz.asc"`; do
+ candidate="`echo $file | sed -e 's/\.meta$/\.tgz/'`" # otherwise PACKAGE info functions can fail
+ candidate="`echo $candidate | sed -e 's/\.asc$//'`" # otherwise PACKAGE info functions can fail
+ # Just delete packages with different arch, version, build number or folder
+ if [ "`package_version $candidate`" != "$PACKAGE_VERSION" ] || \
+ [ "`package_arch $candidate`" != "$PACKAGE_ARCH" ] || \
+ [ "`package_build $candidate`" != "$PACKAGE_BUILD" ] || \
+ [ "`dirname $candidate | sed -e 's/^\.\///'`" != "`dirname $SUBFOLDER/$PKG_NAME | sed -e 's/^\.\///'`" ]; then
+ svn_del $file
+ fi
+ done
+
+ for file in `find $makepkg_repos -name "$PACKAGE.slack-required"`; do
+ if [ $MOVE_SLACK_REQUIRED -eq $off ]; then
+ svn_del $file
+ elif [ ! -z "$SLACK_REQUIRED" ] && [ "$makepkg_repos/$SUBFOLDER/$PACKAGE.slack-required" != "$file" ]; then
+ svn_del $file
+ fi
+ done
+
+ )
+
+ else
+ # Using -mindepth 2 so it doesn't delete the new package
+ find $makepkg_repos -mindepth 2 -name "$PACKAGE-*-*-*.tgz" -exec rm {} 2>/dev/null \;
+ find $makepkg_repos -mindepth 2 -name "$PACKAGE-*-*-*.meta" -exec rm {} 2>/dev/null \;
+ find $makepkg_repos -mindepth 2 -name "$PACKAGE-*-*-*.tgz.asc" -exec rm {} 2>/dev/null \;
+ find $makepkg_repos -name "$PACKAGE.slack-required" -exec rm {} 2>/dev/null \;
+ fi
+ fi
+
+}
+
+function update_metadata {
+
+ # Update repository metadata
+ # usage: update_metadata <repository_folder>
+
+ if [ ! -d "$1" ]; then
+ return 1
+ fi
+
+ local makepkg_repos="$1"
+
+ (
+
+ cd $makepkg_repos
+
+ get_sign_user
+ repo_gpg_key $makepkg_repos
+ gen_meta $SUBFOLDER/$PKG_NAME
+ gen_filelist
+ update_md5_checksum $makepkg_repos $SUBFOLDER/$PKG_NAME
+
+ # update md5 file from patches/ folder if needed
+ if [ -d "patches/" ]; then
+
+ found_patch="no"
+
+ for file in `find patches/ -name "$PACKAGE-*-*-*.tgz"`; do
+ found_patch="yes"
+ update_md5_checksum $makepkg_repos/patches patches/$SUBFOLDER/$PKG_NAME
+ done
+
+ if [ "$found_patch" == "yes" ]; then
+ gen_patches_filelist patches
+ fi
+ fi
+
+ )
+
+}
+
+function list_packages {
+
+ # list packages in repositories
+ # usage: list_packages [repository_list]
+
+ local repository repositories="$*"
+
+ if [ -z "$repositories" ]; then
+ repositories="$PACKAGES_DIR $NOARCH_DIR"
+ fi
+
+ for repository in $repositories; do
+ echo "Packages from $repository..."
+ find $repository -name '*.tgz'
+ done
+
+}
+
+function remove_package {
+
+ # delete a package from repositories
+ # usage: remove_packages <package> [repository_list]
+
+ local package="$1" repository repositories="$2"
+
+ if [ -z "$package" ]; then
+ return 1
+ fi
+
+ if [ -z "$repositories" ]; then
+ repositories="$PACKAGES_DIR $NOARCH_DIR"
+ fi
+
+ for repository in $repositories; do
+
+ (
+
+ cd $repository
+
+ for file in `find . -name "$package-*-*-*.tgz" -o -name "$package-*-*-*.meta" -o -name "$package-*-*-*.tgz.asc"`; do
+ svn_del $file
+ if [ -e "CHECKSUMS.md5" ] && echo $file | grep -q -e ".tgz$"; then
+ # remove md5 information
+ sed -i "/ \.*\/*$(regexp_slash $file)$/d" CHECKSUMS.md5
+ cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
+ fi
+ done
+
+ for file in `find $repository -name "$package.slack-required"`; do
+ svn_del $file
+ done
+
+ )
+
+ update_metadata $repository
+ done
+
+}
+
+function sign_package {
+
+ # sign a package from repositories
+ # usage: sign_package <package> [repository_list]
+
+ local package="$1" repository repositories="$2"
+
+ if [ -z "$package" ]; then
+ return 1
+ fi
+
+ if [ -z "$repositories" ]; then
+ repositories="$PACKAGES_DIR $NOARCH_DIR"
+ fi
+
+ for repository in $repositories; do
+
+ (
+
+ cd $repository
+
+ for file in `find . -name "$package-*-*-*.tgz"`; do
+
+ echo "Signing package..."
+
+ get_sign_user
+
+ if [ ! -z "$SIGN_PACKAGES_USER" ] && [ "`whoami`" != "$SIGN_PACKAGES_USER" ]; then
+ tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+ chown $SIGN_PACKAGES_USER $tmp_sign_folder
+ su $SIGN_PACKAGES_USER -c "gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file"
+ cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
+ rm -rf $tmp_sign_folder
+ else
+ tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+ gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file
+ cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
+ rm -rf $tmp_sign_folder
+ fi
+
+ done
+
+ )
+
+ update_metadata $repository
+ done
+
+}
+
+function create_package {
+
+ # Synchronize repository
+ [ $SYNC -eq $yes ] && sync_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
+
+ # Update keyring
+ update_keyring $SLACKBUILDS_DIR/GPG-KEY
+
+ # Get SlackBuild script
+ BUILD_SCRIPT="`find_slackbuild $PACKAGE`"
+
+ # Check SlackBuild script found
+ if [ -z "$BUILD_SCRIPT" ]; then
+ handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACKAGE
+ fi
+
+ # Select one SlackBuild
+ if [ "`echo $BUILD_SCRIPT | wc -w`" -gt 1 ]; then
+ AUX="$PS3"
+ PS3="Choice: "
+ LIST=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`" EXIT"
+
+ select PACKAGE in `echo $LIST`; do
+ break
+ done
+
+ if [ "$PACKAGE" = "EXIT" ]; then
+ eecho $error "error: no package selected"
+ return 1
+ fi
+
+ # Select only one SlackBuild in BUILD_SCRIPT
+ BUILD_SCRIPT=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | grep "/$PACKAGE.SlackBuild"`
+ PS3="$AUX"
+ else
+ PACKAGE=`basename $BUILD_SCRIPT .SlackBuild`
+ fi
+
+ # Get dirname and script name from slackbuild
+ SCRIPT_BASE="`dirname $BUILD_SCRIPT`"
+ SCRIPT_NAME="`basename $BUILD_SCRIPT`"
+ eecho $messag "$BASENAME: found script $PACKAGE.SlackBuild, now checking for dependencies"
+
+ # Sets the package's slack-required
+ if [ -f "$SCRIPT_BASE/$PACKAGE.slack-required" ]; then
+ SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
+ elif [ -f "$SCRIPT_BASE/slack-required" ]; then
+ SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
+ fi
+
+ if [ ! -z "$SLACK_REQUIRED" -a $NO_DEPS -ne $on ]; then
+ # This routine checks for dependencies in package's slack-required
+ (
+ grep '^[^#]' $SLACK_REQUIRED | while read dep; do
+ if [ ! -z "$dep" ]; then
+ PROGRAM="`echo $dep | awk '{ print $1 }'`"
+ CONDITION="`echo $dep | awk '{ print $2 }' | tr [=\>\<] [egl]`"
+ VERSION="`echo $dep | awk '{ print $3 }' | tr -dc '[:digit:]'`"
+ solve_dep "$PROGRAM" "$CONDITION" "$VERSION"
+ fi
+ true
+ done
+ )
+ [ $? -ne 0 ] && handle_error $error $ERROR_CREATEPKG_DEPENDENCY
+
+ eecho $messag "$BASENAME: done checking for $PACKAGE dependencies"
+ else
+ eecho $messag "$BASENAME: no unmet dependencies for $PACKAGE"
+ fi
+
+ eecho $messag "$BASENAME: processing $SCRIPT_NAME"
+
+ # Change to script base directory
+ cd $SCRIPT_BASE
+
+ # Use fakeroot if needed and available
+ if [ "`whoami`" != "root" ]; then
+ FAKEROOT="`which fakeroot`"
+ if [ "$?" == "0" ]; then
+ eecho $messag "$BASENAME: running SlackBuild with fakeroot."
+ FAKEROOT="$FAKEROOT --"
+ else
+ eecho $messag "$BASENAME: WARNING: not running as root and no fakeroot found."
+ eecho $messag "$BASENAME: WARNING: your build might not be successful."
+ FAKEROOT=""
+ fi
+ else
+ FAKEROOT=""
+ fi
+
+ # Manifest checking
+ if [ $FORCE_MANIFEST_CHECK -eq $on ] || [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
+ if [ ! -e "`dirname $SCRIPT_NAME`/Manifest" ]; then
+ eecho $messag "$BASENAME: ERROR: no Manifest file for $PACKAGE."
+ return 1
+ fi
+ fi
+
+ # Manifest signature checking
+ if [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" `dirname $SCRIPT_NAME`/Manifest; then
+ gpg --verify `dirname $SCRIPT_NAME`/Manifest &> /dev/null
+ if [ "$?" != "0" ]; then
+ eecho $messag "$BASENAME: ERROR: invalid signature for $PACKAGES's Manifest file."
+ return 1
+ fi
+ else
+ eecho $messag "$BASENAME: ERROR: no signed Manifest file for $PACKAGE."
+ return 1
+ fi
+ fi
+
+ # Run SlackBuild script
+ [ $DEBUG -eq $off ] && SHELL_FLAG="+x" || SHELL_FLAG="-x"
+ (
+ LANG=en_US \
+ TMP=$TMP \
+ SRC_DIR=${SRC_DIR:=$SOURCE_DIR} \
+ SRC=${SRC_DIR:=$SOURCE_DIR} \
+ ARCH=${ARCH:=$CREATEPKG_ARCH} \
+ COLOR=${COLOR:=$COLOR_MODE} \
+ REPOS=${REPOS:=$PACKAGES_DIR} \
+ CLEANUP=${CLEANUP:=$CREATEPKG_CLEANUP} \
+ SLACKBUILD_PATH="/" \
+ INTERACT=no $FAKEROOT sh $SHELL_FLAG ./$SCRIPT_NAME
+ )
+
+ # Check if package was built
+ handle_error $? $PACKAGE
+
+ # Fix source folder user
+ if [ ! -z "$SOURCE_DIR_USER" ]; then
+ chown -R $SOURCE_DIR_USER $SOURCE_DIR
+ fi
+
+ # Fix source folder group
+ if [ ! -z "$SOURCE_DIR_GROUP" ]; then
+ chgrp -R $SOURCE_DIR_GROUP $SOURCE_DIR
+ fi
+
+ # Get package name, arch, version and build number
+ PKG_NAME="`ls -1 -c $PACKAGES_DIR/$PACKAGE-*-*-*.tgz | head -n 1 | xargs basename`"
+ PACKAGE_NAME="`package_name $PKG_NAME`"
+ PACKAGE_VERSION="`package_version $PKG_NAME`"
+ PACKAGE_ARCH="`package_arch $PKG_NAME`"
+ PACKAGE_BUILD="`package_build $PKG_NAME`"
+
+ # Update package author
+ if [ ! -z "$CREATEPKG_AUTHOR" ]; then
+ AUTHOR="`echo $PACKAGE_BUILD | sed -e 's/^[0-9]*//'`"
+ if [ "$AUTHOR" != "$CREATEPKG_AUTHOR" ]; then
+ echo "Changing package build author..."
+ BUILD_NUMBER="`echo $PACKAGE_BUILD | sed -e "s/$AUTHOR$//"`"
+ NEW_BUILD="$BUILD_NUMBER""$CREATEPKG_AUTHOR"
+ mv $PACKAGES_DIR/$PKG_NAME $PACKAGES_DIR/$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCH-$NEW_BUILD.tgz
+ PKG_NAME="$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCH-$NEW_BUILD.tgz"
+ PACKAGE_BUILD="$NEW_BUILD"
+ AUTHOR="$CREATEPKG_AUTHOR"
+ echo "New package name is $PKG_NAME."
+ fi
+ fi
+
+ # Sign package
+ if [ $SIGN_PACKAGES -eq $on ]; then
+
+ echo "Signing package..."
+
+ get_sign_user
+
+ if [ ! -z "$SIGN_PACKAGES_USER" ] && [ "`whoami`" != "$SIGN_PACKAGES_USER" ]; then
+ tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+ chown $SIGN_PACKAGES_USER $tmp_sign_folder
+ su $SIGN_PACKAGES_USER -c "gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME"
+ cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
+ rm -rf $tmp_sign_folder
+ else
+ tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
+ gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME
+ cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
+ rm -rf $tmp_sign_folder
+ fi
+
+ fi
+
+ # Select repository directory
+ if [ $MOVE_BIN_PACKAGE -eq $on ]; then
+ SUBFOLDER="$( echo ${SCRIPT_BASE#$SLACKBUILDS_DIR/} )"
+ NEW_REPOS=$PACKAGES_DIR/$SUBFOLDER
+ else
+ SUBFOLDER="."
+ NEW_REPOS=$PACKAGES_DIR
+ fi
+
+ # Update information from remote repository
+ repository_update $PACKAGES_DIR
+
+ # Create the repository folders
+ create_repo_folder $PACKAGES_DIR
+
+ # Remove old packages from repository tree
+ remove_old_package_data $PACKAGES_DIR
+
+ # Move package to SlackBuilds-like tree
+ if [ $MOVE_BIN_PACKAGE -eq $on ]; then
+
+ mv $PACKAGES_DIR/$PKG_NAME $NEW_REPOS/
+ if [ -e "$PACKAGES_DIR/$PKG_NAME.asc" ]; then
+ mv $PACKAGES_DIR/$PKG_NAME.asc $NEW_REPOS/
+ fi
+
+ if svn_folder $NEW_REPOS; then
+ (
+ cd $NEW_REPOS
+ chown_svn $PACKAGES_DIR && chgrp_svn $PACKAGES_DIR
+ svn_add $PKG_NAME
+ svn_add $PKG_NAME.asc
+ )
+ fi
+
+ # Move package's slack-required to binary repository
+ if [ $MOVE_SLACK_REQUIRED -eq $on ]; then
+ if [ ! -z "$SLACK_REQUIRED" ]; then
+ svn_copy $SLACK_REQUIRED $NEW_REPOS/$PACKAGE.slack-required
+ fi
+ fi
+
+ fi
+
+ # Update repository metadata
+ update_metadata $PACKAGES_DIR
+
+ # General cleanup
+ echo Cleaning up the repository...
+ svn_remove_empty_folders $PACKAGES_DIR
+
+ # Update noarch repository
+ if [ $PACKAGES_REPOS_NOARCH -eq $on ] && [ "`package_arch $PKG_NAME`" == "noarch" ]; then
+ repository_update $NOARCH_DIR
+ echo Copying package to noarch repository...
+ create_repo_folder $NOARCH_DIR
+ remove_old_package_data $NOARCH_DIR
+ svn_copy $NEW_REPOS/$PKG_NAME $NOARCH_DIR/$SUBFOLDER/
+ svn_copy $NEW_REPOS/`basename $PKG_NAME .tgz`.meta $NOARCH_DIR/$SUBFOLDER/
+ svn_copy $NEW_REPOS/`basename $PKG_NAME`.asc $NOARCH_DIR/$SUBFOLDER/
+ svn_copy $NEW_REPOS/$PACKAGE.slack-required $NOARCH_DIR/$SUBFOLDER/
+ update_metadata $NOARCH_DIR
+ svn_remove_empty_folders $NOARCH_DIR
+ fi
+
+ # Install package
+ if [ "$INSTALL" -eq $on ]; then
+ upgradepkg --install-new $NEW_REPOS/$PKG_NAME
+ fi
+
+ echo "Package saved at $NEW_REPOS/$PKG_NAME"
+
+ if [ $PACKAGES_REPOS_NOARCH -eq $on ] && [ "`package_arch $PKG_NAME`" == "noarch" ]; then
+ echo "Aditional copy saved at $NOARCH_DIR/$SUBFOLDER/$PKG_NAME"
+ fi
+
+ return $EXIT_CODE
+
+}
+
+function build_queue {
+
+ # createpkg's build queue
+ # usage: build_queue <package1> ... <packageN>
+
+ local unable_to_install last_status built=0 total=0
+
+ if [ -z "$1" ]; then
+ return
+ fi
+
+ for PACKAGE in $*; do
+ create_package
+ last_status="$?"
+ let total++
+ if [ "$last_status" != "0" ]; then
+ unable_to_install="$unable_to_install\n\t`echo $PACKAGE | sed -e 's/\\\+/\+/'`"
+ else
+ let built++
+ fi
+ done
+
+ if [ ! -z "$unable_to_install" ] && [[ $total > 1 ]]; then
+ eecho $messag "$BASENAME: done building $built of $total requested SlackBuilds."
+ eecho $messag "$BASENAME: unable to create the following packages:"
+ echo -e "$unable_to_install"
+ fi
+
+ # Exit if last build package exit status
+ exit $last_status
+
+}
+
+#---------------------------------------------------
+# Starting createpkg
+#---------------------------------------------------
+# Common functions
+COMMON="/usr/libexec/simplepkg/common.sh"
+SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
+BASENAME="`basename $0`"
+EXIT_CODE=0
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 0
+fi
+
+set_constants
+
+# Load simplepkg.conf variables
+load_parameters
+
+# Loading error codes
+error_codes
+
+# Load slackbuildrc definitions
+if [ -f ~/.slackbuildrc ]; then
+ source ~/.slackbuildrc
+else
+ source /etc/slackbuildrc 2>/dev/null
+fi
+
+# Select color mode: gray, color or none (*)
+color_select $COLOR_MODE
+
+# This is used to show how many children process we have
+if [ -z "$CREATEPKG_CHILD" ]; then
+ CREATEPKG_CHILD=1
+else
+ let CREATEPKG_CHILD++
+fi
+
+BASENAME="`basename $0`[$CREATEPKG_CHILD]"
+
+check_config
+check_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
+
+INSTALL=$off
+NO_DEPS=$off
+DEBUG=$off
+
+case $1 in
+ '--all'|'-a')
+ # build all SlackBuilds in repository
+ build_all_slackbuilds
+ exit $EXIT_CODE
+ ;;
+ '--search'|'-s')
+ if [ $# -ne 2 ]; then
+ list_slackbuilds
+ else
+ LIST=`find_slackbuild $2`
+ for i in $LIST; do
+ echo $i | sed 's/.*\/\([^\/]\+\)\.[Ss]lack[Bb]uild$/ \1/'
+ done
+ fi
+ exit $EXIT_CODE
+ ;;
+ '--info'|'-f')
+ [ $# -ne 2 ] && usage # two parameters is required
+ PKG_PATH=`find_slackbuild $2`
+ info_builds
+ exit $EXIT_CODE
+ ;;
+ '--install'|'-i')
+ [ $# -ne 2 ] && usage # two parameters is required
+ shift
+ PACKAGE="$1"
+ INSTALL=$on
+ build_queue $*
+ ;;
+ '--no-deps'|'-nd')
+ [ $# -ne 2 ] && usage # two parameters is required
+ shift
+ NO_DEPS=$on
+ PACKAGE="$1"
+ build_queue $*
+ ;;
+ '--debug'|'-d')
+ [ $# -ne 2 ] && usage # two parameters is required
+ shift
+ PACKAGE="$1"
+ DEBUG=$on
+ build_queue $*
+ ;;
+ '--sync')
+ sync_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
+ exit $EXIT_CODE
+ ;;
+ '--help'|'-h'|'')
+ usage
+ exit $EXIT_CODE
+ ;;
+ '--list'|'-l')
+ list_slackbuilds
+ exit $EXIT_CODE
+ ;;
+ '--update')
+ repository_update $PACKAGES_DIR
+ repository_update $NOARCH_DIR
+ exit $EXIT_CODE
+ ;;
+ '--commit')
+ shift
+ commit_changes $PACKAGES_DIR "`basename $PACKAGES_DIR:`" $*
+ if [ $PACKAGES_REPOS_NOARCH -eq $on ]; then
+ commit_changes $NOARCH_DIR "noarch:" $*
+ fi
+ exit $EXIT_CODE
+ ;;
+ '--status')
+ repository_status
+ exit $EXIT_CODE
+ ;;
+ '--import')
+ shift
+ binary_repository_import $*
+ exit $EXIT_CODE
+ ;;
+ '--checkout')
+ shift
+ repository_checkout $*
+ exit $EXIT_CODE
+ ;;
+ '--update-keyring')
+ get_sign_user
+ repo_gpg_key $PACKAGES_DIR --update
+ if [ $PACKAGES_REPOS_NOARCH -eq $on ]; then
+ repo_gpg_key $NOARCH_DIR --update
+ fi
+ exit $EXIT_CODE
+ ;;
+ '--list-packages')
+ shift
+ list_packages $*
+ exit $EXIT_CODE
+ ;;
+ '--sign')
+ shift
+ sign_package $*
+ exit $EXIT_CODE
+ ;;
+ '--remove')
+ shift
+ remove_package $*
+ exit $EXIT_CODE
+ ;;
+ *)
+ if [ "${1:0:1}" != "-" ]; then
+ build_queue $*
+ else
+ usage
+ fi
+ ;;
+esac
diff --git a/tags/0.6rc1/src/jail-commit b/tags/0.6rc1/src/jail-commit
new file mode 100755
index 0000000..60e0a36
--- /dev/null
+++ b/tags/0.6rc1/src/jail-commit
@@ -0,0 +1,175 @@
+#!/bin/bash
+#
+# jail-commit: update config files from a jail to a template
+# feedback: rhatto@riseup.net | gpl
+#
+# Jail-commit is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Jail-commit is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+ eval_config $BASENAME
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+function usage {
+
+ echo $BASENAME: commit a jail configuration into a template
+ echo "usage: \"$BASENAME [<jail-path> [template]]\""
+ echo " \"$BASENAME --all\" to commit all templates"
+ echo " \"$BASENAME --help\" for help"
+
+}
+
+function template_merge {
+
+ # copy differences between the jail
+ # and the template in the template folder
+
+ # usage: template_merge <jail-path>
+
+ if [ -z "$1" ] || [ ! -d "`template_files`" ]; then
+ return 1
+ fi
+
+ echo "" > `template_perms`.tmp
+ cd `template_files`
+
+ for file in `find | grep -v -e "/.svn$" | grep -v -e "/.svn/" | grep -v -e "^\.$"`; do
+
+ if [[ -e "$file" && -e "$1/$file" ]]; then
+
+ if [ ! -d "$file" ] && [ ! -h "$file" ]; then
+ if ! diff -u $file $1/$file; then
+ echo Updating $file
+ cp -af $1/$file $file
+ fi
+ elif [ -h "$file" ]; then
+ if [ "`readlink $file`" != "`readlink $1/$file`" ]; then
+ rm -f $file
+ ln -s `readlink $1/$file` $file
+ fi
+ fi
+
+ perms="`numeric_perm $1/$file`"
+ owner="`get_owner $1/$file`"
+ group="`get_group $1/$file`"
+
+ # secure the file
+ chown root.root `template_files`/$file
+ chmod $perms `template_files`/$file
+
+ echo "$file;$owner;$group;$perms" >> `template_perms`.tmp
+
+ else
+ if [ ! -e "$1/$file" ]; then
+ echo $BASENAME: warning: missing file `slash $1/$file`
+ fi
+ fi
+
+ done
+
+ cat `template_perms`.tmp | sed '/^$/d' > `template_perms`
+ rm -f `template_perms`.tmp
+
+ if templates_under_svn && ! svn_check `template_perms`; then
+ svn add `template_perms`
+ fi
+
+}
+
+function template_svn_commit {
+
+ # issue a svn_commit from a template folder
+ # usage: template_svn_commit <template-folder>
+
+ if templates_under_svn && svn_folder $1; then
+ cd $1
+ echo First checking out from the repository...
+ svn update
+ echo Commiting changes to the repository...
+ svn commit -m "changes for `date`"
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: commit error
+ fi
+ fi
+
+}
+
+function do_commit {
+
+ # commit jail changes to a repository
+ # usage: do_commit <jailpath> [template]
+
+ local jailpath template
+
+ jailpath="$1"
+ jail="`basename $jailpath`"
+
+ if [ ! -z "$2" ]; then
+ template="$2"
+ else
+ template="$jail"
+ fi
+
+ search_template $template --update
+ if [ "$?" == "0" ] && ! echo "$TEMPLATE_UPDATE_LIST" | grep -q " `basename $TEMPLATE_BASE` "; then
+ TEMPLATE_UPDATE_LIST=" $TEMPLATE_UPDATE_LIST `basename $TEMPLATE_BASE` " # the spaces are important
+ if [ "$jailpath" == "/" ]; then
+ echo Updating main installation...
+ else
+ echo Updating $jailpath...
+ fi
+ if [ -d "`template_files`" ] || [ -a "`template_packages`" ]; then
+ SILENT=yes templatepkg -u $template $jailpath
+ template_merge $jailpath
+ fi
+ else
+ if [ -z "$SILENT" ]; then
+ echo $BASENAME: template $template not found
+ fi
+ return 1
+ fi
+
+}
+
+TEMPLATE_UPDATE_LIST=""
+
+if [ "$1" == "--help" ]; then
+ usage
+elif [ "$1" == "--all" ]; then
+ template_svn_commit $BASE_CONF/templates
+elif echo $1 | grep -q -e "^--"; then
+ usage
+elif [ ! -z "$1" ]; then
+ do_commit $1 $2
+ if [ "$?" == "0" ]; then
+ template_svn_commit `dirname $TEMPLATE_BASE`
+ fi
+else
+ SILENT="yes"
+ if [ -e $JAIL_LIST ]; then
+ for jailpath in `cat $JAIL_LIST`; do
+ do_commit $jailpath
+ done
+ fi
+ # main jail
+ do_commit / main
+ template_svn_commit $BASE_CONF/templates
+fi
+
diff --git a/tags/0.6rc1/src/jail-update b/tags/0.6rc1/src/jail-update
new file mode 100755
index 0000000..ce2d165
--- /dev/null
+++ b/tags/0.6rc1/src/jail-update
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# jail-update: update config files from a jail to a template
+# feedback: rhatto@riseup.net | gpl
+#
+# Jail-update is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Jail-update is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+ eval_config $BASENAME
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+function usage {
+
+ echo "$BASENAME: update a jail configuration from a template"
+ echo "usage: $BASENAME <jail-path> [template]"
+
+}
+
+if [ -z "$1" ] || [ "$1" == "--help" ] || echo $1 | grep -q -e "^--"; then
+ usage
+ exit 1
+fi
+
+if [ -z "$2" ]; then
+ template_name="`basename $1`"
+else
+ template_name="$2"
+fi
+
+search_template $template_name --update
+
+if [ "$?" != "0" ]; then
+ echo $BASENAME: template $template_name not found
+ exit 1
+elif [ ! -d "$1" ]; then
+ echo $BASENAME: jail $1 not found
+ exit 1
+fi
+
+update_template_files
+update_jail_packages $1
+copy_template_files $1
+set_jail_perms $1
+
diff --git a/tags/0.6rc1/src/lspkg b/tags/0.6rc1/src/lspkg
new file mode 100755
index 0000000..e35baea
--- /dev/null
+++ b/tags/0.6rc1/src/lspkg
@@ -0,0 +1,143 @@
+#!/bin/bash
+#
+# lspkg v0.4: view installed and contents of slackware packages
+#
+# feedback: rhatto at riseup.net | gpl
+#
+# Lspkg is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Lspkg is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+PKG_LIST_DIR="var/log/packages"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON not found, check your `basename $0` installation"
+ exit 1
+fi
+
+function head_line {
+ echo "usage: [ROOT=/otherroot] `basename $0` [option expression]"
+}
+
+function usage {
+ head_line
+ echo "
+options are:
+
+ -v, --view: view installed package contents
+ -p, --print: print the contents of a package file
+ -r, --remove: remove matching packages
+ -s, --search: search a file under installed packages
+ -d, --description: show matching packages' descriptions
+"
+}
+
+# -----------------------------------------------------
+# lspkg
+# -----------------------------------------------------
+
+if [ $# -eq 2 ]; then
+ pack=$2
+elif [ $# -eq 1 ]; then
+ pack=$1
+else
+ pack=""
+fi
+
+if [ ! -z "$pack" ]; then
+ if echo $pack | grep -q "*"; then
+ LIST_PKGS="`ls -1 /$ROOT/$PKG_LIST_DIR/$pack 2> /dev/null`"
+ else
+ pack="`echo $pack | sed -e 's/\+/\\\+/'`"
+ LIST_PKGS=`eval "ls -1 /$ROOT/$PKG_LIST_DIR/ 2> /dev/null | grep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
+ fi
+else
+ LIST_PKGS="`ls /$ROOT/$PKG_LIST_DIR/ 2> /dev/null`"
+fi
+
+LIST_PKGS="`slash $LIST_PKGS`"
+
+case $1 in
+ "-h"|"--help")
+ usage
+ ;;
+ "-v"|"--view")
+ if [ ! -z "$2" ]; then
+ if [ ! -z "$LIST_PKGS" ]; then
+ for file in $LIST_PKGS; do
+ less /$PKG_LIST_DIR/$file
+ done
+ else
+ if [ ! -z "$ROOT" ]; then
+ echo "$2: package not found on /$ROOT/$PKG_LIST_DIR"
+ exit 1
+ else
+ echo "$2: package not found on /$PKG_LIST_DIR"
+ exit 1
+ fi
+ fi
+ else
+ head_line
+ exit 1
+ fi
+ ;;
+ "-p"|"--print")
+ if [ -f "$2" ]; then
+ tar ztvf $2
+ else
+ echo $2: file not found
+ fi
+ ;;
+ "-r"|"--remove")
+ if [ ! -z "$2" ]; then
+ if [ ! -z "$LIST_PKGS" ]; then
+ removepkg /$ROOT/$PKG_LIST_DIR/$1-[0-9]*
+ fi
+ fi
+ ;;
+ "-s"|"--search")
+ if [ ! -z "$2" ]; then
+ eval "grep -l '\/$2$' /$ROOT/$PKG_LIST_DIR/*"
+ fi
+ ;;
+ "-d"|"--description")
+ if [ ! -z "$2" ]; then
+ for file in $LIST_PKGS; do
+ pack="`package_name $file`"
+ echo -e " Package description for $file:\n"
+ sed -n "/^$pack:/ { s/$pack://; p; }" $file
+ done
+ else
+ head_line
+ exit 1
+ fi
+ ;;
+ *)
+ if [ ! -z "$LIST_PKGS" ]; then
+ for pack in $LIST_PKGS; do
+ echo $pack
+ done
+ else
+ if [ ! -z "$ROOT" ]; then
+ echo "$1: package not found on /$ROOT/$PKG_LIST_DIR"
+ exit 1
+ else
+ echo "$1: package not found on /$PKG_LIST_DIR"
+ exit 1
+ fi
+ fi
+ ;;
+esac
+
diff --git a/tags/0.6rc1/src/mkbuild b/tags/0.6rc1/src/mkbuild
new file mode 100755
index 0000000..b490d6e
--- /dev/null
+++ b/tags/0.6rc1/src/mkbuild
@@ -0,0 +1,1902 @@
+#!/bin/bash
+#
+# mkbuild: SlackBuild script maker
+# feedback: rudsonaalves at yahoo.com.br
+#
+# mkbuild is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# Based in model generic.SlackBuild from Luis
+# Version $Rev$ - $Author$
+#
+
+#--------------------------------------------------------------------
+# Functions
+#--------------------------------------------------------------------
+
+function mkbuild_use {
+
+ # mkbuild help function
+ echo -e "${red}NAME${normal}
+ mkbuild - create SlackBuild script from ${green}.mkbuild${normal} input file
+
+${red}SYNOPSIS
+ mkbuild${normal} [${green}OPTIONS${normal}] [${green}mkbuild_file${normal}]
+
+${red}DESCRIPTION${normal}
+ [${green}mkbuild_file${normal}] input file with build rules and variables
+
+ Input ${green}OPTIONS${normal}:
+ ${red}-a${normal}, ${red}--author${normal} ${green}<author_name>${normal}
+ author name
+ ${red}-ai${normal}, ${red}--author_initials${normal} ${green}<initials>${normal}
+ author signature
+ ${red}-bn${normal}, ${red}--build-number${normal}
+ change build number
+ ${red}-cs${normal}, ${red}--const_string${normal} ${green}<string>${normal}
+ construction string to source name
+ ${red}-j${normal}, ${red}--jobs${normal} ${green}<jobs_number>${normal}
+ Number of jobs to run simultaneously
+ ${red}-md${normal}, ${red}--model${normal} ${green}<SlackBuild_model>${normal}
+ SlackBuild model file
+ ${red}-npss${normal}, ${red}--nps-strip${normal}
+ Number of prefix slashes to strip
+ ${red}-pf${normal}, ${red}--patch-files${normal}
+ List of patch files
+ ${red}-pn${normal}, ${red}--pkg_name${normal} ${green}<package_name>${normal}
+ package name
+ ${red}--prefix${normal} <install_dir>${normal}
+ Prefix install directory
+ ${red}-pv${normal}, ${red}--pkg_version${normal} ${green}<version>${normal}
+ package version
+ ${red}-sn${normal}, ${red}--src_name${normal} ${green}<source_name>${normal}
+ source name
+ ${red}-u${normal}, ${red}--url${normal} ${green}<url_address>${normal}
+ url address to source
+
+ Program options:
+ ${red}-d${normal}, ${red}--debug${normal}
+ enable debug mode
+ ${red}-ss${normal}, ${red}--submit-slackbuild${normal}
+ submit SlackBuilds in local svn SlackBuild tree
+ ${red}-sm${normal}, ${red}--submit-mkbuild${normal}
+ submit .mkbuild in local svn mkbuild tree
+ ${red}-sa${normal}, ${red}--submit-all${normal}
+ submit SlackBuild and .mkbuild files in local svn tree
+ ${red}-cs${normal}, ${red}--commit-slackbuild${normal}
+ commit SlackBuilds in svn SlackBuild tree
+ ${red}-cm${normal}, ${red}--commit-mkbuild${normal}
+ commit .mkbuild in svn mkbuild tree
+ ${red}-ca${normal}, ${red}--commit-all${normal}
+ commit SlackBuild and .mkbuild files in svn tree
+ ${red}-im${normal}, ${red}--import-mkbuilds${normal}
+ import mkbuild repository in a svn tree
+ ${red}-is${normal}, ${red}--import-slackbuilds${normal}
+ import SlackBuild repository in a svn tree
+ ${red}-ia${normal}, ${red}-i${normal}, ${red}--import-all${normal}, ${red}--import${normal}
+ import mkbuild and SlackBuild repositories in a svn tree
+ ${red}--status${normal}
+ print mkbuild and SlackBuild svn repositories status
+ ${red}-ls${normal}, ${red}--list${normal}
+ list mkbuild folder contents
+ ${red}-h${normal}, ${red}--help${normal}
+ this help mesage
+ ${red}-n${normal}, ${red}--new${normal} ${green}<mkbuild_name>${normal}
+ start a new mkbuild configure file
+ ${red}-s${normal}, ${red}--search${normal} ${green}<mkbuild_name>${normal}
+ search for a ${green}<mkbuild_name>${normal} file
+ ${red}--sync${normal}
+ synchronize mkbuilds repository
+ ${red}-v${normal}, ${red}--version${normal}
+ program version
+ ${red}-V${normal}, ${red}--verbose${normal}
+ print debug information
+ ${red}-e${normal}, ${red}--edit${normal}
+ edit a mkbuild
+ ${red}-wc${normal}, ${red}--working-copy${normal}
+ create an unversioned mkbuild working copy
+ ${red}--get-param-copy${normal}
+ get a parameter from a given mkbuild
+
+${red}EXAMPLES${normal}
+ ${red}mkbuild -sa pyrex.mkbuild${normal}
+ build pyrex.SlackBuild and submit .mkbuild and .SlackBuild in
+ Slack.Sarava local tree.
+ ${red}mkbuild -a \"Jose Araujo\" -ai \"ja\" -n pyrex${normal}
+ make a basic pyrex.mkbuild with author name \"Jose Araujo\" and
+ author signature \"ja\".
+ ${red}mkbuild --prefix /usr/local pyrex.mkbuild${normal}
+ build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild
+ variables and options definitions.
+
+${red}AUTHOR${normal}
+ Written by ${blue}Rudson R. Alves${normal}
+
+${red}AVAILABILITY${normal}
+ by svn: ${yellow}svn checkout http://slack.sarava.org/simplepkg${normal}
+
+${red}REPORTING BUGS${normal}
+ Report bugs to <${blue}rudsonaalves[at]rra.etc.br${normal}>
+
+${red}COPYRIGHT${normal}
+ Copyright © 2006 Free Software Foundation, Inc.
+ This is free software. You may redistribute copies of it under the
+ terms of the GNU General Public License
+ <${yellow}http://www.gnu.org/licenses/gpl.html${normal}>. There is NO WARRANTY,
+ to the extent permitted by law."
+}
+
+function set_parameters {
+
+ # Get and set mkbuild variables with parameters input
+ # Use: set_parameters $@
+ # where $@ are the parameters input
+ #
+ # Parameter evaluation
+ ACTION="build"
+
+ local search match
+
+ while [ "$1" ]; do
+ case $1 in
+ '-bn'|'--build-number')
+ # Build Number
+ BUILD_NUMBER=$2
+ is_number $BUILD_NUMBER || handle_error "$ERROR_NOT_NUMBER" "--build-number"
+ shift
+ ;;
+ '-ss'|'--submit-slackbuild')
+ # Submit SlackBuild file
+ SUBMIT_SLACKBUILD=$on
+ ;;
+ '-sm'|'--submit-mkbuild')
+ # Submit mkbuild file
+ SUBMIT_MKBUILD=$on
+ ;;
+ '-sa'|'--submit-all')
+ # Submit SlackBuild and mkbuild file
+ SUBMIT_SLACKBUILD=$on
+ SUBMIT_MKBUILD=$on
+ ;;
+ '-cs'|'--commit-slackbuild')
+ # Commit SlackBuild file
+ ACTION="commit_slackbuild"
+ set_mkbuild_name $2
+ break # we need to break otherwise commit log message is evalued
+ ;;
+ '-cm'|'--commit-mkbuild')
+ # commit mkbuild file
+ ACTION="commit_mkbuild"
+ set_mkbuild_name $2
+ break # we need to break otherwise commit log message is evalued
+ ;;
+ '-ca'|'--commit-all')
+ # Commit SlackBuild and mkbuild file
+ ACTION="commit_all"
+ set_mkbuild_name $2
+ break # we need to break otherwise commit log message is evalued
+ ;;
+ '-is'|'--import-slackbuilds')
+ # Import SlackBuilds
+ ACTION="import_slackbuilds"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-im'|'--import-mkbuilds')
+ # Import mkbuilds
+ ACTION="import_mkbuilds"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-ia'|'-i'|'--import-all'|'--import')
+ # Import SlackBuilds and mkbuilds
+ ACTION="import_all"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-ds'|'--delete-slackbuild')
+ # Delete SlackBuild
+ ACTION="delete_slackbuild"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-dm'|'--delete-mkbuild')
+ # Delete mkbuild
+ ACTION="delete_mkbuild"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-da'|'--delete-all')
+ # Delete mkbuild and SlackBuild
+ ACTION="delete_all"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '--status')
+ # Repository status
+ ACTION="status"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-ls'|'--list')
+ # List mkbuild folder contents
+ ACTION="list"
+ set_mkbuild_name $2
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-um'|'--update-manifest')
+ ACTION="update_manifest"
+ set_mkbuild_name $2
+ SOURCE_FILE="$3"
+ shift 2
+ ;;
+ '-n'|'--new')
+ # New mkbuild configure file
+ set_mkbuild_name $2
+ ACTION="new"
+ shift
+ ;;
+ '-s'|'--search')
+ # Search for a mkbuild file
+ set_mkbuild_name $2
+ ACTION='search'
+ ;;
+ '-e'|'--edit')
+ # Open mkbuild with $EDITOR
+ set_mkbuild_name $2
+ ACTION='edit'
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-wc'|'--working-copy')
+ # Create an unversioned mkbuild working copy
+ set_mkbuild_name $2
+ ACTION='working_copy'
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '--get-param')
+ # Get parameter for a given mkbuild
+ set_mkbuild_name $2
+ ACTION='get_param'
+ break # we need to break otherwise specific arguments are evalued
+ ;;
+ '-d'|'--debug')
+ # Debug mode
+ set -x
+ ;;
+ '-h'|'--help' )
+ # Show help mesage
+ mkbuild_use && exit 0
+ ;;
+ '--sync' )
+ # Synchronize mkbuilds repository
+ mkbuild_update_keyring
+ sync_svn_repo $MKBUILDS_DIR $MKBUILDS_SVN
+ exit $?
+ ;;
+ '-v'|'--version')
+ # Show program version
+ eecho $normal "\n$BASENAME version $PROG_VERSION\n"
+ ;;
+ '-V' | '--verbose')
+ # Enable verbose mode
+ VERBOSE=1
+ ;;
+ '-a'|'--author')
+ # Enter with author name
+ AUTHOR=$2
+ [ ${AUTHOR:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR
+ shift
+ ;;
+ '-ai'|'--author_initials')
+ # Enter with author name
+ AUTHOR_INITIALS=$2
+ [ ${AUTHOR_INITIALS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR_INITIALS
+ shift
+ ;;
+ '-cs'|'--const_string')
+ # Enter with construction source name string
+ CONST_STRING=$2
+ [ ${CONST_STRING:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR CONST_STRING
+ shift
+ ;;
+ '-md'|'--model')
+ # Enter with SlackBuild model
+ MODEL=$2
+ [ ${MODEL:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR MODEL
+ shift
+ ;;
+ '-j'|'--jobs')
+ # Enter with SlackBuild model
+ NUMJOBS=$2
+ [ ${NUMJOBS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR NUMJOBS
+ ! is_number $NUMJOBS && handle_error $ERROR_NOT_NUMBER NUMJOBS
+ NUMJOBS="-j$NUMJOBS"
+ shift
+ ;;
+ '--prefix')
+ # Enter with SlackBuild model
+ PREFIX=$2
+ [ ${PREFIX:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PREFIX
+ shift
+ ;;
+ '-pn'|'--pkg_name')
+ # Enter with package name
+ PKG_NAME=$2
+ [ ${PKG_NAME:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PKG_NAME
+ shift
+ ;;
+ '-pv'|'pkg_version')
+ # Enter with package version
+ VERSION=$2
+ [ ${VERSION:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR VERSION
+ shift
+ ;;
+ '-sn'|'--src_name')
+ # Enter with source name
+ SRC_NAME=$2
+ [ ${SRC_NAME:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR SRC_NAME
+ shift
+ ;;
+ '-u'|'--url')
+ # Enter with url address
+ URL=$2
+ [ ${URL:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR URL
+ shift
+ ;;
+ '-pf'|'--patch-files')
+ # Path files list
+ PATCH_FILES=$2
+ [ ${PATCH_FILES:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR PATCH_FILES
+ shift
+ ;;
+ '-npss'|'--nps-strip')
+ # Number of prefix slashes to strip
+ NPS_STRIP=$2
+ [ ${NPS_STRIP:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR NPS_STRIP
+ shift
+ ;;
+ *)
+ # mkbuild input file
+ set_mkbuild_name $1
+ ;;
+ esac
+ shift
+ done
+
+ if [ "${MKBUILD_NAME:0:1}" == "-" ]; then
+ echo "Invalid mkbuild name $MKBUILD_NAME"
+ exit 1
+ fi
+
+ if [ ! -e "$MKBUILD_NAME" ] && [ "$ACTION" != "search" ] && [ "$ACTION" != "status" ]; then
+
+ search="`search_mkbuild`"
+
+ if [ ! -z "$search" ]; then
+ for match in $search; do
+ MKBUILD_NAME="$match"
+ WORK="`dirname $match`"
+ break
+ done
+ else
+ if [ "$ACTION" == "build" ]; then
+ ACTION='new'
+ fi
+ fi
+
+ fi
+
+ MKBUILD_NAME="${MKBUILD_NAME//.mkbuild}.mkbuild"
+ MKBUILD_BASENAME="`basename $MKBUILD_NAME .mkbuild`"
+
+}
+
+function get_variable {
+
+ # Get variable value from mkbuild file (MKBUILD_NAME)
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+ [ -z $MKBUILD_NAME ] && echo "Warning: no [mkbuild_file]." && return 0
+
+ sed -n '1,/^#>>/ p' $MKBUILD_NAME | grep "^\[\[${1}\]\]" | tail -n 1 | cut -f2- -d= | sed -e 's/^"//' -e 's/"$//'
+
+}
+
+function edit_file {
+
+ # Edit file $3, by change string [[$1]] to $2
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+
+ eval "sed -i 's¦\[\[$1\]\]¦$2¦g' $3"
+
+}
+
+function edit_file_full {
+
+ # Edit file $3, by change string $1 to $2
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+
+ eval "sed -i 's¦$1¦$2¦' $3"
+
+}
+
+function start_build {
+
+ # Build initial sections
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+
+ edit_file "SLACKBUILD AUTHOR" "$AUTHOR" $1
+ edit_file "SLACKBUILD AUTHOR INITIALS" "$AUTHOR_INITIALS" $1
+ edit_file "SOURCE NAME" "$SRC_NAME" $1
+ edit_file "PROGRAM NAME" "$PKG_NAME" $1
+ edit_file "PACKAGE NAME" "$PKG_NAME" $1
+ edit_file "DECOMPRESSOR" "$DECOMPRESSOR" $1
+ edit_file "DECOMPRESSOR TEST FLAG" "$DECOMPRESSOR_TEST_FLAG" $1
+ edit_file "PROGRAM URL" "$URL" $1
+ if [ "$ARCH" == "noarch" ]; then
+ sed -i 's/^ARCH=.*$/ARCH="noarch"/' $1
+ else
+ edit_file "ARCH" "$ARCH" $1
+ fi
+ edit_file "NUMBER OF JOBS" "$NUMJOBS" $1
+ edit_file "VERSION" "$VERSION" $1
+ edit_file "SOURCE NAME CONSTRUCTION STRING" "$CONST_STRING" $1
+ edit_file "EXTENSION" "$EXTENSION" $1
+ edit_file "DOWNLOAD FOLDER URL" "$URL_BASE" $1
+ edit_file "OTHER CONFIGURE ARGS" "$OPTIONS" $1
+ edit_file "DOCUMENTATION FILES" "$DOCFILES" $1
+ edit_file "PREFIX" "$PREFIX" $1
+ edit_file "UNPACKER" "$UNPACKER" $1
+ edit_file "UNPACKER FLAGS" "$UNPACKER_FLAGS" $1
+ edit_file "BUILD NUMBER" "$BUILD_NUMBER" $1
+ edit_file "PATCH FILES" "$PATCH_FILES" $1
+ edit_file "NUMBER OF PREFIX SLASHES TO STRIP" "$NPS_STRIP" $1
+
+ edit_file_full "\$EXTENSION" "$EXTENSION" $1
+
+}
+
+function clear_files {
+
+ # Remove temporary files
+ [ ! -z $AUX_TMP ] && rm $AUX_TMP 2>/dev/null
+ [ ! -z $SLACKBUILD_TEMP ] && rm $SLACKBUILD_TEMP 2>/dev/null
+ [ ! -z $DIFF_FILE ] && rm $DIFF_FILE 2>/dev/null
+ chmod 755 *.SlackBuild 2>/dev/null
+
+}
+
+function set_status {
+
+ # Set status section
+ # $1 - Section
+ # $2 - Status
+ # $3 - file
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+ if [ "`get_status $1 $3`" != "all" ]; then
+ verbose "Section $1 $2"
+ eval "sed -i 's/^<$1>.*$/<$1> $2/' $3"
+ else
+ echo "Warning: Section $1 have status all. Can't change!"
+ fi
+
+}
+
+function get_status {
+
+ # Get status from section
+ # $1 - Section
+ # $2 - file
+ [ $# -ne 2 ] && handle_error $ERROR_PAR_NUMBER
+ eval "sed '/^<$1>.*$/! d' $2"
+
+}
+
+function get_mkbuild_status {
+
+ # Get status from mkbuild file
+ # $1 section
+ eval "sed '/^#>>/,/<</ ! d; /^#/ d; /: *$1$/! d; s/^ *\(.*\):.*$/\1/' $MKBUILD_NAME"
+}
+
+function activate_sections {
+
+ # Enable and disable sections
+ ACTIONS_LIST=`sed '/^#>>/,/<</ ! d; /^#/ d ' $MKBUILD_NAME | tr -d ' '`
+ for i in $ACTIONS_LIST; do
+ STATUS=`echo $i | cut -f1 -d:`
+ SECTION=`echo $i | cut -f2 -d:`
+ set_status $SECTION $STATUS $SLACKBUILD_TEMP
+ done
+
+ #if [ $SVN_MOD -eq $on -o $URL == "" ]; then
+ # LIST_OFF="download_source md5sum_download_and_check_0 md5sum_download_and_check_1 gpg_signature_check untar_source"
+ # verbose -e "\nSubversion or empty URL changes:"
+ # for i in $LIST_OFF; do
+ # set_status $i "off" $SLACKBUILD_TEMP
+ # done
+ # [ $SVN_MOD -eq $on ] && set_status svn_source "on" $SLACKBUILD_TEMP
+ #fi
+
+}
+
+function build_slackbuild {
+
+ # Clean SlackBuild
+ # Make SlackBuild backup
+ [ -e $SLACKBUILD ] && mv $SLACKBUILD $SLACKBUILD.old
+ # Remove off sections
+ sed -i '/^<[a-z].*> off/, /^<\/[a-z].*>$/ d' $SLACKBUILD_TEMP
+ # Remove sections names
+ sed -i '/^<.*$/ d' $SLACKBUILD_TEMP
+ # Remove clear lines
+ # isto pode ser feito com "cat -s SLACKBUILD_TEMP ..."
+ sed -i ':i ; $! N; s/\n/Ø/ ; t i ; s/Ø\{3,\}/ØØ/g ; s/Ø/\n/g' $SLACKBUILD_TEMP
+ # Remove from frist line do #!/... line
+ sed '1,/^#\!/ {/^#\!/ b; d }' $SLACKBUILD_TEMP > $SLACKBUILD
+
+}
+
+function section_edit {
+
+ # Edits a section substituting its content
+ [ -z $MKBUILD_NAME ] && return 0
+
+ SECTION_LIST=`grep '^#>[a-z]' $MKBUILD_NAME | cut -c3-`
+
+ # Check for sections change
+ [ -z "$SECTION_LIST" ] && return 0
+
+ # Change sections
+ for i in $SECTION_LIST; do
+ verbose "Change section $i"
+ if [ "$i" = "slackdesc" ]; then
+ # Special slackdesc section
+ slackdesc_edit > $AUX_TMP
+ mv $AUX_TMP $SLACKBUILD_TEMP
+ else
+ # Others sections
+ section_change $i
+ fi
+ done
+
+}
+
+function slackdesc_edit {
+
+ # Edit slackdesc section
+ sed -n '1,/|-----/ { /<slackdesc>/ b; /|-----/ b; p; }' $SLACKBUILD_TEMP
+ echo -n $PKG_NAME | tr [a-z+\-] " "
+ echo -n "|-----handy-ruler"
+ let N=18+${#PKG_NAME}
+ for i in `seq $N $SLACKDESC_LEN`; do
+ echo -n "-"
+ done
+ echo -en "|\n"
+
+ sed -n '/#>slackdesc/,/#<slackdesc/ { /^#/ b; p }' $MKBUILD_NAME
+ sed '1, /\[\[SLACK-DESC\]\]/ d' $SLACKBUILD_TEMP
+
+}
+
+function section_change {
+
+ # Change section lines
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+
+ # Copy first half
+ eval "sed '1,/^<$1>/! d' $SLACKBUILD_TEMP > $AUX_TMP"
+ # Paste new section
+ eval "sed -n '/#>$1/,/#<$1/ { /^#>/ b; /^#</ b; p }' $MKBUILD_NAME >> $AUX_TMP"
+ # Copy second halt
+ eval "sed '/^<\/$1>/,$ ! d' $SLACKBUILD_TEMP >> $AUX_TMP"
+
+ mv $AUX_TMP $SLACKBUILD_TEMP
+
+}
+
+function make_slack_required {
+
+ # Build slack-required file
+ [ -e $WORK/slack-required ] && mv $WORK/slack-required $WORK/slack-required.old
+ [ -z "$SLACK_REQUIRED" ] && return 0
+
+ echo -e "# Dependency list to $SRC_NAME\n#\n# dependency [condition] [version]]" > $WORK/slack-required
+
+ echo $SLACK_REQUIRED | sed 's/:/\n/g' | while read i; do
+ REQ=`echo $i | awk '{ print $1 }'`
+ CON=`echo $i | awk '{ print $2 }'`
+ VER=`echo $i | awk '{ print $3 }'`
+ echo -e "$REQ\t\t$CON\t\t$VER" >> $WORK/slack-required
+ done
+
+}
+
+function change_other_parameters {
+
+ # Change other parameters started by '[[' in .mkbuild file
+ sed '1,/#>>/ ! d' $MKBUILD_NAME | grep -v '^#' | grep '^\[\[[A-Za-z]' | \
+ while read i; do
+ CHANGE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\1/'`"
+ VALUE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\2/'`"
+ edit_file "$CHANGE" "$VALUE" $SLACKBUILD
+ done
+
+}
+
+function get_slackbuild_path {
+
+ # Search for SlackBuild Path in order:
+ # - command line parameter;
+ # - mkbuild parameters file;
+ # - SlackBuild tree;
+ # - Gentool-portage internet tree;
+ # - default path (others/unclassified/$PKG_NAME).
+
+ # Start AUX_PATH with command line parameter
+ AUX_PATH="$SLACKBUILD_PATH"
+
+ # Get in mkbuild
+ [ -z "$AUX_PATH" ] && AUX_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""`
+
+ # SlackBuild path in SlackBuild tree
+ [ -z "$AUX_PATH" ] && AUX_PATH=`cd $SLACKBUILDS_DIR && find . -name $SLACKBUILD | sed -e 's/^\.\///' | xargs dirname 2>/dev/null`
+
+ # SlackBuild path default
+ [ -z "$AUX_PATH" ] && AUX_PATH="others/unclassified/$PKG_NAME"
+
+ # Down case SlackBuild path
+ eval "echo $AUX_PATH" | tr [A-Z] [a-z]
+
+}
+
+function apply_mkpatch {
+
+ # Apply mkpatch if exist
+ sed -n '/#p>/,/#p</ { /^#/ b; p }' $MKBUILD_NAME > $DIFF_FILE
+ if [ -s $DIFF_FILE ]; then
+ mkpatch $DIFF_FILE $SLACKBUILD_TEMP > $AUX_TMP || handle_error $?
+ [ ! -s $AUX_TMP ] && handle_error 1
+ cp $AUX_TMP $SLACKBUILD_TEMP
+ [ $VERBOSE -eq $on ] && ( echo -e "\nApply mkpath ..."; cat $DIFF_FILE )
+ fi
+
+}
+
+# ----------------------------------------------------------------
+# svn functions
+# ----------------------------------------------------------------
+
+function submit_slackbuild {
+
+ # Submit SlackBuild in local Slack.Sarava tree
+ echo -e "\nSubmiting $SLACKBUILD"
+
+ local candidate oldplace
+
+ # check SlackBuilds directory
+ [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync
+
+ # change to SlackBuilds directory
+ cd $SLACKBUILDS_DIR/
+
+ # Add SlackBuild scripts
+ # check path
+ [ ! -e $SLACKBUILD_PATH ] && svn_mkdir $SLACKBUILD_PATH
+
+ # add SlackBuild
+ svn_copy $WORK/`basename $SLACKBUILD` $SLACKBUILD_PATH
+
+ # check and add slack-required
+ [ -e $WORK/slack-required ] && svn_copy $WORK/slack-required $SLACKBUILD_PATH
+
+ for i in `ls $WORK | grep -E -v '(SlackBuild|old|slack-required|.mkbuild$|.tmp$)\*{0,1}$'`; do
+ svn_copy $WORK/$i $SLACKBUILD_PATH
+ done
+
+ # remove stuff in old places
+ for candidate in $(find . -name $(basename $SLACKBUILD)); do
+ oldplace="`dirname $candidate | sed -e 's/^\.\///'`"
+ if [ "$oldplace" != "$SLACKBUILD_PATH" ]; then
+ echo "Removing SlackBuild found at old path $oldplace"
+ svn_del $oldplace
+ fi
+ done
+
+ if [ "$SIGN_MANIFESTS" -eq $on ]; then
+ repo_gpg_key $SLACKBUILDS_DIR
+ fi
+
+ cd $WORK
+
+}
+
+function submit_mkbuild {
+
+ # Submit mkbuild in local mkbuild Slack.Sarava tree
+ echo -e "\nSubmiting $MKBUILD_NAME"
+
+ local candidate oldplace
+
+ # Check mkbuild directory
+ [ ! -d $MKBUILDS_DIR ] && build_svn_repo $MKBUILDS_DIR $MKBUILDS_SVN
+
+ # Get mkbuild path in parameter file
+ MKBUILD_PATH=$SLACKBUILD_PATH
+
+ # Change to mkbuilds directory
+ cd $MKBUILDS_DIR/
+
+ # Check path
+ [ ! -e $MKBUILD_PATH ] && svn_mkdir $MKBUILD_PATH
+
+ # Add relevant files
+ for i in `ls $WORK | grep -E -v '(SlackBuild|old|slack-required|.tmp$)\*{0,1}$'`; do
+ if [ "`basename $i`" != "$DIST_SRC_NAME" ]; then
+ if ! is_the_same $MKBUILD_PATH $WORK; then
+ svn_copy $WORK/$i $MKBUILD_PATH
+ else
+ svn_add $WORK/$i
+ fi
+ fi
+ done
+
+ # Remove stuff in old places
+ for candidate in $(find . -name $(basename $MKBUILD_NAME)); do
+ oldplace="`dirname $candidate | sed -e 's/^\.\///'`"
+ if [ "$oldplace" != "$MKBUILD_PATH" ]; then
+ echo "Removing mkbuild found at old path $oldplace"
+ svn_del $oldplace
+ fi
+ done
+
+ submit_cleanup
+
+ cd $WORK
+
+}
+
+function submit_cleanup {
+
+ # Remove files that should not be stored at the mkbuilds repository
+ if is_the_same $MKBUILD_PATH $WORK; then
+ (
+ cd $WORK
+ rm -f *.old *.tmp *.SlackBuild slack-required $DIST_SRC_NAME
+ )
+ fi
+
+}
+
+function import_mkbuilds {
+
+ # import mkbuilds into a subversion repository
+ # usage: repository_import [repository]
+
+ local repository="$1"
+
+ if [ -z "$repository" ]; then
+ repository="file:////var/svn/mkbuilds"
+ fi
+
+ repository_import $MKBUILDS_DIR $repository
+
+}
+
+function import_slackbuilds {
+
+ # import SlackBuilds into a subversion repository
+ # usage: repository_import [repository]
+
+ local repository="$1"
+
+ if [ -z "$repository" ]; then
+ repository="file:////var/svn/slackbuilds"
+ fi
+
+ repository_import $SLACKBUILDS_DIR $repository
+
+}
+
+function repository_status {
+
+ local cwd
+
+ if svn_folder $MKBUILDS_DIR; then
+ echo "Status of $MKBUILDS_DIR."
+ cwd="`pwd`"
+ cd $MKBUILDS_DIR && su_svn status
+ cd $cwd
+ fi
+
+ if svn_folder $SLACKBUILDS_DIR; then
+ cwd="`pwd`"
+ echo "Status of $SLACKBUILDS_DIR."
+ cd $SLACKBUILDS_DIR && su_svn status
+ cd $cwd
+ fi
+
+ exit 0
+
+}
+
+# ----------------------------------------------------------------
+# general functions
+# ----------------------------------------------------------------
+
+function validate_parameter {
+
+ # Validate parameter in .mkbuild file
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+
+ if [ ! -z "$1" ]; then
+ echo "$1"
+ else
+ local STRING="`get_variable "$2"`"
+ if [ ! -z "$STRING" ]; then
+ echo "$STRING"
+ else
+ echo "$3"
+ fi
+ fi
+
+}
+
+function decompress_find {
+
+ # Find decompressor program and test flag
+ case $EXTENSION in
+ 'gz'|'GZ')
+ DECOMPRESSOR="gunzip"
+ DECOMPRESSOR_TEST_FLAG="-t"
+ ;;
+ 'bz2'|'BZ2')
+ DECOMPRESSOR="bunzip2"
+ DECOMPRESSOR_TEST_FLAG="-t"
+ ;;
+ 'zip'|'ZIP')
+ DECOMPRESSOR="unzip"
+ DECOMPRESSOR_TEST_FLAG="-t"
+ ;;
+ *)
+ handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR"
+ ;;
+ esac
+
+}
+
+function load_parameters {
+
+ # Load Createpkg parameters
+ SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplepkg/sources`"
+ SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplepkg/slackbuilds`"
+ [ ! -d $SLACKBUILDS_DIR ] && mkdir -p $SLACKBUILDS_DIR
+
+ MKBUILDS_DIR="`eval_parameter MKBUILDS_DIR /var/simplepkg/mkbuilds`"
+ [ ! -d $SLACKBUILDS_DIR ] && mkdir -p $SLACKBUILDS_DIR
+
+ SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_DIR http://slack.sarava.org/slackbuilds`"
+ MKBUILDS_SVN="`eval_parameter MKBUILDS_SVN http://slack.sarava.org/mkbuilds`"
+ SVN_USER="`eval_parameter MKBUILDS_SVN_USER`"
+ SVN_GROUP="`eval_parameter MKBUILDS_SVN_GROUP`"
+
+ COLOR_MODE="`eval_parameter COLOR_MODE none`"
+ TMP="`eval_parameter TMP /tmp`"
+
+ MKBUILD_AUTHOR="`eval_parameter MKBUILD_AUTHOR`"
+ MKBUILD_AUTHOR_INITIALS="`eval_parameter MKBUILD_AUTHOR_INITIALS`"
+
+ SIGN_MANIFESTS="`eval_boolean_parameter SIGN_MANIFESTS $off`"
+ SIGN_MANIFESTS_USER="`eval_parameter SIGN_MANIFESTS_USER`"
+ SIGN_MANIFESTS_KEYID="`eval_parameter SIGN_MANIFESTS_KEYID`"
+ SIGN_MANIFESTS_WITH_GPG_AGENT="`eval_boolean_parameter SIGN_MANIFESTS_WITH_GPG_AGENT $off`"
+
+ if [ ! -z "$SIGN_MANIFESTS_KEYID" ]; then
+ SIGN_MANIFESTS_KEYID="`echo $SIGN_MANIFESTS_KEYID | tr '[:lower:]' '[:upper:]'`"
+ fi
+
+ if [ "$SIGN_MANIFESTS_WITH_GPG_AGENT" -eq $on ]; then
+ GPG_AGENT_OPTION="--use-agent"
+ else
+ GPG_AGENT_OPTION=""
+ fi
+
+ # For use at common.sh functions
+ SIGN="$SIGN_MANIFESTS"
+ SIGN_KEYID="$SIGN_MANIFESTS_KEYID"
+ SIGN_USER="$SIGN_MANIFESTS_USER"
+
+ if [ "$SIGN_MANIFESTS" -eq $on ]; then
+ get_sign_user
+ fi
+
+}
+
+function file_metainfo {
+
+ # get integrity file metadata
+ # usage: file_metainfo <file> <file_type> <manifest_file>
+
+ local sum="" file="$1" file_type="`echo $2 | tr '[:lower:]' '[:upper:]'`"
+ local size algo candidate folders path manifest_file="$3"
+ local dist_name="`basename $file`"
+
+ if [ -d "$file" ]; then
+ return
+ fi
+
+ if [ -z "$file_type" ]; then
+ file_type="AUX"
+ fi
+
+ if [ ! -e "$file" ]; then
+ if [ "$file_type" == "DIST" ]; then
+
+ # Add DIST information only if source is not under revision control
+ if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on ]; then
+ return
+ fi
+
+ # Force DIST file name at Manifest
+ dist_name="$DIST_SRC_NAME"
+
+ # Determine file location
+ get_dist_file
+
+ # Update Manifest metadata
+ if [ -e "$DIST_SRC_LOCATION" ]; then
+ file="$DIST_SRC_LOCATION"
+ else
+ echo "$file_type $dist_name " >> $manifest_file # end space is important
+ return 1
+ fi
+
+ elif [ "$file_type" == "PATCH" ]; then
+
+ # Determine file location
+ get_patch_file $file
+
+ # Update Manifest metadata
+ if [ -e "$DOWNLOADED_PATCH_LOCATION" ]; then
+ file="$DOWNLOADED_PATCH_LOCATION"
+ else
+ echo "$file_type $dist_name " >> $manifest_file # end space is important
+ return 1
+ fi
+
+ else
+ echo "$file_type $dist_name " >> $manifest_file # end space is important
+ return 1
+ fi
+ fi
+
+ for algo in md5 rmd160 sha1 sha256 sha512; do
+ sum="$sum `echo $algo | tr '[:lower:]' '[:upper:]'` `gethash $algo $file`"
+ done
+
+ echo $file_type $dist_name `file_size $file` $sum >> $manifest_file
+
+ if [ "$file_type" == "DIST" ] || [ "$file_type" == "PATCH" ]; then
+ echo "Please make sure that the following hashes are correct:"
+ grep -e "^$file_type $dist_name " $manifest_file
+ fi
+
+}
+
+function update_manifest_info {
+
+ # update manifest metainfo for a given file
+ # usage: update_manifest_info <file> <file_type>
+
+ local tmpfile file="$1" file_type="`echo $2 | tr '[:lower:]' '[:upper:]'`"
+
+ if [ -z "$file_type" ]; then
+ file_type="`file_extension $file | tr '[:lower:]' '[:upper:]'`"
+ fi
+
+ # Update Manifest file
+ if [ ! -e "$WORK/Manifest" ]; then
+ touch $WORK/Manifest
+ fi
+
+ # Set temporary file
+ tmpfile="`mktemp $TMP/mkbuild_manifest.XXXXXX`"
+
+ # Update metadata
+ sed -e "/^$file_type `basename $file` /d" $WORK/Manifest > $tmpfile
+ file_metainfo $file $file_type $tmpfile
+
+ if [ "$?" != "0" ]; then
+ echo "Could not add hashes for $file on Manifest: file not found."
+ echo "Please do it with --update-manifest."
+ fi
+
+ # Save Manifest changes
+ strip_gpg_signature $tmpfile | sort > $WORK/Manifest
+
+ rm -f $tmpfile
+
+}
+
+function edit_manifest {
+
+ local option="$1"
+
+ # Check if existing Manifest is properly signed
+ if ! check_manifest_signature; then
+ echo "Invalid signature at $WORK/Manifest, aborting."
+ return 1
+ fi
+
+ # Update Manifest file
+ echo "Updating Manifest..."
+
+ # Update mkbuild metainformation
+ update_manifest_info $WORK/`basename $MKBUILD_NAME`
+
+ # Update SlackBuild information
+ update_manifest_info $WORK/`basename $SLACKBUILD`
+
+ # Update slack-required information
+ if [ -e "$WORK/slack-required" ]; then
+ update_manifest_info $WORK/slack-required
+ fi
+
+ if [ "$option" == "--update" ]; then
+ # Add DIST information only if source is not under revision control
+ if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on ]; then
+ echo "Source is under version control system, not adding hashes to Manifest."
+ else
+ echo "Updating DIST information at $MKBUILD_NAME Manifest..."
+
+ # Determine file location
+ get_dist_file $SOURCE_FILE
+
+ # Update Manifest metadata
+ if [ -e "$DIST_SRC_LOCATION" ]; then
+ update_manifest_info $DIST_SRC_LOCATION dist
+ else
+ echo "Can't get $DIST_SRC_NAME."
+ fi
+ fi
+ else
+ # Add source code information if its not already there
+ if ! grep -q -e "^DIST $DIST_SRC_NAME " $WORK/Manifest; then
+ update_manifest_info $DIST_SRC_NAME dist
+ fi
+ fi
+
+ # Update patches
+ for i in `find $WORK | grep -E '(.diff$|.diff.gz$|.diff.bz2$|.patch$|.patch.gz$|.patch.bz2$)\*{0,1}$'`; do
+ if [ ! -d "$WORK/$i" ] && ! grep -q -e "^PATCH `basename $i` " $WORK/Manifest; then
+ update_manifest_info $i patch
+ fi
+ done
+
+ # Update patches from URLs
+ for i in $PATCH_URLS; do
+ if ! grep -q -e "^PATCH `basename $i` " $WORK/Manifest; then
+ update_manifest_info $i patch
+ fi
+ done
+
+ # Update miscelaneous information
+ for i in `find $WORK | grep -E -v '(SlackBuild|old|slack-required|.mkbuild$|.tmp$|Manifest$)\*{0,1}$' | \
+ grep -E -v '(.diff$|.diff.gz$|.diff.bz2$|.patch$|.patch.gz$|.patch.bz2$)\*{0,1}$' | \
+ grep -v "/\.svn"`; do
+ # Avoid folders, dotfiles and DIST files
+ if [ ! -d "$WORK/$i" ] && \
+ [ "`basename $i`" != "$DIST_SRC_NAME" ] && \
+ ! echo "`basename $i`" | grep -q -e "^\."; then
+ update_manifest_info $i misc
+ fi
+ done
+
+ # Finally, sign the Manifest
+ sign_manifest
+
+}
+
+function get_file {
+
+ # download a file
+ # usage: download_file <file_type> <url> [file] [dist_name]
+
+ local folder folders path candidate
+ local file_type="`echo $1 | tr '[:lower:]' '[:upper:]'`"
+ local url="$2" file="$3" file_name="$4"
+ local protocol="`echo $url| cut -d : -f 1 | tr '[:upper:]' '[:lower:]'`"
+
+ if [ -z "$file_name" ]; then
+ if [ "$file_type" == "DIST" ]; then
+ file_name="$DIST_SRC_NAME"
+ else
+ file_name="`basename $url`"
+ fi
+ fi
+
+ # Clean global var
+ DOWNLOADED_FILE_LOCATION=""
+
+ # Determine file location
+ if [ -d "$file" ]; then
+
+ folder="$file"
+ file="$file_name"
+ for candidate in $(find $folder -name $(basename $file)); do
+ if [ ! -z "$candidate" ]; then
+ break 2
+ fi
+ done
+
+ if [ ! -z "$candidate" ]; then
+ echo "Using $(basename $candidate) found at $(dirname $candidate) to hash at the Manifest."
+ file="$candidate"
+ else
+ echo "Can't find $file at $folder."
+ return 1
+ fi
+
+ elif [ -z "$file" ]; then
+
+ file="$file_name"
+ folders="$WORK $TMP $SOURCE_DIR"
+ if ! is_the_same /tmp $TMP; then
+ folders="$folders /tmp"
+ fi
+
+ echo "Trying to find $(basename $file) at $folders..."
+
+ for path in $folders; do
+ for candidate in $(find $path -name $(basename $file) 2> /dev/null); do
+ if [ ! -z "$candidate" ]; then
+ break 2
+ fi
+ done
+ done
+
+ if [ ! -z "$candidate" ]; then
+
+ echo "Using $(basename $candidate) found at $(dirname $candidate) to hash at the Manifest."
+ file="$candidate"
+
+ elif [ "$protocol" == "https" ] || \
+ [ "$protocol" == "http" ] || \
+ [ "$protocol" == "ftp" ]; then
+
+ # Try to donwload the file
+ echo "File $file not found, trying to download it..."
+ if [ ! -e "$file" ]; then
+ if is_writable_folder $SOURCE_DIR/$PKG_NAME; then
+ file="$SOURCE_DIR/$PKG_NAME/`basename $file_name`"
+ wget "$url" -O "$file"
+ if [ "$?" != "0" ]; then
+ echo "Could not download $file"
+ return 1
+ fi
+ elif is_writable_folder $TMP; then
+ file="$TMP/`basename $file_name`"
+ if [ ! -e "$file" ]; then
+ wget "$url" -O "$file"
+ if [ "$?" != "0" ]; then
+ echo "Could not download $file"
+ return 1
+ fi
+ fi
+ elif ! is_the_same /tmp $TMP; then
+ file="/tmp/`basename $file_name`"
+ if [ ! -e "$file" ]; then
+ wget "$url" -O "$file"
+ if [ "$?" != "0" ]; then
+ echo "Could not download $file"
+ return 1
+ fi
+ fi
+ else
+ echo "Could not download $file"
+ return 1
+ fi
+ fi
+ fi
+ fi
+
+ if [ -e "$file" ]; then
+ DOWNLOADED_FILE_LOCATION="$file"
+ fi
+
+}
+
+function get_dist_file {
+
+ # get package source code
+ # usage: get_dist_file <url> [file_name]
+
+ DIST_SRC_LOCATION=""
+ get_file dist $DIST_SRC_URL
+ DIST_SRC_LOCATION="$DOWNLOADED_FILE_LOCATION"
+
+}
+
+function get_patch_file {
+
+ # get a patch
+ # usage: get_patch <file_name>
+
+ local patch_url file_name="$1"
+
+ if [ -z "$file_name" ]; then
+ return 1
+ fi
+
+ DOWNLOADED_PATCH_LOCATION=""
+
+ for patch_url in $PATCH_URLS; do
+ if [ "`basename $file_name`" == "`basename $patch_url`" ]; then
+ get_file patch $patch_url
+ DOWNLOADED_PATCH_LOCATION="$DOWNLOADED_FILE_LOCATION"
+ break
+ fi
+ done
+
+}
+
+function update_manifest {
+
+ # Get mkbuild values
+ get_mkbuild_values
+
+ # Update the Manifest
+ edit_manifest --update
+
+}
+
+function if_previous_error {
+
+ if [ "$?" != "0" ]; then
+ handle_error $*
+ fi
+
+}
+
+function verbose {
+
+ if [ $VERBOSE -eq $on ]; then
+ echo $*
+ fi
+
+}
+
+function get_mkbuild_values {
+
+ # Get values
+ # Author name
+ AUTHOR=${AUTHOR:="`get_variable "SLACKBUILD AUTHOR"`"}
+ [ -z "$AUTHOR" ] && handle_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR"
+ verbose "[[SLACKBUILD AUTHOR]]=\"$AUTHOR\""
+
+ # Author initials
+ STR_MOUNT=`echo $AUTHOR | sed 's/ /\n/g' | sed 's/^\([A-Z]\).*/\1/' | sed ':i; $!N; s/\n//; ti' | tr [A-Z] [a-z]`
+ AUTHOR_INITIALS="`validate_parameter "$AUTHOR_INITIALS" "SLACKBUILD AUTHOR INITIALS" "$STR_MOUNT"`"
+ if_previous_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR INITIALS"
+ verbose "[[SLACKBUILD AUTHOR INITIALS]]=\"$AUTHOR_INITIALS\""
+
+ # URL program
+ URL=`validate_parameter "$URL" "DOWNLOAD FOLDER URL" ""`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "URL"
+ verbose "[[URL]]=\"$URL\""
+
+ AUX=`get_mkbuild_status "svn_source"`
+ SVN_MOD=`convert_boolean "$AUX"`
+
+ AUX=`get_mkbuild_status "git_source"`
+ GIT_MOD=`convert_boolean "$AUX"`
+
+ # Check sections
+ if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on -o $URL == "" ]; then
+ LIST_OFF="download_source md5sum_download_and_check_0 md5sum_download_and_check_1 gpg_signature_check untar_source"
+ verbose -e "\nCheck subversion or empty URL"
+ for i in $LIST_OFF; do
+ if [ `get_mkbuild_status "$i"` != "off" ]; then
+ handle_error $ERROR_MKBUILD_VCS
+ else
+ verbose -e "off: $i is ok."
+ fi
+ done
+ fi
+
+ STR_MOUNT="`echo $URL | sed 's/.*\.\([a-z0-9]\+\)$/\1/'`"
+ if [ $STR_MOUNT = "gz" -o $STR_MOUNT = "tgz" -o $STR_MOUNT = "bz2" -o $STR_MOUNT = "zip" ]; then
+ SOURCE_NAME=`basename $URL`
+ URL_BASE=`dirname $URL`
+ else
+ URL_BASE=$URL
+ fi
+ verbose "[[DOWNLOAD FOLDER URL]]=\"$URL_BASE\""
+
+ if [ $SVN_MOD -eq $off ] && [ $GIT_MOD -eq $off ]; then
+ # Extension
+ EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "EXTENSION"
+ verbose "[[EXTENSION]]=\"$EXTENSION\""
+
+ # Unpacker
+ UNPACKER=`validate_parameter "$UNPACKER" "UNPACKER" "tar"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER"
+ verbose "[[UNPACKER]]=\"$UNPACKER\""
+
+ # Unpacker flags
+ [ "$UNPACKER" == "tar" ] && STR_MOUNT="--no-same-owner --no-same-permissions -xvf" || STR_MOUNT=""
+ UNPACKER_FLAGS=`validate_parameter "$UNPACKER_FLAGS" "UNPACKER FLAGS" "$STR_MOUNT"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER FLAGS"
+ verbose "[[UNPACKER_FLAGS]]=\"$UNPACKER_FLAGS\""
+
+ # Decompressor program and test flag
+ DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""`
+ [ -z $DECOMPRESSOR ] && decompress_find
+ verbose "[[DECOMPRESSOR]]=\"$DECOMPRESSOR\""
+
+ DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR TEST FLAG"
+ verbose "[[DECOMPRESSOR TEST FLAG]]=\"$DECOMPRESSOR_TEST_FLAG\""
+ fi
+
+ # Build number
+ BUILD_NUMBER=`validate_parameter "$BUILD_NUMBER" "BUILD NUMBER" "1"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "BUILD NUMBER"
+
+ # Build archteture
+ ARCH=`validate_parameter "$ARCH" "ARCH" "i486"`
+ verbose "[[ARCH]]=\"$ARCH\""
+
+ # Source name
+ STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
+ SRC_NAME=`validate_parameter "$SRC_NAME" "SOURCE NAME" "$STR_MOUNT"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "SOURCE NAME"
+ verbose "[[SOURCE NAME]]=\"$SRC_NAME\""
+
+ # SOURCE NAME cannot be empty
+ if [ -z "$SRC_NAME" ]; then
+ echo "SOURCE NAME is empty."
+ handle_error $ERROR_MKBUILD_CONSTRUCTION "SOURCE NAME"
+ fi
+
+ # Package name
+ STR_MOUNT=$SRC_NAME
+ PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"`
+ verbose "[[PACKAGE NAME]]=\"$PKG_NAME\""
+
+ # PACKAGE NAME cannot be empty
+ if [ -z "$PKG_NAME" ]; then
+ echo "PACKAGE NAME is empty."
+ handle_error $ERROR_MKBUILD_CONSTRUCTION "PACKAGE NAME"
+ fi
+
+ # Version
+ STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
+ VERSION=`validate_parameter "$VERSION" "VERSION" "$STR_MOUNT"`
+ if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "VERSION"
+ verbose "[[VERSION]]=\"$VERSION\""
+
+ # Source name construction string
+ CONST_STRING="`validate_parameter "$CONST_STRING" "SOURCE NAME CONSTRUCTION STRING" "\\\$SRC_NAME-\\\$VERSION.tar.$EXTENSION"`"
+ verbose "[[SOURCE NAME CONSTRUCTION STRING]]=\"$CONST_STRING\""
+
+ # Build Source Name
+ [ -z $SOURCE_NAME ] && SOURCE_NAME=`eval "echo $CONST_STRING"`
+ verbose "SOURCE_NAME=\"$SOURCE_NAME\""
+
+ # Eval source code name and URL
+ DIST_SRC_NAME="`eval "echo $CONST_STRING"`" # we need this to strip some escape strings
+ DIST_SRC_NAME="`eval "echo $DIST_SRC_NAME"`" # twice does the job
+ DIST_SRC_URL="`eval "echo $URL_BASE"`" # we need this to strip some escape strings
+ DIST_SRC_URL="`eval "echo $DIST_SRC_URL"`" # twice does the job
+ DIST_SRC_URL="$DIST_SRC_URL/$DIST_SRC_NAME"
+
+ # Documentations list
+ DEFAULT_DOCFILES="NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING LICENSE SIGNATURE readme.*"
+ DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "$DEFAULT_DOCFILES"`
+ verbose "[[DOCUMENTATION FILES]]=\"$DOCFILES\""
+
+ # ./configure option
+ OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""`
+ verbose "[[OTHER CONFIGURE ARGS]]=\"$OPTIONS\""
+
+ # PREFIX
+ PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"`
+ verbose "[[PREFIX]]=\"$PREFIX\""
+
+ # Number of jobs
+ NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""`
+ is_number $NUMJOBS && NUMJOBS="-j${NUMJOBS}"
+ verbose "[[NUMBER OF JOBS]]=\"$NUMJOBS\""
+
+ # Make slack-required file
+ SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""`
+ verbose "[[SLACK REQUIRED]]=\"$SLACK_REQUIRED\""
+
+ # SlackBuild model
+ MODEL=`validate_parameter "$MODEL" "SLACKBUILD MODEL" "generic.mkSlackBuild"`
+ verbose "[[SLACKBUILD MODEL]]=\"$MODEL\""
+
+ # PATCH FILES
+ PATCH_FILES=`validate_parameter "$PATCH_FILES" "PATCH FILES" ""`
+ verbose "[[PATCH_FILES]]=\"$PATCH_FILES\""
+
+ # PATCH URLs
+ PATCH_URLS=`validate_parameter "$PATCH_URLS" "PATCH URLS" ""`
+ verbose "[[PATCH_URLS]]=\"$PATCH_URLS\""
+
+ # Strip the smallest prefix containing num leading slashes from each file name found in the patch file.
+ NPS_STRIP=`validate_parameter "$NPS_STRIP" "NUMBER OF PREFIX SLASHES TO STRIP" "1"`
+ verbose "[[NUMBER OF PREFIX SLASHES TO STRIP]]=\"$NPS_STRIP\""
+
+ # SlackBuild path
+ # SlackBuild path in mkbuild parameters file
+ SLACKBUILD=$WORK/${PKG_NAME}.SlackBuild
+ SLACKBUILD_PATH=`get_slackbuild_path`
+ verbose "[[SLACKBUILD PATH]]=\"$SLACKBUILD_PATH\""
+
+}
+
+function make_slackbuild {
+
+ #--------------------------------------------------------------
+ #- Start build SlackBuild -
+ #--------------------------------------------------------------
+
+ # Get mkbuild values
+ get_mkbuild_values
+
+ verbose -e "\nStart SlackBuild make"
+ SLACKBUILD_TEMP=$SLACKBUILD.tmp
+ cp $MODEL_DIR/$MODEL $SLACKBUILD_TEMP
+
+ # Apply mkpatch
+ verbose -e "\nMkpatch section ..."
+ apply_mkpatch
+
+ # On/Off sections
+ verbose -e "\nEnable/disable sections ..."
+ activate_sections
+
+ # Change sections
+ verbose -e "\nEdit sections ..."
+ section_edit
+
+ # Change strings from model
+ verbose -e "\nChange strings in $PACKAGE.SlackBuild model..."
+ start_build $SLACKBUILD_TEMP
+
+ # Remove off sections
+ verbose -e "\nRemove off sections ..."
+ build_slackbuild
+
+ # Make slack-required file
+ verbose -e "\nMake slack-required file ..."
+ make_slack_required
+
+ if [ -e slack-required ]; then
+ DEPENDENCY_LIST="`cat $WORK/slack-required | awk '{print $1}' | grep '^[a-z]' | tr '\012' ' '`"
+ edit_file "REQUIRES" "$DEPENDENCY_LIST" $SLACKBUILD
+ else
+ edit_file "REQUIRES" " " $SLACKBUILD
+ fi
+
+ # Others changes
+ verbose -e "\nEdit other [[]] parameters ..."
+ change_other_parameters
+
+ if [ "$SIGN_MANIFESTS" -eq $on ]; then
+ mkbuild_update_keyring
+ repo_gpg_key $MKBUILDS_DIR
+ fi
+
+ # Update Manifest file
+ edit_manifest
+
+ if [ "$?" == "0" ]; then
+
+ # Commit SlackBuild
+ [ $SUBMIT_SLACKBUILD -eq $on ] && submit_slackbuild
+
+ # Commit mkbuild
+ [ $SUBMIT_MKBUILD -eq $on ] && submit_mkbuild
+ fi
+
+}
+
+function create_mkbuild {
+
+ # Create a new .mkbuild parameters-file
+ cp $MODEL_DIR/model.mkbuild $MKBUILD_NAME
+
+ if [ -z "$AUTHOR" ] && [ ! -z "$MKBUILD_AUTHOR" ]; then
+ AUTHOR="$MKBUILD_AUTHOR"
+ fi
+
+ if [ -z "$AUTHOR_INITIALS" ] && [ ! -z "$MKBUILD_AUTHOR_INITIALS" ]; then
+ AUTHOR_INITIALS="$MKBUILD_AUTHOR_INITIALS"
+ fi
+
+ # Package Author
+ if [ ! -z "$AUTHOR" ]; then
+ edit_file "YOUR NAME" "${AUTHOR}" $MKBUILD_NAME
+ # Package Author Signature
+ if [ -z "$AUTHOR_INITIALS" ]; then
+ AUTHOR_INITIALS=`echo $AUTHOR | tr '[A-Z]' '[a-z]' | sed 's/ /\n/g' | sed 's/^\([a-z]\).*/\1/' | sed ':i ; $! N ; s/\n// ; t i'`
+ fi
+ edit_file "YOUR SIGNATURE" "${AUTHOR_INITIALS}" $MKBUILD_NAME
+ fi
+
+ # Change Default SourceForge URL
+ [ -z "$URL" ] && URL="http://downloads.sourceforge.net/[[PKG NAME]]/"
+ edit_file "DEFAULT URL" "${URL}" $MKBUILD_NAME
+
+ # Change Package Name
+ edit_file "PKG NAME" "${MKBUILD_NAME//.mkbuild}" $MKBUILD_NAME
+
+ # Change SlackBuild Path
+ if [ ! -z "$MKBUILD_PATH" ]; then
+ edit_file_full "\[\[SLACKBUILD PATH\]\]=.*" "\[\[SLACKBUILD PATH\]\]=\"`regexp_slash $MKBUILD_PATH`\"" $MKBUILD_NAME
+ fi
+
+ # Print .mkbuild name
+ echo "$MKBUILD_NAME"
+
+}
+
+function search_mkbuild {
+
+ # find a given mkbuild
+ # usage: search_mkbuild [-i]
+
+ if [ "$MKBUILD_NAME" == ".mkbuild" ]; then
+ list_mkbuilds
+ return
+ fi
+
+ if [ ! -z "$MKBUILD_PATH" ]; then
+ if echo $name | grep -q -e "\.mkbuild$"; then
+ if [ -d "$MKBUILDS_DIR/$MKBUILD_PATH" ]; then
+ find $MKBUILDS_DIR/$MKBUILD_PATH -name $MKBUILD_NAME
+ else
+ find $MKBUILDS_DIR -name $MKBUILD_NAME
+ fi
+ else
+ if [ -d "$MKBUILDS_DIR/$MKBUILD_PATH" ]; then
+ find $MKBUILDS_DIR/$MKBUILD_PATH -name '*.mkbuild'
+ fi
+ fi
+ else
+ if [ "$1" == "-i" ]; then
+ # case insensitive mode
+ find $MKBUILDS_DIR -iname $MKBUILD_NAME
+ else
+ find $MKBUILDS_DIR -name $MKBUILD_NAME
+ fi
+ fi
+
+}
+
+function set_mkbuild_name {
+
+ local name="$1"
+
+ MKBUILD_PATH=""
+
+ if [ ! -z "$name" ]; then
+ MKBUILD_NAME="`basename $name`"
+ fi
+
+ if echo $name | grep -q "/"; then
+ if echo $name | grep -q -e "\.mkbuild$"; then
+ MKBUILD_NAME="`basename $name`"
+ MKBUILD_PATH="`dirname $name`"
+ else
+ MKBUILD_PATH="$name"
+ fi
+ else
+ MKBUILD_NAME="${name//.mkbuild}.mkbuild"
+ fi
+
+}
+
+function list_mkbuilds {
+
+ # list all available mkbuilds
+ # usage: list_mkbuilds
+
+ list_builds $MKBUILDS_DIR mkbuild
+
+}
+
+function edit_mkbuild {
+
+ # edit a mkbuild
+ # usage: edit_mkbuild
+
+ if [ -e "$MKBUILD_NAME" ]; then
+ if [ -z "$EDITOR" ]; then
+ EDITOR="vi"
+ fi
+ $EDITOR $MKBUILD_NAME
+ else
+ echo "Not found: $MKBUILD_NAME"
+ return 1
+ fi
+
+}
+
+function mkbuild_update_keyring {
+
+ # Update keyring using GPG-KEY from
+ # mkbuild repository
+
+ update_keyring $MKBUILDS_DIR/GPG-KEY
+
+}
+
+function sign_manifest {
+
+ # sign manifest file
+ # usage: sign_manifest
+
+ if [ "$SIGN_MANIFESTS" -eq $on ]; then
+ echo "Signing Manifest..."
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ su $SIGN_USER -c "gpg $GPG_AGENT_OPTION --clearsign -u $SIGN_KEYID $WORK/Manifest"
+ mv $WORK/Manifest.asc $WORK/Manifest
+ else
+ gpg $GPG_AGENT_OPTION --clearsign -u $SIGN_KEYID $WORK/Manifest
+ mv $WORK/Manifest.asc $WORK/Manifest
+ fi
+ fi
+
+}
+
+function check_manifest_signature {
+
+ # check if a manifest signature is valid
+ # usage: check_manifest_signature
+
+ if [ -e "$WORK/Manifest" ]; then
+ if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $WORK/Manifest; then
+ echo "Checking existing Manifest signature..."
+ mkbuild_update_keyring
+ if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
+ su $SIGN_USER -c "gpg --verify $WORK/Manifest"
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+ else
+ gpg --verify $WORK/Manifest
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+ fi
+ fi
+ fi
+
+}
+
+function delete_mkbuild {
+
+ # delete content from a mkbuild folder
+ # usage: delete_mkbuilds [file]
+
+ local folder candidate file="$1"
+ local name="`basename $MKBUILD_NAME .mkbuild`.mkbuild"
+
+ for candidate in `find $MKBUILDS_DIR -name $name`; do
+ folder="`dirname $candidate`"
+ if [ -d "$folder" ]; then
+ if [ -z "$1" ]; then
+ # Delete the whole mkbuild folder
+ svn_del $folder
+ elif [ -e "$folder/$file" ]; then
+ svn_del $folder/$file
+ fi
+ fi
+ done
+
+}
+
+function delete_slackbuild {
+
+ # delete content from a SlackBuild folder
+ # usage: delete_slackbuilds [file]
+
+ local folder candidate file="$1"
+ local name="`basename $MKBUILD_NAME .mkbuild`.SlackBuild"
+
+ for candidate in `find $SLACKBUILDS_DIR -name $name`; do
+ folder="`dirname $candidate`"
+ if [ -d "$folder" ]; then
+ if [ -z "$1" ]; then
+ # Delete the whole mkbuild folder
+ svn_del $folder
+ elif [ -e "$folder/$file" ]; then
+ svn_del $folder/$file
+ fi
+ fi
+ done
+
+}
+
+function list_mkbuild_contents {
+
+ if [ -e "$MKBUILD_NAME" ]; then
+ ls `dirname $MKBUILD_NAME`
+ else
+ echo "Not found: $MKBUILD_NAME"
+ return 1
+ fi
+
+}
+
+function working_copy {
+
+ local copy tmpfolder name
+
+ if [ -e "$MKBUILD_NAME" ]; then
+ name="$(basename $MKBUILD_NAME .mkbuild)"
+ copy="$(basename $(basename $MKBUILD_NAME .mkbuild))"
+ if [ -d "$copy" ]; then
+ tmpfolder="`mktemp $name.XXXXXX`"
+ mv $copy $tmpfolder/
+ fi
+ rsync -av --exclude=".svn" --exclude=".git" `dirname $MKBUILD_NAME`/ $copy/ &> /dev/null
+ echo "Working copy for $name set at $(pwd)/$name."
+ else
+ echo "Not found: $MKBUILD_NAME"
+ return 1
+ fi
+
+}
+
+function get_param {
+
+ # get a parameter from a mkbuild file
+ # usage: get_param <parameter>
+
+ local parameter="`echo $* | tr '[:lower:]' '[:upper:] | tr -d '"' | tr -d "'"'`"
+
+ if [ -e "$MKBUILD_NAME" ]; then
+ grep -e "\[\[$parameter\]\]" $MKBUILD_NAME | cut -d = -f 2 | tr -d '"' | tr -d "'"
+ fi
+
+}
+
+# ----------------------------------------------------------------
+
+#=============================
+# Main Program
+#=============================
+
+# Common functions
+COMMON_SH="/usr/libexec/simplepkg/common.sh"
+PROG_VERSION="`echo '$Rev$' | sed -e 's/[^0-9]//g'`"
+BASENAME="`basename $0`"
+WORK=`pwd`
+LANG=en_US
+EXIT_CODE=0
+
+if [ -f "$COMMON_SH" ]; then
+ source $COMMON_SH
+else
+ echo $error "$BASENAME: file $COMMON_SH not found. Check your $BASENAME installation"
+fi
+
+# Start constants
+set_constants
+
+# Set submit off
+SUBMIT_SLACKBUILD=$off
+SUBMIT_MKBUILD=$off
+# Set verbose off
+VERBOSE=$off
+SVN_MOD=$off
+
+# Load /etc/simplepkg/simplepkg.conf parameters
+load_parameters
+
+# Select color mode: gray, color or none (*)
+color_select $COLOR_MODE
+
+# Auxiliar file
+AUX_TMP=/tmp/mkbuild_tmp.$RANDOM
+DIFF_FILE=/tmp/mkbuild.diff.$RANDOM
+# Derectory to SlackBuild models
+MODEL_DIR=${MODEL_DIR:="/etc/simplepkg/defaults/mkbuild"}
+# SlackDesk line length
+SLACKDESC_LEN=78
+
+# Load error codes
+error_codes
+
+[ $# -eq 0 ] && mkbuild_use && exit 1
+
+# Configure input parameters
+set_parameters "$@"
+
+verbose -e "$BASENAME version $PROG_VERSION\n"
+case $ACTION in
+ 'update_manifest')
+ shift
+ update_manifest $*
+ ;;
+ 'commit_slackbuild')
+ shift 2
+ commit_changes $SLACKBUILDS_DIR $MKBUILD_BASENAME: $*
+ ;;
+ 'commit_mkbuild')
+ shift 2
+ commit_changes $MKBUILDS_DIR $MKBUILD_BASENAME: $*
+ ;;
+ 'commit_all')
+ shift 2
+ commit_changes $SLACKBUILDS_DIR $MKBUILD_BASENAME: $*
+ commit_changes $MKBUILDS_DIR $MKBUILD_BASENAME: $*
+ ;;
+ 'import_slackbuilds')
+ shift
+ import_slackbuilds $*
+ ;;
+ 'import_mkbuilds')
+ shift
+ import_mkbuilds $*
+ ;;
+ 'import_all')
+ shift
+ import_mkbuilds $*
+ import_slackbuilds $*
+ ;;
+ 'delete_slackbuild')
+ delete_slackbuild
+ ;;
+ 'delete_mkbuild')
+ delete_mkbuild
+ ;;
+ 'delete_all')
+ delete_mkbuild
+ delete_slackbuild
+ ;;
+ 'new')
+ create_mkbuild
+ ;;
+ 'build')
+ make_slackbuild
+ ;;
+ 'search')
+ search_mkbuild -i
+ ;;
+ 'status')
+ repository_status
+ ;;
+ 'list')
+ list_mkbuild_contents
+ ;;
+ 'edit')
+ edit_mkbuild
+ ;;
+ 'working_copy')
+ working_copy
+ ;;
+ 'get_param')
+ shift 2
+ get_param $*
+ ;;
+esac
+
+# Clear temporary files
+verbose -e "\nRemove temporary files ..."
+clear_files
+exit $EXIT_CODE
diff --git a/tags/0.6rc1/src/mkjail b/tags/0.6rc1/src/mkjail
new file mode 100755
index 0000000..4b00c38
--- /dev/null
+++ b/tags/0.6rc1/src/mkjail
@@ -0,0 +1,115 @@
+#!/bin/bash
+#
+# mkjail: chroot jail maker
+# feedback: rhatto at riseup.net | GPL
+#
+# Mkjail is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Mkjail is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# $Rev$ - $Author$
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+function usage {
+
+ echo "usage: [ARCH=arch] [VERSION=version] [ROOT=/otherroot] $BASENAME <jail-name> [template]"
+ exit 1
+
+}
+
+function exec_post_install_scripts {
+
+ # exec post installation scripts
+ # usage: exec_post_install_script <jail-root> <jail-name>
+
+ local list
+
+ if [ -z "$2" ]; then
+ return 1
+ fi
+
+ echo "$BASENAME: executing template scripts..."
+ if [ -d "`template_scripts`" ]; then
+ for file in `template_scripts`/*; do
+ if [ -x "$file" ]; then
+ $file $1 $2
+ fi
+ done
+ fi
+
+}
+
+function jailist_update {
+
+ # update the jail list file
+ # usage: jailist_update <jail-path>
+
+ if [ "$ADD_TO_JAIL_LIST" == "1" ]; then
+ touch $JAIL_LIST
+ if ! grep -q -e "^$1\$" $JAIL_LIST; then
+ echo $1 >> $JAIL_LIST
+ fi
+ fi
+
+}
+
+if [ -z "$1" ]; then
+ usage
+else
+ server="$1"
+ eval_config $BASENAME -u
+fi
+
+if [ ! -z "$2" ]; then
+ search_template $2
+ result="$?"
+else
+ search_default_template
+ result="$?"
+fi
+
+if [ "$result" != "0" ]; then
+ exit 1
+fi
+
+TEMPLATE="`template_packages`"
+
+if [ ! -d "$JAIL_ROOT/$server" ]; then
+ mkdir -p $JAIL_ROOT/$server
+else
+ if [ ! -z "`ls $JAIL_ROOT/$server | grep -v 'lost+found'`" ]; then
+ echo $BASENAME: error: folder $JAIL_ROOT/$server already exists and seens to be not empty
+ echo $BASENAME: probably the jail $1 already exists
+ exit 1
+ fi
+fi
+
+echo "Instaling packages into $JAIL_ROOT/$server..."
+echo "Using template $TEMPLATE."
+
+install_packages
+copy_template_files $JAIL_ROOT/$server
+set_jail_perms $JAIL_ROOT/$server
+jailist_update $JAIL_ROOT/$server
+exec_post_install_scripts $JAIL_ROOT $server
+
+echo $BASENAME: done creating $server jail
+
diff --git a/tags/0.6rc1/src/mkpatch b/tags/0.6rc1/src/mkpatch
new file mode 100644
index 0000000..27d2720
--- /dev/null
+++ b/tags/0.6rc1/src/mkpatch
@@ -0,0 +1,144 @@
+#!/bin/bash
+#
+# mkpatch: Simple patch program to .mkbuild models
+# feedback: rudsonaalves at yahoo.com.br | gpl
+#
+# mkbuild is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# Input:
+# - $1 Diff_File
+# - #2 Source_File
+#
+# Version:
+PROG_VERSION=1.1
+BASENAME=`basename $0`
+
+function get_line {
+
+ # get a line $1 from file $2
+ [ $# -ne 2 ] && exit $ERROR_PAR_NUMBER
+ ! is_number $1 && exit $ERROR_NOT_NUMBER
+ [ ! -e $2 ] && exit $ERROR_FILE_NOTFOUND
+
+ sed "$1 q;d" $2
+}
+
+function get_diff_line {
+
+ # get diff line e return:
+ # - Action in Diff_Action
+ # - Diff Line in Diff_Str_Line
+ if [ $1 -gt $Diff_N_Lines ]; then
+ Diff_Action=" "
+ Diff_Str_Line=""
+ return 0
+ fi
+ Line=`get_line $1 $2`
+ Diff_Action=`echo "$Line" | cut -c1`
+ Diff_Str_Line=`echo "$Line" | cut -c2-`
+}
+
+
+# ----------------------------------------------------------------
+# ------------------- mkpatch program ----------------------------
+# common.sh library start
+COMMON_SH="/usr/libexec/simplepkg/common.sh"
+if [ -f "$COMMON_SH" ]; then
+ source $COMMON_SH
+else
+ echo $error "$BASENAME: file $COMMON_SH not found. Check your $BASENAME installation"
+fi
+# Load error codes
+error_codes
+# ----------------
+
+if [ "$1" = "--help" -o "$1" = "-h" ]; then
+ echo "Use: $BASENAME <diff_file> <source_file>"
+ exit $ERROR_HELP
+fi
+
+# Check input parameters
+[ $# -ne 2 ] && exit $ERROR_PAR_NUMBER
+[ ! -e $1 ] && exit $ERROR_FILE_NOTFOUND
+[ ! -e $2 ] && exit $ERROR_FILE_NOTFOUND
+
+# Start variables
+Diff_File=$1
+Source_File=$2
+Diff_N_Lines=`wc -l $1 | cut -f1 -d" "`
+Source_N_Lines=`wc -l $2 | cut -f1 -d" "`
+
+# Start vars
+Diff_Line=1
+Diff_Pointer=1
+Status_Diff=0
+
+# Get frist Diff_File line
+get_diff_line $Diff_Line $Diff_File || exit $?
+
+Source_Line=1
+# Get frist Source_File line
+Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
+while [ $Source_Line -le $Source_N_Lines ]; do
+ # make Actions
+ case $Diff_Action in
+ '-')
+ if [ "$Source_Str_Line" = "$Diff_Str_Line" ]; then
+ Status_Diff=1
+ let Diff_Line++
+ else
+ Diff_Line=$Diff_Pointer
+ Status_Diff=0
+ echo "$Source_Str_Line"
+ fi
+ get_diff_line $Diff_Line $Diff_File || exit $?
+ let Source_Line++
+ Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
+ ;;
+ '+')
+ echo "$Diff_Str_Line"
+ let Diff_Line++
+ get_diff_line $Diff_Line $Diff_File || exit $?
+ ;;
+ ' ')
+ if [ "$Source_Str_Line" = "$Diff_Str_Line" ]; then
+ Status_Diff=1
+ let Diff_Line++
+ else
+ Status_Diff=0
+ Diff_Line=$Diff_Pointer
+ fi
+ echo "$Source_Str_Line"
+ get_diff_line $Diff_Line $Diff_File || exit $?
+ let Source_Line++
+ Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
+ ;;
+ '=')
+ let Diff_Line++
+ Status_Diff=0
+ Diff_Pointer=$Diff_Line
+ get_diff_line $Diff_Line $Diff_File || exit $?
+ ;;
+ *)
+ echo "Invalid diff action."
+ exit $ERROR_MKPATCH
+ ;;
+ esac
+done
+
+# Make others addline "+" in the end file
+while [ "$Diff_Action" = "+" -a $Diff_Line -le $Diff_N_Lines ]; do
+ echo "$Diff_Str_Line"
+ let Diff_Line++
+ get_diff_line $Diff_Line $Diff_File || exit $?
+done
diff --git a/tags/0.6rc1/src/rebuildpkg b/tags/0.6rc1/src/rebuildpkg
new file mode 100755
index 0000000..6d3d10c
--- /dev/null
+++ b/tags/0.6rc1/src/rebuildpkg
@@ -0,0 +1,87 @@
+#!/bin/bash
+#
+# rebuildpkg: build a package from a /var/log/packages entry
+#
+# feedback: rhatto at riseup.net | gpl
+#
+# Rebuildpkg is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Rebuildpkg is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+TMP="/tmp"
+
+function usage {
+ echo "usage: ROOT=/otherroot `basename $0` <package-name>"
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$1" ]; then
+ usage
+ exit 1
+fi
+
+pack="$1"
+
+for file in `ls $ROOT/var/log/packages/$pack*`; do
+ if [[ "`package_name $file.tgz`" == "$pack" ]]; then
+ package_file="$file"
+ break
+ fi
+done
+
+if [ -z "$package_file" ]; then
+ echo error: package $pack does not exist
+ exit 1
+fi
+
+if [ -d "$TMP/package-$pack" ]; then
+ rm -rf $TMP/package-$pack
+fi
+
+mkdir $TMP/package-$pack
+cd $TMP/package-$pack
+
+for file in `grep -v -e "^PACKAGE NAME:" -e "^UNCOMPRESSED PACKAGE SIZE:" \
+ -e "^COMPRESSED PACKAGE SIZE:" -e "^PACKAGE LOCATION:" \
+ -e "^PACKAGE DESCRIPTION:" -e "^$pack:" -e "^FILE LIST:" $package_file`; do
+
+ if [ "$file" != "install" ] && [ "$file" != "install/slack-desc" ] && [ "$file" != "install/doinst,sh" ]; then
+ if [ -d /$file ]; then
+ mkdir -p $TMP/package-$pack/$file
+ elif [ -f /$file ]; then
+ cp /$file $TMP/package-$pack/$file
+ else
+ echo file /$file was not found, please add it manually, exploding and making the package again
+ fi
+ fi
+
+done
+
+mkdir $TMP/package-$pack/install
+grep "^$pack:" $package_file > $TMP/package-$pack/install/slack-desc
+
+package_name="`grep "PACKAGE NAME:" $package_file | awk '{ print $3 }'`"
+
+if [ -f "$ROOT/var/log/scripts/$package_name" ]; then
+ cp $ROOT/var/log/scripts/$package_name $TMP/package-$pack/install/doinst.sh
+fi
+
+makepkg $package_name.tgz
+mv $package_name.tgz $TMP/
+echo "done: package rebuilt and stored at $TMP/$package_name.tgz"
diff --git a/tags/0.6rc1/src/simplaret b/tags/0.6rc1/src/simplaret
new file mode 100755
index 0000000..04281f2
--- /dev/null
+++ b/tags/0.6rc1/src/simplaret
@@ -0,0 +1,1185 @@
+#!/bin/bash
+#
+# simplaret: simplepkg's retrieval tool
+# feedback: rhatto at riseup.net | gpl
+#
+# Simplaret is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Simplaret is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# $Rev$ - $Author$
+#
+
+BASENAME="`basename $0`"
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+if [ -f "$HOME/.simplepkg/repos.conf" ]; then
+ REPOS_CONF="$HOME/.simplepkg/repos.conf"
+elif [ -f "/etc/simplepkg/repos.conf" ]; then
+ REPOS_CONF="/etc/simplepkg/repos.conf"
+else
+ REPOS_CONF="/etc/simplepkg/defaults/repos.conf"
+fi
+
+function simplaret_usage {
+
+ echo "usage: [ARCH=otherarch] [VERSION=otherversion] $BASENAME [OPTION] package-name"
+ echo -e "\t OPTIONS: --help, --install, --update (or --sync), --upgrade, --search, --get, --get-patches, --purge, --remove"
+ exit 1
+
+}
+
+function simplaret_get_index {
+
+ for file in `simplaret_metafiles`; do
+ simplaret_download $1 $file $2 --no-verbose
+ done
+
+}
+
+function simplaret_backup_index {
+
+ for file in `simplaret_metafiles`; do
+ if [ -f "$1/$file" ]; then
+ mv $1/$file $1/$file.old
+ fi
+ done
+
+}
+
+function simplaret_check_index {
+
+ for file in `simplaret_metafiles`; do
+ if [ ! -f "$1/$file" ] && [ -f "$1/$file.old" ]; then
+ echo Restoring old $file to $1...
+ mv $1/$file.old $1/$file
+ else
+ rm -f $1/$file.old
+ fi
+ done
+
+}
+
+function simplaret_import_gpg_keys {
+
+ if [ "$SIGNATURE_CHECKING" == "$on" ]; then
+ check_gnupg
+ if [ -f "$1/GPG-KEY" ] && [ -f "$1/GPG-KEY.old" ]; then
+ if ! diff $1/GPG-KEY $1/GPG-KEY.old &> /dev/null; then
+ gpg --import < $1/GPG-KEY
+ fi
+ elif [ -f "$1/GPG-KEY" ]; then
+ gpg --import < $1/GPG-KEY
+ fi
+ fi
+
+}
+
+function simplaret_download {
+
+ # download a file from a repo to a folder
+ # usage: simplaret <repository_url> <package> <destination-folder> [--no-verbose]
+
+ local protocol file
+ local wget_timeout wget_passive_ftp wget_verbose
+ local curl_timeout curl_passive_ftp curl_verbose
+ local ncftpget_timeout ncftpget_passive_ftp
+
+ protocol="`echo $1 | cut -d : -f 1 | tr '[:upper:]' '[:lower:]'`"
+ file="`basename $2`"
+
+ if [ ! -d "$3" ]; then
+ mkdir -p $3
+ fi
+
+ if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
+ wget_timeout="--timeout $CONNECT_TIMEOUT"
+ ncftpget_timeout="-t $CONNECT_TIMEOUT"
+ curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
+ fi
+
+ if [ "$4" == "--no-verbose" ]; then
+ wget_verbose="--no-verbose"
+ curl_verbose="-#"
+ echo ""
+ fi
+
+ if [ "$protocol" == "http" ] || [ "$protocol" == "https" ]; then
+
+ echo Getting $1/$2:
+ if [ "$HTTP_TOOL" == "wget" ]; then
+ wget $wget_timeout $wget_verbose $1/$2 -O $3/$file
+ elif [ "$HTTP_TOOL" == "curl" ]; then
+ curl $curl_timeout $curl_verbose $1/$2 > $3/$file
+ else
+ echo $BASENAME: error: invalid value for config variable HTTP_TOOL: $HTTP_TOOL
+ echo $BASENAME: please check your config file $CONF
+ exit 1
+ fi
+
+ elif [ "$protocol" == "ftp" ]; then
+ echo Getting $1/$2:
+
+ if [ "$PASSIVE_FTP" == "1" ]; then
+ wget_passive_ftp="--passive-ftp"
+ ncftpget_passive_ftp="-F"
+ curl_passive_ftp="--ftp-pasv"
+ fi
+
+ if [ "$FTP_TOOL" == "ncftpget" ]; then
+ ncftpget -c $ncftpget_timeout $ncftpget_passive_ftp $1/$2 > $3/$file
+ elif [ "$FTP_TOOL" == "wget" ]; then
+ wget $wget_timeout $wget_passive_ftp $wget_verbose $1/$2 -O $3/$file
+ elif [ "$FTP_TOOL" == "curl" ]; then
+ curl $curl_timeout $curl_passive_ftp $curl_verbose $1/$2 > $3/$file
+ else
+ echo $BASENAME: error: invalid value for config variable FTP_TOOL: $FTP_TOOL
+ echo $BASENAME: please check your config file $CONF
+ exit 1
+ fi
+
+ elif [ "$protocol" == "file" ]; then
+
+ url="`echo $1 | sed -e 's/file:\/\///'`"
+ if [ -f "$3/$file" ]; then
+ rm -f $3/$file
+ fi
+ echo -n "Copying $url/$2..."
+ if [ -f "$url/$2" ]; then
+ cp $url/$2 $3/$file 2> /dev/null
+ fi
+ if [ -f "$3/$file" ]; then
+ echo " done."
+ else
+ echo " failed."
+ fi
+
+ else
+
+ echo $BASENAME error: invalid protocol $protocol
+
+ fi
+
+}
+
+function simplaret_repository {
+
+ # return repository definitions from $REPOS_CONF file
+ # usage: simplaret_repository [root|repos|noarch|patches]
+
+ local definition
+
+ if [ -z "$1" ]; then
+ definition="ROOT"
+ else
+ definition="`echo $1 | tr '[:lower:]' '[:upper:]'`"
+ fi
+
+ if [ "$definition" == "REPOS" ] || [ "$definition" == "PATCHES" ]; then
+ definition="$definition-$ARCH-$VERSION"
+ elif [ "$definition" == "ROOT" ]; then
+ definition="$definition-$ARCH"
+ fi
+
+ grep -e "^$definition=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1
+
+}
+
+function simplaret_repository_name {
+
+ # return a repository name according the value of $repository
+
+ if [ -z "$repository" ]; then
+ false
+ elif echo $repository | grep -qe %; then
+ repository_name="`echo $repository | cut -d % -f 1`"
+ if [ -z "$repository_name" ]; then
+ echo $BASENAME: you should set a name for the repository $repository
+ echo $BASENAME: please correct your $REPOS_CONF
+ exit 1
+ fi
+ else
+ echo $BASENAME: you should set a name for the repository $repository
+ echo $BASENAME: please correct your $REPOS_CONF
+ exit 1
+ fi
+
+}
+
+function simplaret_repository_url {
+
+ # return a repository url according the value of $repository
+
+ if echo $repository | grep -qe %; then
+ repository_url="`echo $repository | cut -d % -f 2`"
+ if [ -z "$repository_url" ]; then
+ echo $BASENAME: you should set a url for the repository $repository
+ echo $BASENAME: please correct your $REPOS_CONF
+ exit 1
+ fi
+ else
+ echo $BASENAME: you should set a url for the repository $repository
+ echo $BASENAME: please correct your $REPOS_CONF
+ exit 1
+ fi
+
+ if [ "$repos_type" == "root" ]; then
+ simplaret_set_arch
+ repository_url="$repository_url/`basename $repository_url`-$VERSION/"
+ fi
+
+}
+
+function simplaret_set_storage_folder {
+
+ storage="$STORAGE/$ARCH/$VERSION/$repos_type"
+ if [ "$repos_type" == "noarch" ]; then
+ storage="$STORAGE/noarch"
+ elif [ "$repos_type" == "patches" ]; then
+ storage="$PATCHES_DIR/$ARCH/$VERSION"
+ fi
+
+}
+
+function simplaret_update {
+
+ local storage
+
+ echo Updating package information for arch $ARCH and version $VERSION...
+
+ for repos_type in patches root repos noarch; do
+
+ simplaret_set_storage_folder
+
+ for repository in `simplaret_repository $repos_type`; do
+
+ simplaret_repository_name
+ simplaret_repository_url
+
+ if [ ! -d "$storage/$repository_name" ]; then
+ mkdir -p $storage/$repository_name
+ else
+ simplaret_backup_index $storage/$repository_name
+ fi
+
+ simplaret_get_index $repository_url $storage/$repository_name
+ simplaret_import_gpg_keys $storage/$repository_name
+ simplaret_check_index $storage/$repository_name
+
+ unset repository_name repository_url repository_protocol
+
+ done
+ done
+
+}
+
+function simplaret_find_package {
+
+ # grep packages in a repository's file list
+ # usage: simplaret_find_package <package-name|-all> <repository-folder>
+
+ if [ "$1" == "-all" ]; then
+ grep -e ".tgz$" $2/`simplaret_filelist` | awk '{ print $8 }'
+ else
+ grep $1 $2/`simplaret_filelist` | awk '{ print $8 }' | grep -e ".tgz$"
+ fi
+
+}
+
+function simplaret_show_package {
+
+ # print a package result
+ # usage: simplaret_show_package <package-file-name> [--basename-only|--filename-only|--formatted]
+
+ if [ "$2" == "--basename-only" ]; then
+ echo `basename $1`
+ elif [ "$2" == "--filename-only" ]; then
+ echo $1
+ elif [ "$2" == "--formatted" ]; then
+ echo $1,$repos_type,$repository
+ else
+ if echo $1 | grep -q "/patches/"; then
+ patch="(patch)"
+ fi
+ if [ "$repos_type" == "noarch" ]; then
+ echo $name repository $repository_name: `basename $1` $patch
+ else
+ echo $name repository $repository_name, arch: $ARCH, version: $VERSION: `basename $1` $patch
+ fi
+ fi
+ unset patch
+
+}
+
+function simplaret_filelist {
+
+ if [ "$repos_type" == "patches" ]; then
+ echo FILE_LIST
+ else
+ echo FILELIST.TXT
+ fi
+
+}
+
+function simplaret_metafiles {
+
+ if [ "$SIGNATURE_CHECKING" == "$on" ]; then
+ echo `simplaret_filelist` CHECKSUMS.md5 GPG-KEY
+ else
+ echo `simplaret_filelist` CHECKSUMS.md5
+ fi
+
+}
+
+function simplaret_search {
+
+ # search packages
+ # usage: simplaret_search [package-name] [-display_mode]
+ # display_mode can be any accepted by simplaret_show_package
+
+ local priority priority_match message pattern mode
+
+ if [ ! -z "$1" ] && ! echo $1 | grep -q -e "^-"; then
+ pattern="$1"
+ mode="$2"
+ else
+ pattern="-all"
+ mode="$1"
+ fi
+
+ for repos_type in patches root repos noarch; do
+
+ name="`echo $repos_type | tr '[:lower:]' '[:upper:]'`"
+ simplaret_set_storage_folder
+
+ for repository in `simplaret_repository $repos_type`; do
+
+ simplaret_repository_name
+
+ if [ ! -f "$storage/$repository_name/`simplaret_filelist`" ]; then
+ if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+ if [ "$repos_type" == "noarch" ]; then
+ message=""
+ else
+ message="on arch $ARCH version $VERSION"
+ fi
+ echo warning: no file list for $repository_name repository $repository_name $message
+ echo please do a simplaret --update
+ fi
+ else
+
+ if [ "$repos_type" == "root" ]; then
+ # root repositories has ROOT_PRIORITY
+ for priority in $ROOT_PRIORITY; do
+ for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
+ simplaret_show_package $file $mode
+ done
+ priority_match="$priority_match|/$priority/"
+ done
+ # now we should return all matches that are not part of ROOT_PRIORITY
+ priority_match="`echo $priority_match | sed -e 's/^|//'`"
+ for file in `simplaret_find_package $pattern $storage/$repository_name | grep -E -v $priority_match`; do
+ simplaret_show_package $file $mode
+ done
+ priority_match=""
+ elif [ "$repos_type" == "repos" ]; then
+ # repos repositories has REPOS_PRIORITY
+ for priority in $REPOS_PRIORITY; do
+ for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
+ simplaret_show_package $file $mode
+ done
+ priority_match="$priority_match|/$priority/"
+ done
+ # now we should return all matches that are not part of REPOS_PRIORITY
+ priority_match="`echo $priority_match | sed -e 's/^|//'`"
+ for file in `simplaret_find_package $pattern $storage/$repository_name | grep -E -v $priority_match`; do
+ simplaret_show_package $file $mode
+ done
+ priority_match=""
+ else
+ for file in `simplaret_find_package $pattern $storage/$repository_name`; do
+ simplaret_show_package $file $mode
+ done
+ fi
+
+ fi
+
+ done
+ done
+
+}
+
+function simplaret_purge {
+
+ # purge simplaret package cache
+ # usage: simplaret_purge [-w N]
+
+ local mtime mtime_message which and_patches
+
+ if [ "$1" == "-w" ] && [ ! -z "$2" ]; then
+ mtime="-mtime +`echo "$2*7" | bc -l`"
+ mtime_message="older than $2 weeks"
+ elif [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
+ mtime="-mtime +`echo "$SIMPLARET_PURGE_WEEKS*7" | bc -l`"
+ mtime_message="older than $SIMPLARET_PURGE_WEEKS weeks"
+ else
+ mtime=""
+ mtime_mesage=""
+ fi
+
+ which="root repos noarch"
+ and_patches=""
+
+ if [ "$SIMPLARET_PURGE_PATCHES" == "1" ]; then
+ which="patches $which"
+ and_patches="including patches"
+ fi
+
+ if [ -z "$SILENT" ]; then
+ if [ -z "$mtime_message" ]; then
+ echo "$BASENAME: purging all packages for:"
+ else
+ echo "$BASENAME: purging all packages $mtime_message for:"
+ fi
+ echo -e "\t- Arch $ARCH and version $VERSION $and_patches"
+ echo -e "\t- Noarch folder"
+ fi
+
+ for repos_type in $which; do
+
+ simplaret_set_storage_folder
+
+ for file in `find $storage/ $mtime 2> /dev/null`; do
+ for extension in tgz asc meta txt slack-required; do
+ if echo $file | grep -qe ".$extension$"; then
+ rm $file
+ fi
+ done
+ done
+
+ done
+
+ if [ -z "$SILENT" ]; then
+ echo $BASENAME: done purging simplaret cache
+ echo $BASENAME: please run $BASENAME --update to retrieve new package listings on this arch and version
+ fi
+
+}
+
+function simplaret_search_and_delete {
+
+ # search and delete packages
+ # usage: simplaret_search_and_delete <package> <folder> [--silent]
+
+ local file candidate place basename name version build
+ local name_version name_build
+
+ name="`package_name $1`"
+
+ if [ "$name" != "$1" ]; then
+ # searching by full package filename
+ name_version="`package_version $1`"
+ name_build="`package_build $1`"
+
+ # search wheter the package filename is in the repositories
+ if [ "`simplaret_search $1 | grep $1 | wc -l`" == "0" ]; then
+ echo "Error: package not found: $1"
+ return 1
+ fi
+
+ for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+ candidate="`basename $file`"
+ version="`package_version $candidate`"
+ build="`package_build $candidate`"
+ if [ "`package_name $candidate`" == "$name" ]; then
+
+ if [ "$name_version" == "$version" ] && \
+ [ "$name_build" == "$build" ]; then
+ LAST_DOWNLOADED_PACKAGE="$file"
+ if [ "$3" != "--silent" ]; then
+ echo Package $candidate already downloaded
+ # echo Package $candidate stored at `dirname $file`
+ else
+ true
+ # echo $file
+ fi
+ return 1
+ else
+ place="`dirname $file`"
+ basename="`basename $file tgz`"
+ rm -f $file
+ rm -f $place/$candidate.slack-required
+ rm -f $file.asc $place/$basename.meta $place/$basename.txt
+ break
+ fi
+
+ fi
+ done
+
+ else
+
+ for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+ candidate="`basename $file`"
+ version="`package_version $candidate`"
+ build="`package_build $candidate`"
+ if [ "`package_name $candidate`" == "$name" ]; then
+ # check if has the same version and build number, otherwise erase the old one
+ for result in `simplaret_search $(package_name $candidate) --basename-only`; do
+ if [ "`package_name $candidate`" == "`package_name $result`" ]; then
+
+ if [ "$version" == "`package_version $result`" ] && \
+ [ "$build" == "`package_build $result`" ]; then
+ LAST_DOWNLOADED_PACKAGE="$file"
+ if [ "$3" != "--silent" ]; then
+ echo Package $candidate already downloaded
+ # echo Package $candidate stored at `dirname $file`
+ else
+ true
+ # echo $file
+ fi
+ return 1
+ else
+ place="`dirname $file`"
+ basename="`basename $file tgz`"
+ rm -f $file
+ rm -f $place/$candidate.slack-required
+ rm -f $file.asc $place/$basename.meta $place/$basename.txt
+ break
+ fi
+
+ fi
+ done
+ fi
+ done
+
+ fi
+
+}
+
+function simplaret_get {
+
+ # get a package
+ # usage: simplaret_get <package-name|package-file-name> [--silent]
+
+ local silent generate_patches search search_results
+ local name version build
+
+ # prevent user to stay in $storage
+ cd
+
+ name="`package_name $1`"
+
+ if [ "$name" != "$1" ]; then
+ # simplaret_get was called with the package file
+ # name and not with just the package name
+ version="`package_version $1`"
+ build="`package_build $1`"
+ else
+ version=""
+ build=""
+ fi
+
+ # first search for an already downloaded package
+ for repos_type in patches root repos noarch; do
+
+ simplaret_set_storage_folder
+ simplaret_search_and_delete $1 $storage $2
+
+ if [ "$?" == "1" ]; then
+ return 0
+ fi
+
+ done
+
+ # then search for the package in the repositories
+ search="`simplaret_search $1 --formatted`"
+ search_results="`echo "$search" | wc -l`"
+
+ for result in $search; do
+
+ # remaining search results
+ let search_results--
+
+ file="`echo $result | cut -d , -f 1`"
+ repos_type="`echo $result | cut -d , -f 2`"
+ repository="`echo $result | cut -d , -f 3`"
+
+ simplaret_set_storage_folder
+ simplaret_repository_name
+
+ candidate="`basename $file`"
+ if [ "`package_name $candidate`" == "$name" ]; then
+
+ if [ ! -z "$build" ] && [ ! -z "$version" ]; then
+ # simplaret_get was called with the package file
+ # name and not with just the package name
+ if [ "$version" != "`package_version $candidate`" ] && \
+ [ "$build" != "`package_build $candidate`" ]; then
+ # the package version and/or build doesnt matched
+ # the desired one
+ continue
+ fi
+ fi
+
+ simplaret_repository_url
+
+ # if repos_type == root, the package is a patch and
+ # STORE_ROOT_PATCHES_ON_PATCHES_DIR config parameter is enabled, then
+ # save it on $PATCHES_DIR/root-$repository_name, so all patches
+ # are placed in the same tree
+ if [ "$repos_type" == "root" ] && \
+ [ "$STORE_ROOT_PATCHES_ON_PATCHES_DIR" == "1" ] && echo $file | grep -q "patches"; then
+ folder="$PATCHES_DIR/$ARCH/$VERSION/root-$repository_name"
+ generate_patches="1"
+ else
+ folder="$storage/$repository_name"
+ fi
+
+ # download the package
+ simplaret_download $repository_url $file $folder
+
+ if [ -f "$folder/$candidate.asc" ]; then
+ rm $folder/$candidate.asc
+ fi
+
+ if [ -f "$folder/$name.slack-required" ]; then
+ rm $folder/$name.slack-required
+ fi
+
+ # download the signature, if exist
+ if simplaret_check_url $repository_url/$file.asc; then
+ simplaret_download $repository_url $file.asc $folder
+ fi
+
+ # download slack-required, if exist
+ if simplaret_check_url $repository_url/`dirname $file`/$name.slack-required; then
+ simplaret_download $repository_url `dirname $file`/$name.slack-required $folder
+ fi
+
+ if [ ! -f "$folder/$candidate" ]; then
+ LAST_DOWNLOADED_PACKAGE="0"
+ if [ "$2" != "--silent" ]; then
+ echo Error downloading $candidate from $repos_type repository $repository_url, please check your settings
+ fi
+ # check if there's also more repositories to try
+ if [ "$SIMPLARET_DOWNLOAD_FROM_NEXT_REPO" != "1" ]; then
+ return 1
+ else
+ if [ "$2" != "--silent" ]; then
+ echo Trying to fetch $candidate from the next repository...
+ fi
+ if (($search_results <= 0)); then
+ return 1
+ fi
+ fi
+ else
+ LAST_DOWNLOADED_PACKAGE="$folder/$candidate"
+ if [ "$2" != "--silent" ]; then
+ silent=""
+ echo Package $candidate stored at $folder
+ else
+ # echo $folder/$candidate
+ silent="--silent"
+ fi
+ if [ "$SIGNATURE_CHECKING" == "$on" ]; then
+ if [ -f "$folder/$candidate.asc" ]; then
+ gpg --verify $folder/$candidate.asc $folder/$candidate
+ if [ "$?" != "0" ]; then
+ echo "Package signature does not match. Removing package."
+ rm -f $folder/$candidate.asc $folder/$candidate
+ LAST_DOWNLOADED_PACKAGE=""
+ return 1
+ fi
+ else
+ echo "Missing signature. Removing package."
+ rm -f $folder/$candidate.asc $folder/$candidate
+ LAST_DOWNLOADED_PACKAGE=""
+ return 1
+ fi
+ fi
+ # generate the patches FILE_LIST and PACKAGES.TXT if needed
+ if [ "$generate_patches" == "1" ]; then
+ gen_patches_filelist $folder
+ gen_packages_txt $folder
+ gen_md5_checksums $folder
+ fi
+ simplaret_checksum $storage/$repository_name/CHECKSUMS.md5 $folder/$candidate $silent
+ return $?
+ fi
+
+ fi
+
+ done
+
+}
+
+function simplaret_search_and_process_patch {
+
+ local package_version package_build installed_version pack
+ local installed_build repos_type get is_patch package_match
+
+ # get just the file and package name
+ sugested_filename="`echo $sugested | cut -d , -f 1`"
+ sugested_pack="`package_name $sugested_filename`"
+
+ # search if its installed in the jail
+ if grep -q -e "^$sugested_pack$" $PACKAGES_TMP; then
+
+ # get the repository type
+ repos_type="`echo $sugested | cut -d , -f 2`"
+
+ if echo $sugested | grep -q "patches"; then
+ is_patch="yes"
+ else
+ is_patch="no"
+ fi
+
+ # now split the file name into pieces
+ package_version="`package_version $sugested_filename`"
+ package_build="`package_build $sugested_filename`"
+
+ # check if the patch was already downloaded
+ if echo "$DOWNLOADED_PATCHES" | grep -q " $ARCH:$VERSION:$sugested_pack "; then
+ #if [ "$IS_UPGRADE" != "1" ]; then
+ #echo Package $sugested_pack already downloaded
+ #echo "Jail $root needs package $sugested_pack (already downloaded, skipping)"
+ return
+ #fi
+ fi
+
+ pack="`echo $sugested_pack | sed -e 's/\+/\\\+/'`"
+ installed="`check_installed $pack $root`"
+ installed_version="`package_version $installed.tgz`"
+ installed_build="`package_build $installed.tgz`"
+
+ get="no"
+
+ # if needed, download the patch
+ if [ "$repos_type" == "patches" ]; then
+
+ if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+ get="yes"
+ package_match="no"
+ elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
+ get="yes"
+ fi
+
+ elif [ "$repos_type" == "root" ] && [ "$is_patch" == "yes" ]; then
+
+ if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+ get="yes"
+ package_match="no"
+ elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
+ get="yes"
+ fi
+
+ else
+ # here, we're dealing with repositories other than ROOT and REPOS,
+ # so we need to check if either version or build number are different,
+ # otherwise all installed packages would be downloaded
+ if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+ get="yes"
+ package_match="no"
+ fi
+ fi
+
+ # finally, get the package
+ if [ "$get" == "yes" ]; then
+ if [ "$IS_UPGRADE" == "1" ]; then
+ if [ "$package_match" == "no" ]; then
+ simplaret_install $sugested_pack
+ else
+ simplaret_get $sugested_pack
+ fi
+ else
+ simplaret_get $sugested_pack
+ fi
+ if [ "$?" == "0" ]; then
+ DOWNLOADED_PATCHES="$DOWNLOADED_PATCHES $ARCH:$VERSION:$sugested_pack " # the ending space is important
+ fi
+ fi
+
+ fi
+
+ unset get
+
+}
+
+function simplaret_get_jail_patches {
+
+ # get patches from a jail
+ # usage: simplaret_get_jail_patches <jail-folder>
+
+ local oldarch oldversion
+
+ if [ ! -z "$1" ]; then
+ root="$1"
+ else
+ root="/"
+ fi
+
+ # save current arch and version
+ oldarch="$ARCH"
+ oldversion="$VERSION"
+
+ ARCH="`default_arch $root`"
+ VERSION="`default_version $root`"
+
+ # in case there's something wrong with the jail, abort
+ if [ -z "$VERSION" ] || [ -z "$ARCH" ]; then
+ return
+ fi
+
+ # we need to do that for each arch/version pairs, but just once for each pair
+ if ! echo "$DISTRO_UPDATED" | grep -q " $ARCH:$VERSION "; then
+ simplaret_update
+ DISTRO_UPDATED="$DISTRO_UPDATED $ARCH:$VERSION " # the ending space is important
+ echo ""
+ fi
+
+ # installed packages at $root
+ PACKAGES_TMP=/tmp/simplaret_packages.$RANDOM
+ rm -f $PACKAGES_TMP ; touch $PACKAGES_TMP ; chmod 600 $PACKAGES_TMP
+ ls -1 $root/var/log/packages/ | sed -e 's/-[^-]*-[^-]*-[^-]*$//' > $PACKAGES_TMP
+
+ echo Fetching patches for arch $ARCH and version $VERSION for jail $root
+
+ # list all available patches from PATCHES and ROOT repositories
+ for sugested in `simplaret_search --formatted | grep patches | grep -v ",repos," | grep -v ",noarch,"`; do
+ simplaret_search_and_process_patch
+ done
+
+ # grab patches from every other places
+ if [ "$CONSIDER_ALL_PACKAGES_AS_PATCHES" == "1" ]; then
+
+ for sugested in `simplaret_search --formatted | grep patches | grep ",repos," | grep ",noarch,"`; do
+ simplaret_search_and_process_patch
+ done
+
+ for sugested in `simplaret_search --formatted | grep -v patches`; do
+ simplaret_search_and_process_patch
+ done
+
+ fi
+
+ rm $PACKAGES_TMP
+
+ # restore arch and version
+ ARCH="$oldarch"
+ VERSION="$oldversion"
+
+}
+
+function simplaret_get_patches {
+
+ local jailpath
+
+ if [ "$1" == "--upgrade" ]; then
+ IS_UPGRADE="1"
+ fi
+
+ if [ ! -z "$ROOT" ]; then
+ simplaret_get_jail_patches $ROOT
+ return $?
+ fi
+
+ # first get patches from the root system
+ simplaret_get_jail_patches
+
+ # then get the needed patches for each installed jail
+ if [ -s "$JAIL_LIST" ]; then
+ for jailpath in `cat $JAIL_LIST`; do
+ if [ -d "$jailpath/var/log/packages" ]; then
+ ROOT="$jailpath"
+ simplaret_get_jail_patches $jailpath
+ fi
+ done
+ fi
+
+ ROOT=""
+
+}
+
+function simplaret_checksum {
+
+ # simplaret_checksum <md5file> <file-name> [--silent]
+
+ if [ ! -f "$1" ] || [ ! -f "$2" ]; then
+ if [ "$3" != "--silent" ]; then
+ echo Checksum error: file not found
+ fi
+ return 1
+ fi
+
+ pack="`basename $2`"
+ checksum="`grep -e "$pack\$" $1 | awk '{ print $1 }'`"
+
+ if [ -z "$checksum" ]; then
+ echo file $2 not in checksum $1
+ return 1
+ elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then
+ if [ "$3" != "--silent" ]; then
+ echo Checksum mismatch for file `basename $file`
+ fi
+ return 1
+ else
+ if [ "$3" != "--silent" ]; then
+ echo Checksum ok for file `basename $file`
+ fi
+ return 0
+ fi
+
+}
+
+function simplaret_install {
+
+ # download and install a package
+ # usage: simplaret_install <package-name1|package-file-name1> ... [--skip-checks]
+
+ local package root jail_arch jail_version slack_required dep dependency tmp
+ local name version build
+
+ for package in $*; do
+
+ if [ "$package" == "--skip-checks" ]; then
+ continue
+ fi
+
+ name="`package_name $package`"
+
+ root="/$ROOT"
+ mkdir -p $root/var/log/setup/tmp
+
+ if [ "`echo $package | sed -e 's/\(..\).*/\1/g'`" == "--" ]; then
+ echo $BASENAME: install: syntax error: expected package name
+ return 1
+ fi
+
+ # now we check if ARCH and VERSION from the
+ # repository are the same of the jail
+ if ! echo $* | grep -q -- "--skip-checks"; then
+ jail_arch="`default_arch $root`"
+ jail_version="`default_version $root`"
+ if [ "$ARCH" != "$jail_arch" ]; then
+ echo "$BASENAME: requested repository arch ($ARCH) doesn't match jail arch ($jail_arch)"
+ echo "$BASENAME: please use \"$BASENAME --get $package --skip-checks\" to ignore this warning and install anyway"
+ return
+ elif [ "$VERSION" != "$jail_version" ]; then
+ echo "$BASENAME: requested repository version ($VERSION) doesn't match jail version ($jail_version)"
+ echo "$BASENAME: please use \"$BASENAME --get $package --skip-checks\" to ignore this warning and install anyway"
+ return 1
+ fi
+ fi
+
+ # package="`simplaret_get $package --silent`"
+ simplaret_get $package --silent
+ package="$LAST_DOWNLOADED_PACKAGE"
+
+ if [ "$package" != "0" ] && [ ! -z "$package" ]; then
+ slack_required="`dirname $package`/$name.slack-required"
+ if [ -f "$package" ]; then
+
+ if [ -f "$slack_required" ] && [ "$DEPENDENCY_CHECKING" == "1" ]; then
+ # TODO: check dependency versions
+ # this routine checks for dependencies in package's slack-required
+ # procedure adapted from createpkg script
+ ( grep -v '^#' $slack_required | awk '{ print $1 }' | while read dep; do
+ if [ ! -z "$dep" ]; then
+ dependency="`echo $dep | awk '{ print $package }'`"
+ simplaret_solve_dep $name $dependency $root
+ fi
+ true
+ done )
+ fi
+
+ ROOT=$root upgradepkg --install-new $package
+ LAST_DOWNLOADED_PACKAGE="0"
+
+ else
+ echo "Error: could not install package $package: file not found"
+ LAST_DOWNLOADED_PACKAGE="0"
+ return 1
+ fi
+ else
+ echo "Error: could not install package $package"
+ LAST_DOWNLOADED_PACKAGE="0"
+ return 1
+ fi
+
+ done
+
+}
+
+function simplaret_set_arch {
+
+ # set correct value for ARCH
+
+ local repos_type new_arch
+
+ # any arch defined in ARCH_i486 that hasn't an entry
+ # on $REPOS_CONF will be mapped to i486
+
+ ARCH_i486=" nocona prescott pentium4m pentium4 pentium-m pentium3m pentium3 "
+ ARCH_i486="$ARCH_i486 pentium2 i686 pentium-pro i586 pentium-mmx pentium i486 "
+ ARCH_i486="$ARCH_i486 athlon-mp athlon-xp athlon4 athlon-tbird athlon k6 k6-2 "
+ ARCH_i486="$ARCH_i486 k6-3 winchip-c6 winchip2 c3 c3-2 "
+
+ # any arch defined in ARCH_x86_64 that hasn't an entry
+ # on $REPOS_CONF will be mapped to x86_64
+
+ ARCH_x86_64=" k8 opteron athlon64 athlon-fx x86_64 "
+
+ for repos_type in patches root repos noarch; do
+ if [ -z "`simplaret_repository $repos_type`" ]; then
+ # there's no repository definition for that arch
+ if echo "$ARCH_i486" | grep -q " $ARCH "; then
+ new_arch="i486"
+ elif echo "$ARCH_x86_64" | grep -q " $ARCH "; then
+ new_arch="x86_64"
+ else
+ echo "$BASENAME: error: no repository definition for arch $ARCH"
+ echo "$BASENAME: please check your $CONF and $REPOS_CONF config files"
+ exit 1
+ fi
+ else
+ return
+ fi
+ done
+
+ echo "$BASENAME: changing arch from $ARCH to $new_arch"
+
+ ARCH="$new_arch"
+
+}
+
+function simplaret_check_url {
+
+ # check if a given url exist, use just with small files
+ # usage: simplaret_check_url <url>
+
+ if [ -z "$1" ]; then
+ return 1
+ fi
+
+ if echo $1 | grep -q -e "^file:///"; then
+ url="`echo $1 | sed -e 's/file:\/\///'`"
+ if [ -e "$url" ]; then
+ return 0
+ else
+ return 1
+ fi
+ fi
+
+ if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
+ curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
+ fi
+
+ if [ "`curl $curl_timeout -I $1 2> /dev/null | head -n 1 | awk '{ print $2 }'`" == "200" ]; then
+ # server gave a 200 response, so the url exist
+ return 0
+ else
+ # the url is missing
+ return 1
+ fi
+
+}
+
+function simplaret_solve_dep {
+
+ # solve dependency for a package
+ # this function was adapted from createpkg script
+ # usage: simplaret_solve_dep <package-name> <package-depencency-name> [root-folder]
+
+ local installed check exit_code
+
+ local package="$1"
+ local pack="$2"
+ local root="/$3"
+
+ pack="`echo $pack| sed -e 's/\+/\\\+/'`"
+ installed="`check_installed $pack $root`"
+ check=$?
+
+ if [ -z "$installed" ]; then
+ if [ $check -ne 0 ]; then
+ echo "$BASENAME: processing $1 dependency $pack"
+ # simplaret_install $pack
+ SIMPLARET_CHILD=$SIMPLARET_CHILD ROOT=$root ARCH=$ARCH VERSION=$VERSION \
+ simplaret --install $pack
+ fi
+ fi
+
+}
+
+function simplaret_remove {
+
+ # remove packages
+ # usage: simplaret_remove <package1> [<package2> ... <packageN>]
+
+ for package in $*; do
+ ROOT=/$ROOT removepkg $package
+ done
+
+}
+
+function simplaret_req_arg {
+
+ # requires arg
+
+ if [ -z "$1" ]; then
+ simplaret_usage;
+ fi
+
+}
+
+if [ -z "$1" ]; then
+ simplaret_usage
+ exit 1
+else
+ eval_config $BASENAME
+ set_constants
+fi
+
+# This is used to show how many children process we have
+if [ -z "$SIMPLARET_CHILD" ]; then
+ SIMPLARET_CHILD="1"
+else
+ let SIMPLARET_CHILD++
+fi
+
+BASENAME="`basename $0`[$SIMPLARET_CHILD]"
+
+case $1 in
+ "--update" | "update" | "--sync" | "sync" ) simplaret_update ;;
+ "--upgrade" | "upgrade") simplaret_get_patches --upgrade ;;
+ "--get-patches" | "get-patches") simplaret_get_patches ;;
+ "--search" | "search") shift ; simplaret_req_arg $1 ; simplaret_search $* ;;
+ "--get" | "get") shift ; simplaret_req_arg $1 ; simplaret_get $* ;;
+ "--purge" | "purge") shift ; simplaret_purge $* ;;
+ "--install" | "install") shift ; simplaret_req_arg $1 ; simplaret_install $* ;;
+ "--remove" | "remove") shift ; simplaret_req_arg $1 ; simplaret_remove $* ;;
+ "--help" | "help") simplaret_usage ;;
+ *)
+ if echo $1 | grep -q -v '^--'; then
+ simplaret_install $*
+ else
+ simplaret_usage
+ fi
+ ;;
+esac
+
diff --git a/tags/0.6rc1/src/simpletrack b/tags/0.6rc1/src/simpletrack
new file mode 100755
index 0000000..c643a89
--- /dev/null
+++ b/tags/0.6rc1/src/simpletrack
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# simpletrack $Id$: slacktrack/altertrack wrapper from simplepkg suite
+# feedback: rhatto at riseup.net | gpl
+#
+# Simpletrack is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Simpletrack is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+PRIORITY=${SLACKTRACK_PRIORITY:=slacktrack-real slacktrack altertrack}
+BASENAME="`basename $0`"
+
+function slacktrack {
+
+ $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.tgz" "./$2"
+
+}
+
+function slacktrack-real {
+
+ $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.tgz" "./$2"
+
+}
+
+function altertrack {
+
+ $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.tgz" "./$2"
+
+}
+
+# -----------------------------------------------------
+# main
+# -----------------------------------------------------
+
+if [ -z "$1" ]; then
+ echo "usage: $BASENAME [options] <build-script>"
+ exit 1
+elif [ ! -f "$1" ]; then
+ echo "$1: file not found"
+ exit 1
+fi
+
+for tracker in $PRIORITY; do
+ path="`which $tracker 2> /dev/null`"
+ found="$?"
+ if [ "$found" == "0" ]; then
+ echo $BASENAME: using $tracker...
+ $tracker $path $*
+ break
+ fi
+done
+
+if [ "$found" != "0" ]; then
+ echo "Can't find any suitable tracker among $PRIORITY"
+ echo "Does slacktrack package is installed in your system?"
+ exit 1
+fi
diff --git a/tags/0.6rc1/src/templatepkg b/tags/0.6rc1/src/templatepkg
new file mode 100755
index 0000000..2d1ada2
--- /dev/null
+++ b/tags/0.6rc1/src/templatepkg
@@ -0,0 +1,987 @@
+#!/bin/bash
+#
+# templatepkg: template maintenance script from simplepkg suite
+# feedback: rhatto at riseup.net | gpl
+#
+# Templatepkg is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Templatepkg is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# $Rev$ - $Author$
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+ eval_config $BASENAME
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+function usage_summary {
+
+ echo "options are:"
+ echo ""
+ echo " -c | --create: create a template from a jail or existing template"
+ echo " -u | --update: update a template from a jail"
+ echo " -a | --add: add files into a template"
+ echo " -d | --delete: delete files or folders from a template"
+ echo " -s | --sync: sync $TEMPLATE_FOLDER working copy"
+ echo " -e | --export: export $TEMPLATE_FOLDER to a svn repository"
+ echo " -i | --import: grab $TEMPLATE_FOLDER from a svn repository"
+ echo " -r | --remove: remove a template"
+ echo " -l | --list: list templates"
+ echo " -b | --batch-edit: add or edit post-installation scripts"
+ echo " -p | --pack: create a package from a template"
+ echo " -t | --template-edit: edit template package list"
+ echo " -h | --help: display this summary"
+ echo ""
+
+}
+
+function display_help {
+
+ # display help
+ # usage: help [help-topic]
+
+ local option
+
+ if [ -z "$1" ]; then
+ echo "type $BASENAME --help <option> for aditional help"
+ usage_summary
+ exit
+ fi
+
+ option="$1"
+
+ if ! echo $option | grep -q -e "^-"; then
+ option="-`echo $option | sed -e 's/--/-/' -e 's/\(.\).*/\1/'`"
+ else
+ option="`echo $option | sed -e 's/--/-/' -e 's/\(..\).*/\1/'`"
+ fi
+
+ echo "$BASENAME: help for option $option:"
+ echo ""
+
+ usage_summary | grep -e "^ $option"
+
+ echo ""
+ case $option in
+
+ "-c" | "--create")
+ echo " $BASENAME $option <template> [jail-root|template-name]"
+ ;;
+ "-u" | "--update")
+ echo " $BASENAME $option <template> [jail-root]"
+ ;;
+ "-a" | "--add")
+ echo " $BASENAME $option <template> <file-name> [jail-root]"
+ echo ""
+ echo " file-name: the file or directory to be added"
+ echo " jail-root: the jail under file-name is located"
+ ;;
+ "-d" | "--delete")
+ echo " $BASENAME $option <template> <file-name> [jail-root]"
+ echo ""
+ echo " file-name: the file or directory to be removed"
+ echo " jail-root: if specified, the file is also removed from the jail"
+ ;;
+ "-s" | "--sync")
+ echo " $BASENAME $option"
+ ;;
+ "-e" | "--export")
+ echo " $BASENAME $option <svn-repository>"
+ ;;
+ "-i" | "--import")
+ echo " $BASENAME $option <svn-repository>"
+ ;;
+ "-r" | "--remove")
+ echo " $BASENAME $option <template-name>"
+ ;;
+ "-l" | "--list")
+ echo " $BASENAME $option [path]"
+ ;;
+ "-b" | "--batch-edit")
+ echo " $BASENAME $option <template-name> <script-name>"
+ ;;
+ "-p" | "--pack")
+ echo " $BASENAME $option <template-name> [version] [build] [arch]"
+ ;;
+ "-t" | "--template-edit")
+ echo " $BASENAME $option <template-name>"
+ ;;
+ "-h" | "--help")
+ echo " -h | --help: display this help."
+ ;;
+ *)
+ echo $BASENAME: invalid help option $option
+ esac
+
+ case $option in
+ "-c" | "-u" | "-a")
+ echo ""
+ echo " if ommited, jail-root defaults to /"
+ ;;
+ esac
+
+ echo ""
+
+}
+
+function usage {
+
+ echo "usage: $BASENAME <option> [<template> [arguments]]"
+ usage_summary
+ exit
+
+}
+
+function import_export_templates {
+
+ # import from or export to $TEMPLATE_FOLDER in a svn repository
+ # usage: template_export <import|export> <repository>
+
+ local templates templates_folder basedir repository mode preposition
+ local repository_type repository_path
+
+ if [ "$?" != 0 ]; then
+ usage
+ exit 1
+ elif ! templates_under_svn; then
+ echo $BASENAME: simplepkg not configured to use svn
+ exit 1
+ fi
+
+ templates_folder="$TEMPLATE_FOLDER"
+ templates="`basename $TEMPLATE_FOLDER`"
+ basedir="`dirname $templates_folder`"
+ mode="$1"
+ repository="$2"
+ preposition="from"
+
+ valid_svn_repo $repository
+
+ if [ ! -z "$2" ]; then
+
+ if ! svn_folder $templates_folder; then
+
+ cd $basedir
+
+ if [ "$mode" == "export" ]; then
+ preposition="to"
+ check_and_create_svn_repo $repository
+ echo Exporting templates to $repository...
+ svn import $templates/ $repository/ -m "initial import"
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: export failed
+ exit 1
+ fi
+ fi
+
+ if [ -d "templates" ]; then
+ mv $templates $templates.old
+ fi
+
+ echo Checking out templates from $repository...
+ svn checkout $repository $templates
+
+ if [ "$?" == "0" ]; then
+ rm -rf $templates.old
+ else
+ rm -rf $templates
+ mv $templates.old $templates
+ echo $BASENAME: $mode failed
+ exit 1
+ fi
+
+ else
+ echo "$BASENAME: $templates_folder seens to be already $mode""ed $preposition $repository"
+ exit 1
+ fi
+
+ fi
+
+}
+
+function template_create {
+
+ # create a new template
+
+ local template_base info_commit orig_template list
+ local orig_packages orig_perms orig_scripts orig_files
+
+ if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
+
+ echo Creating template `basename $TEMPLATE_BASE`...
+
+ if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
+ cd `dirname $TEMPLATE_BASE`
+ svn mkdir `dirname $TEMPLATE_BASE`
+ else
+ mkdir -p `dirname $TEMPLATE_BASE`
+ fi
+
+ else
+ echo $BASENAME: template `basename $TEMPLATE_BASE` already exists
+ exit 1
+ fi
+
+ touch `template_perms`
+ touch `template_packages`
+
+ if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
+
+ cd `dirname $TEMPLATE_BASE`
+
+ if ! svn_check `template_files`; then
+ svn mkdir `template_files`
+ info_commit="yes"
+ else
+ mkdir -p `template_files`
+ fi
+
+ if ! svn_check `template_scripts`; then
+ svn mkdir `template_scripts`
+ info_commit="yes"
+ else
+ mkdir -p `template_scripts`
+ fi
+
+ if ! svn_check `template_packages`; then
+ svn add `template_packages`
+ info_commit="yes"
+ fi
+
+ if ! svn_check `template_perms`; then
+ svn add `template_perms`
+ info_commit="yes"
+ fi
+
+ elif templates_under_svn && svn_folder "$TEMPLATE_FOLDER"; then
+
+ mkdir `template_files` `template_scripts`
+ cd $TEMPLATE_FOLDER
+ svn add `basename $TEMPLATE_BASE`
+ info_commit="yes"
+
+ else
+ mkdir `template_files` `template_scripts`
+ fi
+
+ if [ -d "/$ROOT" ]; then
+ template_update
+ elif [ ! -z "$ROOT" ]; then
+
+ # copy from an existing template
+
+ if [ -d "$TEMPLATE_FOLDER/$ROOT" ]; then
+ orig_template="$TEMPLATE_FOLDER/$ROOT"
+ elif [ -d "$BASE_CONF/templates/$ROOT" ]; then
+ orig_template="$BASE_CONF/templates/$ROOT"
+ elif [ -d "$BASE_CONF/defaults/templates/$ROOT" ]; then
+ orig_template="$BASE_CONF/defaults/templates/$ROOT"
+ else
+ return 1
+ fi
+
+ if [ -e "$orig_template/$ROOT/packages" ]; then
+ orig_packages="$orig_template/$ROOT/packages"
+ orig_perms="$orig_template/$ROOT/perms"
+ orig_scripts="$orig_template/$ROOT/scripts"
+ orig_files="$orig_template/$ROOT/files"
+ else
+ orig_packages="$orig_template/$ROOT.template"
+ orig_perms="$orig_template/$ROOT.perms"
+ orig_scripts="$orig_template/$ROOT.s"
+ orig_files="$orig_template/$ROOT.d"
+ fi
+
+ if [ -f "$orig_perms" ]; then
+ cat $orig_perms > `template_perms`
+ fi
+
+ if [ -f "$orig_packages" ]; then
+ cat $orig_packages > `template_packages`
+ fi
+
+ if templates_under_svn && svn_folder $orig_template; then
+
+ cd `dirname $TEMPLATE_BASE`
+
+ list="`ls $orig_files/ 2> /dev/null`"
+ if [ ! -z "$list" ]; then
+ echo Copying files to the new template...
+ rsync -av --exclude=.svn $orig_files/ `template_files`/
+ svn add `basename $(template_files)`/*
+ info_commit="yes"
+ fi
+
+ list="`ls $orig_scripts/ 2> /dev/null`"
+ if [ ! -z "$list" ]; then
+ echo Copying scripts to the new template...
+ rsync -av --exclude=.svn $orig_scripts/ `template_scripts`/
+ svn add `basename $(template_scripts)`/*
+ info_commit="yes"
+ fi
+
+ else
+
+ list="`ls $orig_files/ 2> /dev/null`"
+ if [ ! -z "$list" ]; then
+ echo Copying files to the new template...
+ rsync -av $orig_files/ `template_files`/
+ fi
+
+ list="`ls $orig_scripts/ 2> /dev/null`"
+ if [ ! -z "$list" ]; then
+ echo Copying scripts to the new template...
+ rsync -av $orig_scripts/ `template_scripts`/
+ fi
+
+ fi
+
+ else
+ echo $BASENAME: warning: no root directory defined
+ fi
+
+ if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to add files under $file into the svn repository"
+ fi
+
+}
+
+function template_update {
+
+ # update the template package list
+
+ check_template_exist
+
+ if [ ! -d "$ROOT/var/log/packages" ]; then
+ echo $ROOT/var/log/packages: directory not found
+ exit 1
+ fi
+
+ echo Checking package list for template `basename $TEMPLATE_BASE`...
+
+ for package in `ls -1 $ROOT/var/log/packages/`; do
+ pack=`package_name $package`
+ if [ -f $TEMPLATE ]; then
+ if ! `grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | grep -q -e "^$pack\$"`; then
+ echo $pack >> $TEMPLATE
+ echo Adding $pack # on $TEMPLATE
+ fi
+ else
+ echo $pack >> $TEMPLATE
+ echo Adding $pack # on $TEMPLATE
+ fi
+ done
+
+ # check if each package from the template is installed
+ grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | while read pack; do
+
+ if [ ! -z "$pack" ]; then
+ unset found
+ for candidate in `ls $ROOT/var/log/packages/$pack* 2> /dev/null`; do
+ candidate="`package_name $candidate`"
+ if [ "$pack" == "$candidate" ]; then
+ found="1"
+ break
+ fi
+ done
+ if [ "$found" != "1" ]; then
+ # remove a non-installed package from the template
+ sed "/^$pack$/d" $TEMPLATE | sed "/^$pack $/d" | sed "/^$pack:*/d" | sed "/^$pack */d" > $TEMPLATE.tmp
+ cat $TEMPLATE.tmp > $TEMPLATE
+ rm -f $TEMPLATE.tmp
+ echo Removing $pack # from $TEMPLATE
+ fi
+ fi
+
+ done
+
+ if ! svn_check `template_packages` && svn_folder `dirname $TEMPLATE_BASE`; then
+ cd `dirname $TEMPLATE_BASE`
+ svn add `basedir $(template_packages)`
+ fi
+
+}
+
+function template_add {
+
+ # add a file in a template
+ # usage: template_add <jail-root> <file>
+
+ local info_commit cwd
+
+ if [ -z "$1" ] || [ -z "$2" ]; then
+ return 1
+ fi
+
+ check_template_exist
+
+ jail="/$1"
+ file="$2"
+
+ if [ -a "`template_files`/$file" ]; then
+ if [ -d "`template_files`/$file" ]; then
+
+ echo $BASENAME: folder `slash $file` already on `template_files`, checking for contents
+
+ cd $jail
+ for candidate in `find $file`; do
+ if [ ! -a "`template_files`/$candidate" ]; then
+ mkdir -p `template_files`/`dirname $candidate`
+ cp -a $jail/$candidate `template_files`/$candidate
+ if templates_under_svn && svn_folder `template_files`; then
+ cwd="`pwd`"
+ cd `template_files`
+ svn add ./$candidate
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: error adding `slash $candidate` into the revision system
+ fi
+ cd $cwd
+ info_commit="yes"
+ else
+ echo Added `slash $jail/$candidate` on `slash $(template_files)/$candidate`
+ fi
+ fi
+ done
+
+ if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to add files under `slash $file` into the svn repository"
+ fi
+
+ else
+ echo $BASENAME: file `slash $file` already on `template_files`
+ exit 1
+ fi
+ else
+
+ if [ -a "$jail/$file" ]; then
+
+ destination="`echo $(template_files)/$file | sed -e 's/\/$//'`"
+
+ if templates_under_svn && svn_folder `template_files`; then
+
+ candidate="./`dirname $file`"
+
+ if ! svn_folder `template_files`/$candidate; then
+ mkdir -p `template_files`/$candidate
+ cd `template_files`/`dirname $candidate`
+ while true; do
+ if svn_folder $(pwd); then
+ svn add `basename $candidate`
+ break
+ else
+ candidate="`basename $(pwd)`"
+ cd ..
+ fi
+ done
+ fi
+
+ cp -a $jail/$file $destination
+
+ cwd="`pwd`"
+ cd `template_files`
+ svn add ./$file
+
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: error adding `slash $candidate` into the revision system
+ else
+ if [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to add `slash $file` into the svn repository"
+ fi
+ fi
+
+ cd $cwd
+
+ else
+
+ mkdir -p `template_files`/`dirname $file`/
+ cp -a $jail/$file $destination
+ echo Added `slash $jail/$file` on `slash $destination`
+
+ fi
+
+ else
+ echo $BASENAME: `slash $jail/$file`: file not found
+ exit 1
+ fi
+ fi
+
+}
+
+function check_template_exist {
+
+ # check if a template exists
+ # and create missing components
+
+ local components
+
+ components="`template_packages` `template_perms` `template_files` `template_scripts`"
+
+ if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
+ echo $BASENAME: template not found
+ exit 1
+ fi
+
+ for component in $components; do
+
+ if [ ! -e "$component" ]; then
+
+ echo "$BASENAME: template component not found: $component; creating..."
+
+ cd `dirname $TEMPLATE_BASE`
+
+ if [ "$component" == "perms" ] || [ "$component" == "template" ]; then
+ touch $component
+ else
+ mkdir $component
+ fi
+
+ if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
+ svn add $component
+ info_commit="yes"
+ fi
+
+ elif templates_under_svn && svn_folder `dirname $TEMPLATE_BASE` && \
+ ! svn_check $component; then
+
+ cd `dirname $TEMPLATE_BASE`
+ svn add $component
+ info_commit="yes"
+
+ fi
+
+ done
+
+ if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to add new files in the svn repository"
+ fi
+
+}
+
+function template_delete {
+
+ # delete a file from a template
+ # usage: template_delete <file> [jail-root]
+
+ if [ -e "`template_files`/$1" ]; then
+
+ # first try to remove the file from the template
+ if templates_under_svn && svn_folder `template_files`; then
+ cd `template_files`
+ svn del --force ./$1 || rm -rf ./$1
+ if [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to del $1 in the svn repository"
+ fi
+ else
+ rm -rf `template_files`/$1
+ echo Removed $1 from `template_files`
+ fi
+
+ # then, if requested, remove the file from the jail
+ if [ ! -z "$2" ]; then
+ if [ ! -d "$2" ]; then
+ echo $BASENAME: jail not found: $2
+ elif [ -e "$2/$1" ]; then
+ rm -rf $2/$1
+ echo Removed $1 from jail $2
+ else
+ echo $BASENAME: file not found: $2/$1
+ fi
+ fi
+
+ elif [ -e "`template_scripts`/$1" ]; then
+ if templates_under_svn && svn_folder `template_scripts`; then
+ cd `template_scripts`
+ svn del --force ./$1 || rm -rf ./$1
+ if [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to del $1 in the svn repository"
+ fi
+ else
+ rm -rf `template_scripts`/$1
+ echo Removed $1 from `template_scripts`
+ fi
+ else
+ if [ ! -d "`template_files`" ]; then
+ echo $BASENAME: template folder `template_files` not found
+ else
+ echo $BASENAME: file $1 not found at `template_files`
+ fi
+ exit 1
+ fi
+
+}
+
+function template_remove {
+
+ # remove a template
+ # usage: template_remove
+
+ local basedir template
+
+ basedir="`dirname $TEMPLATE_BASE`"
+ template="`basename $basedir`"
+
+ if [ ! -d "$basedir" ]; then
+ echo $BASENAME: template $template does not exist
+ exit 1
+ fi
+
+ if templates_under_svn && svn_folder $basedir; then
+ cd $TEMPLATE_FOLDER
+ svn update
+ svn del --force $template
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: error deleting template $template
+ else
+ svn commit -m "deleted $template"
+ if [ "$?" != "0" ]; then
+ echo $BASENAME: error commiting to svn repository
+ fi
+ fi
+ else
+ rm -rf $basedir
+ fi
+
+}
+
+function template_list {
+
+ # list templates
+ # usage: template_list [path]
+
+ local list basedir template
+
+ if [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ] && \
+ [ "$TEMPLATE_STORAGE_STYLE" != "compact" ]; then
+ echo "$BASENAME: option only available if TEMPLATE_STORAGE_STYLE configured as 'own-folder' or 'compact'"
+ return 1
+ fi
+
+ if echo $1 | grep -q "/" || [ ! -z "$1" ]; then
+
+ template="`echo $1 | cut -d "/" -f 1`"
+
+ if [ -e "$BASE_CONF/defaults/templates/$1" ]; then
+ list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
+ if [ "$?" == "0" ]; then
+ list="`echo $list | xargs`"
+ echo "In the default template $template: $list"
+ fi
+ fi
+
+ if [ -e "$TEMPLATE_FOLDER/$1" ]; then
+ list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
+ if [ "$?" == "0" ]; then
+ list="`echo $list | xargs`"
+ echo "In the custom template $template: $list"
+ fi
+ fi
+
+ else
+
+ list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
+ if [ "$?" == "0" ]; then
+ list="`echo $list | xargs`"
+ echo "Default templates: $list"
+ fi
+
+ list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
+ if [ "$?" == "0" ]; then
+ list="`echo $list | xargs`"
+ echo "Custom templates: $list"
+ fi
+
+ fi
+
+}
+
+function template_post_install_edit {
+
+ # add or edit a post-installation script
+ # usage: template_post_install_edit <script-name>
+
+ if [ -z "$1" ]; then
+ echo $BASENAME: no template specified
+ exit 1
+ elif echo $1 | grep -q "/"; then
+ echo $BASENAME: error: invalid script name $1
+ fi
+
+ if [ -f "`template_scripts`/$1" ]; then
+ sha1sum="`sha1sum $(template_scripts)/$1`"
+ if [ ! -z "$EDITOR" ]; then
+ $EDITOR `template_scripts`/$1
+ else
+ vi `template_scripts`/$1
+ fi
+ if [ "$sha1sum" != "`sha1sum $(template_scripts)/$1`" ] && \
+ svn_folder `dirname $TEMPLATE_BASE` && [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to send changes to the repository"
+ fi
+ else
+
+ if [ -e "`template_scripts`/$1" ]; then
+
+ echo $BASENAME: file `template_scripts`/$1 not a regular file
+
+ elif [ -d "`template_scripts`" ]; then
+
+ touch `template_scripts`/$1
+ chmod +x `template_scripts`/$1
+
+ if svn_folder `template_scripts`; then
+ cd `template_scripts`
+ svn add $1
+ if [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to send the script to the repository"
+ fi
+ fi
+
+ echo "$BASENAME: script created; run templatepkg -p `basename $TEMPLATE_BASE` $1 again to edit it"
+
+ else
+ echo $BASENAME: folder not found: `template_scripts`
+ fi
+
+ fi
+
+}
+
+function template_edit {
+
+ # edit a template package list
+ # usage: template_edit
+
+ if [ -f "`template_packages`" ]; then
+ sha1sum="`sha1sum $(template_packages)`"
+ if [ ! -z "$EDITOR" ]; then
+ $EDITOR `template_packages`
+ else
+ vi `template_packages`
+ fi
+ if [ "$sha1sum" != "`sha1sum $(template_packages)`" ] && \
+ svn_folder `dirname $TEMPLATE_BASE` && [ -z "$SILENT" ]; then
+ echo "Please run 'jail-commit --all' to send changes to the repository"
+ fi
+ elif [ -e "`template_packages`" ]; then
+ echo $BASENAME: file `template_packages` not a regular file
+ else
+ echo $BASENAME: file not found: `template_packages`
+ fi
+
+}
+
+function require {
+
+ # requires a string
+ # usage: require [string]
+
+ if [ -z "$1" ]; then
+ usage
+ fi
+
+}
+
+function setroot {
+
+ # set ROOT variable
+ # usage: setroot <value1> <value2>
+
+ if [ -z "$1" ]; then
+ ROOT="/"
+ else
+ ROOT="$1"
+ fi
+
+}
+
+function create_doinst {
+
+ # create a doinst.sh from a template perms file
+ # usage: create_doinst <doinst-path>
+
+ rm -f $1/doinst.sh
+
+ if [ -s "`template_perms`" ]; then
+ echo Creating doinst.sh...
+ cat `template_perms` | while read entry; do
+ file="`echo $entry | cut -d ";" -f 1`"
+ if [ -e "`template_files`/$file" ]; then
+ owner="`echo $entry | cut -d ";" -f 2`"
+ group="`echo $entry | cut -d ";" -f 3`"
+ perms="`echo $entry | cut -d ";" -f 4`"
+ echo "( chmod $perms /$file )" >> $1/doinst.sh
+ echo "( chown $owner:$group /$file )" >> $1/doinst.sh
+ fi
+ done
+ fi
+
+}
+
+function package_template {
+
+ # make a package from a template
+ # usage: package_template [version] [build] [arch]
+
+ local template version build arch
+
+ template="`basename $TEMPLATE_BASE`"
+
+ if [ ! -d "`template_files`" ]; then
+ $BASENAME: folder not found: `template_files`
+ return 1
+ fi
+
+ echo Buiding package for template $template...
+
+ if [ -z "$1" ]; then
+ version="1"
+ else
+ version="$1"
+ fi
+
+ if [ -z "$2" ]; then
+ build="1"
+ else
+ build="$2"
+ fi
+
+ if [ -z "$3" ]; then
+ arch="noarch"
+ else
+ arch="$3"
+ fi
+
+ TMP=${TMP:=/tmp}
+ rm -rf $TMP/templatepkg
+ mkdir -p $TMP/templatepkg
+
+ rsync -av --exclude=.svn `template_files`/ $TMP/templatepkg/
+ mkdir $TMP/templatepkg/install
+ create_doinst $TMP/templatepkg/install
+
+ echo "template-$template: template-$template" > $TMP/templatepkg/install/slack-desc
+ echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
+ echo "template-$template: simplepkg template $template" >> $TMP/templatepkg/install/slack-desc
+
+ for ((n=1;n<=8;n++)); do
+ echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
+ done
+
+ cd $TMP/templatepkg
+
+ makepkg -c n -l y $TMP/template-$template-$version-noarch-$build.tgz
+
+ cd $TMP
+ rm -rf templatepkg
+
+}
+
+# -----------------------------------------------------
+# main
+# -----------------------------------------------------
+
+if [ ! -z "$2" ]; then
+ search_template $2 --new
+fi
+
+TEMPLATE="`template_packages`"
+
+if [ "$1" == "-u" ] || [ "$1" == "--update" ]; then
+
+ require $2
+ setroot $3
+ template_update
+
+elif [ "$1" == "-c" ] || [ "$1" == "--create" ]; then
+
+ require $2
+ setroot $3
+ template_create
+
+elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then
+
+ require $2
+
+ if [ -z "$3" ]; then
+ usage
+ else
+ setroot $4
+ fi
+
+ template_add $ROOT $3
+
+elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then
+
+ require $2
+
+ if [ -z "$3" ]; then
+ usage
+ else
+ template_delete $3 $4
+ fi
+
+elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then
+
+ if templates_under_svn && svn_folder $TEMPLATE_FOLDER; then
+ ( cd $TEMPLATE_FOLDER && svn update )
+ true
+ fi
+
+elif [ "$1" == "-e" ] || [ "$1" == "--export" ]; then
+
+ require $2
+ import_export_templates export $2
+
+elif [ "$1" == "-i" ] || [ "$1" == "--import" ]; then
+
+ require $2
+ import_export_templates import $2
+
+elif [ "$1" == "-r" ] || [ "$1" == "--remove" ]; then
+
+ require $2
+ template_remove
+
+elif [ "$1" == "-l" ] || [ "$1" == "--list" ]; then
+
+ template_list $2
+
+elif [ "$1" == "-b" ] || [ "$1" == "--batch-edit" ]; then
+
+ require $3
+ template_post_install_edit $3
+
+elif [ "$1" == "-t" ] || [ "$1" == "--template-edit" ]; then
+
+ require $2
+ template_edit
+
+elif [ "$1" == "-p" ] || [ "$1" == "--pack" ]; then
+
+ require $2
+ shift ; shift
+ package_template $*
+
+elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
+
+ display_help $2
+
+else
+ usage
+fi
+
diff --git a/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.csh b/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.csh
new file mode 100755
index 0000000..94e8a92
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.csh
@@ -0,0 +1,33 @@
+#!/bin/csh
+# Set the system locale. (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+# locale -a
+
+# en_US is the Slackware default locale:
+setenv LANG pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#setenv LANG C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly. In those cases, you can set LANG=C before
+# starting them. Still, I'd avoid UTF unless you actually need it.
+#setenv LANG en_US.UTF-8
+
+# Another option for en_US:
+#setenv LANG en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places. Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+setenv LC_COLLATE C
+
+# End of /etc/profile.d/lang.csh
+
diff --git a/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.sh b/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.sh
new file mode 100755
index 0000000..c9cde20
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/files/etc/profile.d/lang.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Set the system locale. (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+# locale -a
+
+# en_US is the Slackware default locale:
+export LANG=pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#export LANG=C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly. In those cases, you can set LANG=C before
+# starting them. Still, I'd avoid UTF unless you actually need it.
+#export LANG=en_US.UTF-8
+
+# Another option for en_US:
+#export LANG=en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places. Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+export LC_COLLATE=C
+
+# End of /etc/profile.d/lang.sh
+
diff --git a/tags/0.6rc1/templates/openoffice/files/opt/OpenOffice.org b/tags/0.6rc1/templates/openoffice/files/opt/OpenOffice.org
new file mode 120000
index 0000000..7146afd
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/files/opt/OpenOffice.org
@@ -0,0 +1 @@
+../opt2/OpenOffice.org \ No newline at end of file
diff --git a/tags/0.6rc1/templates/openoffice/packages b/tags/0.6rc1/templates/openoffice/packages
new file mode 100644
index 0000000..ef3ae52
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/packages
@@ -0,0 +1,60 @@
+aaa_base: ADD
+aaa_elflibs: ADD
+acpid: REC
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cups: REC
+cxxlibs: ADD
+devs: ADD
+etc: ADD
+a2ps
+bc
+enscript
+espgs
+etc
+findutils
+gawk
+gettext
+getty-ps
+gimp-print
+glibc
+glibc-i18n
+glibc-profile
+glibc-solibs
+glibc-zoneinfo
+grep
+gzip
+hpijs
+infozip
+ispell
+kbd
+kde-i18n-pt_BR
+kdebase
+kdelibs
+koffice-i18n-pt_BR
+less
+libart_lgpl
+libidn
+libmng
+pkgtools
+qt
+sed
+shadow
+sudo
+sysklogd
+sysvinit
+utempter
+util-linux
+x11
+x11-devel
+x11-fonts-100dpi
+x11-fonts-cyrillic
+x11-fonts-misc
+x11-fonts-scale
+x11-xdmx
+x11-xnest
+x11-xvfb
+openoffice-chroot
+openssl
diff --git a/tags/0.6rc1/templates/openoffice/perms b/tags/0.6rc1/templates/openoffice/perms
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/perms
diff --git a/tags/0.6rc1/templates/openoffice/scripts/post-install.sh b/tags/0.6rc1/templates/openoffice/scripts/post-install.sh
new file mode 100755
index 0000000..086c7a4
--- /dev/null
+++ b/tags/0.6rc1/templates/openoffice/scripts/post-install.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+echo running post-installation script for $1/$2 jail...
+
+# copia de arquivos
+cp -p /etc/passwd $1/$2/etc/
+cp -p /etc/group $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+
+# pos-instalacao
+mount -t proc proc $1/$2/proc
+chroot $1/$2 /sbin/ldconfig
+cd $1/$2 && exec ./var/log/scripts/glibc-zoneinfo-*
+umount $1/$2/proc
diff --git a/tags/0.6rc1/templates/slackware-12.1/packages b/tags/0.6rc1/templates/slackware-12.1/packages
new file mode 100644
index 0000000..c356267
--- /dev/null
+++ b/tags/0.6rc1/templates/slackware-12.1/packages
@@ -0,0 +1,947 @@
+aaa_base:ADD
+aaa_elflibs:ADD
+aaa_terminfo:REC
+acl:ADD
+acpid:REC
+apmd:REC
+attr:ADD
+bash:ADD
+bin:ADD
+bzip2:ADD
+coreutils:ADD
+cpio:ADD
+cryptsetup:OPT
+cups:REC
+cxxlibs:ADD
+dcron:ADD
+device-mapper:REC
+devs:ADD
+dialog:REC
+dosfstools:REC
+e2fsprogs:ADD
+ed:REC
+eject:REC
+elvis:ADD
+etc:ADD
+file:REC
+findutils:ADD
+floppy:ADD
+gawk:ADD
+genpower:OPT
+gettext:REC
+getty-ps:OPT
+glibc-solibs:ADD
+glibc-zoneinfo:ADD
+gpm:REC
+grep:ADD
+gzip:ADD
+hdparm:ADD
+infozip:ADD
+inotify-tools:REC
+isapnptools:OPT
+jfsutils:OPT
+kbd:REC
+kernel-generic:REC
+kernel-generic-smp:REC
+kernel-huge:ADD
+kernel-huge-smp:ADD
+kernel-modules:ADD
+kernel-modules-smp:ADD
+less:ADD
+lha:REC
+lilo:ADD
+loadlin:REC
+logrotate:ADD
+lvm2:REC
+mdadm:OPT
+minicom:REC
+mkinitrd:REC
+module-init-tools:ADD
+mt-st:OPT
+mtx:REC
+ncompress:REC
+ntfs-3g:OPT
+openssl-solibs:ADD
+patch:REC
+pciutils:REC
+pcmciautils:REC
+pkgtools:ADD
+procps:ADD
+quota:OPT
+reiserfsprogs:ADD
+rpm2tgz:REC
+sdparm:ADD
+sed:ADD
+shadow:ADD
+sharutils:ADD
+slocate:ADD
+smartmontools:ADD
+splitvt:REC
+sysfsutils:REC
+sysklogd:ADD
+syslinux:ADD
+sysvinit:ADD
+sysvinit-functions:OPT
+sysvinit-scripts:ADD
+tar:ADD
+tcsh:REC
+time:REC
+tree:REC
+udev:ADD
+unarj:REC
+usbutils:ADD
+utempter:REC
+util-linux-ng:ADD
+which:REC
+xfsprogs:OPT
+zoo:REC
+a2ps:REC
+acct:OPT
+alsa-utils:REC
+amp:OPT
+ash:OPT
+at:OPT
+aumix:OPT
+bc:OPT
+bpe:OPT
+cdparanoia:OPT
+cdrdao:OPT
+cdrtools:OPT
+diffstat:REC
+diffutils:REC
+dmapi:REC
+dmidecode:ADD
+dvd+rw-tools:OPT
+enscript:OPT
+flac:OPT
+foomatic-filters:REC
+ghostscript:REC
+ghostscript-fonts-std:REC
+groff:ADD
+gutenprint:OPT
+hplip:REC
+ispell:OPT
+jed:OPT
+joe:OPT
+jove:OPT
+ksh93:OPT
+linuxdoc-tools:REC
+lm_sensors:REC
+lsof:OPT
+lsscsi:OPT
+madplay:OPT
+man:ADD
+man-pages:REC
+mc:OPT
+most:OPT
+mpg321:OPT
+mysql:OPT
+nano:REC
+normalize:OPT
+ntfsprogs:OPT
+rexima:REC
+rpm:OPT
+rzip:OPT
+sc:OPT
+screen:OPT
+seejpeg:REC
+sox:REC
+sudo:OPT
+sysstat:OPT
+texinfo:REC
+vim:REC
+vorbis-tools:OPT
+workbone:OPT
+xfsdump:REC
+zsh:OPT
+autoconf:OPT
+automake:OPT
+bin86:ADD
+binutils:ADD
+bison:ADD
+ccache:OPT
+clisp:OPT
+cmake:REC
+cscope:OPT
+cvs:REC
+distcc:OPT
+doxygen:OPT
+flex:ADD
+gcc:ADD
+gcc-g++:REC
+gcc-gfortran:OPT
+gcc-gnat:OPT
+gcc-java:OPT
+gcc-objc:OPT
+gdb:REC
+gettext-tools:REC
+git:REC
+gperf:REC
+guile:OPT
+indent:OPT
+kernel-headers:ADD
+libtool:OPT
+m4:REC
+make:ADD
+mercurial:REC
+nasm:OPT
+oprofile:OPT
+p2c:OPT
+perl:REC
+pkg-config:REC
+pmake:REC
+python:REC
+rcs:REC
+ruby:REC
+strace:REC
+subversion:OPT
+emacs:ADD
+linux-faqs:ADD
+linux-howtos:ADD
+kernel-source:REC
+amarok:OPT
+k3b:OPT
+kdeaccessibility:OPT
+kdeaddons:OPT
+kdeadmin:ADD
+kdeartwork:ADD
+kdebase:ADD
+kdebindings:OPT
+kdeedu:REC
+kdegames:REC
+kdegraphics:ADD
+kdelibs:ADD
+kdemultimedia:REC
+kdenetwork:REC
+kdepim:REC
+kdesdk:OPT
+kdetoys:REC
+kdeutils:ADD
+kdevelop:OPT
+kdewebdev:OPT
+knemo:OPT
+koffice:REC
+k3b-i18n:OPT
+kde-i18n-af:OPT
+kde-i18n-ar:OPT
+kde-i18n-az:OPT
+kde-i18n-be:OPT
+kde-i18n-bg:OPT
+kde-i18n-bn:OPT
+kde-i18n-br:OPT
+kde-i18n-bs:OPT
+kde-i18n-ca:OPT
+kde-i18n-cs:OPT
+kde-i18n-csb:OPT
+kde-i18n-cy:OPT
+kde-i18n-da:OPT
+kde-i18n-de:OPT
+kde-i18n-el:OPT
+kde-i18n-en_GB:OPT
+kde-i18n-eo:OPT
+kde-i18n-es:OPT
+kde-i18n-et:OPT
+kde-i18n-eu:OPT
+kde-i18n-fa:OPT
+kde-i18n-fi:OPT
+kde-i18n-fr:OPT
+kde-i18n-fy:OPT
+kde-i18n-ga:OPT
+kde-i18n-gl:OPT
+kde-i18n-he:OPT
+kde-i18n-hi:OPT
+kde-i18n-hr:OPT
+kde-i18n-hu:OPT
+kde-i18n-is:OPT
+kde-i18n-it:OPT
+kde-i18n-ja:OPT
+kde-i18n-kk:OPT
+kde-i18n-km:OPT
+kde-i18n-ko:OPT
+kde-i18n-lt:OPT
+kde-i18n-lv:OPT
+kde-i18n-mk:OPT
+kde-i18n-mn:OPT
+kde-i18n-ms:OPT
+kde-i18n-nb:OPT
+kde-i18n-nds:OPT
+kde-i18n-nl:OPT
+kde-i18n-nn:OPT
+kde-i18n-pa:OPT
+kde-i18n-pl:OPT
+kde-i18n-pt:OPT
+kde-i18n-pt_BR:OPT
+kde-i18n-ro:OPT
+kde-i18n-ru:OPT
+kde-i18n-rw:OPT
+kde-i18n-se:OPT
+kde-i18n-sk:OPT
+kde-i18n-sl:OPT
+kde-i18n-sr:OPT
+kde-i18n-sr@Latn:OPT
+kde-i18n-ss:OPT
+kde-i18n-sv:OPT
+kde-i18n-ta:OPT
+kde-i18n-te:OPT
+kde-i18n-tg:OPT
+kde-i18n-th:OPT
+kde-i18n-tr:OPT
+kde-i18n-uk:OPT
+kde-i18n-uz:OPT
+kde-i18n-vi:OPT
+kde-i18n-wa:OPT
+kde-i18n-zh_CN:OPT
+kde-i18n-zh_TW:OPT
+koffice-l10n-bg:OPT
+koffice-l10n-ca:OPT
+koffice-l10n-cs:OPT
+koffice-l10n-cy:OPT
+koffice-l10n-da:OPT
+koffice-l10n-de:OPT
+koffice-l10n-el:OPT
+koffice-l10n-en_GB:OPT
+koffice-l10n-es:OPT
+koffice-l10n-et:OPT
+koffice-l10n-eu:OPT
+koffice-l10n-fa:OPT
+koffice-l10n-fi:OPT
+koffice-l10n-fr:OPT
+koffice-l10n-ga:OPT
+koffice-l10n-gl:OPT
+koffice-l10n-hu:OPT
+koffice-l10n-it:OPT
+koffice-l10n-ja:OPT
+koffice-l10n-km:OPT
+koffice-l10n-lv:OPT
+koffice-l10n-ms:OPT
+koffice-l10n-nb:OPT
+koffice-l10n-nds:OPT
+koffice-l10n-ne:OPT
+koffice-l10n-nl:OPT
+koffice-l10n-pl:OPT
+koffice-l10n-pt:OPT
+koffice-l10n-pt_BR:OPT
+koffice-l10n-ru:OPT
+koffice-l10n-sk:OPT
+koffice-l10n-sl:OPT
+koffice-l10n-sr:OPT
+koffice-l10n-sr@Latn:OPT
+koffice-l10n-sv:OPT
+koffice-l10n-tr:OPT
+koffice-l10n-uk:OPT
+koffice-l10n-zh_CN:OPT
+koffice-l10n-zh_TW:OPT
+aalib:REC
+alsa-lib:ADD
+alsa-oss:OPT
+apr:REC
+apr-util:REC
+arts:ADD
+aspell:REC
+aspell-en:REC
+atk:REC
+audiofile:REC
+cairo:REC
+db42:REC
+db44:REC
+dbus:REC
+dbus-glib:REC
+dbus-python:REC
+dbus-qt3:REC
+desktop-file-utils:REC
+esound:REC
+expat:REC
+freetype:REC
+fribidi:REC
+fuse:OPT
+gamin:REC
+gd:REC
+gdbm:REC
+glib:REC
+glib2:REC
+glibc:REC
+glibc-i18n:OPT
+glibc-profile:OPT
+gmime:REC
+gmp:REC
+gnome-icon-theme:REC
+gtk+:REC
+gtk+2:REC
+hal:REC
+hal-info:REC
+hicolor-icon-theme:REC
+icon-naming-utils:REC
+imlib:REC
+jre:OPT
+lcms:REC
+lesstif:REC
+libaio:REC
+libao:REC
+libart_lgpl:REC
+libcaca:OPT
+libcddb:REC
+libcdio:REC
+libexif:REC
+libglade:REC
+libgpod:REC
+libgsf:REC
+libgtkhtml:REC
+libid3tag:REC
+libidl:REC
+libidn:REC
+libieee1284:REC
+libjpeg:REC
+libkarma:REC
+libmad:REC
+libmcs:REC
+libmng:REC
+libmowgli:REC
+libmtp:REC
+libnjb:REC
+libogg:REC
+libpng:REC
+librsvg:REC
+libtermcap:REC
+libtheora:REC
+libtiff:REC
+libungif:REC
+libusb:REC
+libvisual:REC
+libvorbis:REC
+libwmf:REC
+libwmf-docs:OPT
+libwnck:REC
+libwpd:REC
+libxml2:REC
+libxslt:REC
+lzo:OPT
+mhash:REC
+mm:REC
+mpfr:REC
+ncurses:REC
+neon:REC
+netpbm:REC
+pango:REC
+pcre:REC
+pilot-link:REC
+poppler:OPT
+poppler-data:OPT
+popt:REC
+pycairo:REC
+pygobject:REC
+pygtk:REC
+pyrex:REC
+qca:REC
+qca-tls:REC
+qt:ADD
+readline:REC
+sdl:REC
+shared-mime-info:REC
+slang:REC
+slang1:REC
+startup-notification:ADD
+svgalib:REC
+svgalib_helper:REC
+t1lib:REC
+taglib:REC
+tango-icon-theme:REC
+tango-icon-theme-extras:REC
+vte:REC
+wavpack:OPT
+wv2:REC
+zlib:REC
+autofs:OPT
+biff+comsat:OPT
+bind:REC
+bitchx:OPT
+bluez-firmware:ADD
+bluez-hcidump:ADD
+bluez-libs:ADD
+bluez-utils:ADD
+bootp:OPT
+bridge-utils:OPT
+bsd-finger:OPT
+curl:OPT
+cyrus-sasl:REC
+dhcp:OPT
+dhcpcd:REC
+dirmngr:REC
+dnsmasq:OPT
+elm:OPT
+epic4:OPT
+ethtool:OPT
+fetchmail:OPT
+getmail:REC
+gnupg:OPT
+gnupg2:REC
+gnutls:ADD
+gpa:REC
+gpgme:REC
+htdig:OPT
+httpd:OPT
+icmpinfo:OPT
+imapd:OPT
+inetd:REC
+iproute2:OPT
+iptables:ADD
+iptraf:OPT
+iputils:OPT
+ipw2100-fw:ADD
+ipw2200-fw:ADD
+irssi:OPT
+iwlwifi-3945-ucode:ADD
+iwlwifi-4965-ucode:ADD
+lftp:OPT
+libassuan:REC
+libgcrypt:REC
+libgpg-error:REC
+libksba:REC
+links:OPT
+lynx:OPT
+mailx:REC
+mcabber:OPT
+metamail:REC
+mtr:OPT
+mutt:OPT
+nc:OPT
+ncftp:OPT
+net-snmp:REC
+net-tools:OPT
+netatalk:OPT
+netdate:OPT
+netkit-bootparamd:OPT
+netkit-ftp:OPT
+netkit-ntalk:OPT
+netkit-routed:OPT
+netkit-rsh:OPT
+netkit-rusers:OPT
+netkit-rwall:OPT
+netkit-rwho:OPT
+netkit-timed:OPT
+netpipes:OPT
+netwatch:OPT
+network-scripts:ADD
+netwrite:OPT
+newspost:OPT
+nfs-utils:OPT
+nmap:OPT
+nn:OPT
+ntp:OPT
+obexftp:REC
+openldap-client:REC
+openobex:REC
+openssh:REC
+openssl:REC
+openvpn:OPT
+php:OPT
+pidentd:REC
+pine:OPT
+pinentry:REC
+popa3d:REC
+portmap:REC
+ppp:OPT
+procmail:REC
+proftpd:OPT
+pssh:OPT
+pth:REC
+rdist:OPT
+rp-pppoe:OPT
+rsync:OPT
+rt61-firmware:ADD
+rt71w-firmware:ADD
+samba:OPT
+sendmail:REC
+sendmail-cf:OPT
+slrn:OPT
+stunnel:OPT
+tcp_wrappers:REC
+tcpdump:REC
+telnet:REC
+tftp-hpa:OPT
+tin:OPT
+traceroute:OPT
+trn:OPT
+uucp:OPT
+vlan:OPT
+vsftpd:REC
+wget:OPT
+whois:OPT
+wireless-tools:OPT
+wpa_supplicant:REC
+yptools:OPT
+ytalk:OPT
+zd1211-firmware:ADD
+tetex:ADD
+tetex-doc:REC
+transfig:OPT
+xfig:OPT
+expect:OPT
+hfsutils:OPT
+tcl:ADD
+tclx:REC
+tix:OPT
+tk:REC
+anthy:REC
+appres:REC
+bdftopcf:REC
+beforelight:REC
+bigreqsproto:REC
+bitmap:REC
+compiz:REC
+compositeproto:REC
+damageproto:REC
+dejavu-fonts-ttf:REC
+dmxproto:REC
+editres:REC
+encodings:REC
+evieext:REC
+fixesproto:REC
+font-adobe-100dpi:REC
+font-adobe-75dpi:REC
+font-adobe-utopia-100dpi:REC
+font-adobe-utopia-75dpi:REC
+font-adobe-utopia-type1:REC
+font-alias:REC
+font-arabic-misc:REC
+font-bh-100dpi:REC
+font-bh-75dpi:REC
+font-bh-lucidatypewriter-100dpi:REC
+font-bh-lucidatypewriter-75dpi:REC
+font-bh-ttf:REC
+font-bh-type1:REC
+font-bitstream-100dpi:REC
+font-bitstream-75dpi:REC
+font-bitstream-speedo:REC
+font-bitstream-type1:REC
+font-cronyx-cyrillic:REC
+font-cursor-misc:REC
+font-daewoo-misc:REC
+font-dec-misc:REC
+font-ibm-type1:REC
+font-isas-misc:REC
+font-jis-misc:REC
+font-micro-misc:REC
+font-misc-cyrillic:REC
+font-misc-ethiopic:REC
+font-misc-meltho:REC
+font-misc-misc:REC
+font-mutt-misc:REC
+font-schumacher-misc:REC
+font-screen-cyrillic:REC
+font-sony-misc:REC
+font-sun-misc:REC
+font-util:REC
+font-winitzki-cyrillic:REC
+font-xfree86-type1:REC
+fontcacheproto:REC
+fontconfig:ADD
+fontsproto:REC
+fonttosfnt:REC
+fslsfonts:REC
+fstobdf:REC
+gccmakedep:REC
+glproto:REC
+iceauth:REC
+ico:REC
+imake:REC
+inputproto:REC
+kbproto:REC
+lbxproxy:REC
+libFS:REC
+libICE:REC
+libSM:REC
+libX11:REC
+libXScrnSaver:REC
+libXTrap:REC
+libXau:REC
+libXaw:REC
+libXcomposite:REC
+libXcursor:REC
+libXdamage:REC
+libXdmcp:REC
+libXevie:REC
+libXext:REC
+libXfixes:REC
+libXfont:REC
+libXfontcache:REC
+libXft:REC
+libXi:REC
+libXinerama:REC
+libXmu:REC
+libXp:REC
+libXpm:REC
+libXprintAppUtil:REC
+libXprintUtil:REC
+libXrandr:REC
+libXrender:REC
+libXres:REC
+libXt:REC
+libXtst:REC
+libXv:REC
+libXvMC:REC
+libXxf86dga:REC
+libXxf86misc:REC
+libXxf86vm:REC
+libdmx:REC
+libdrm:REC
+liberation-fonts-ttf:REC
+libfontenc:REC
+libhangul:REC
+liblbxutil:REC
+liboldX:REC
+libpciaccess:REC
+libpthread-stubs:REC
+libxcb:REC
+libxkbfile:REC
+libxkbui:REC
+listres:REC
+lndir:REC
+luit:REC
+m17n-lib:REC
+makedepend:REC
+mesa:REC
+mkcomposecache:REC
+mkfontdir:REC
+mkfontscale:REC
+oclock:REC
+pixman:REC
+printproto:REC
+proxymngr:REC
+randrproto:REC
+recordproto:REC
+rendercheck:REC
+renderproto:REC
+resourceproto:REC
+rgb:REC
+rstart:REC
+sazanami-fonts-ttf:REC
+scim:REC
+scim-anthy:REC
+scim-bridge:REC
+scim-hangul:REC
+scim-m17n:REC
+scim-pinyin:REC
+scim-tables:REC
+scripts:REC
+scrnsaverproto:REC
+sessreg:REC
+setxkbmap:REC
+showfont:REC
+sinhala_lklug-font-ttf:REC
+smproxy:REC
+tibmachuni-font-ttf:REC
+trapproto:REC
+ttf-indic-fonts:REC
+twm:REC
+util-macros:REC
+videoproto:REC
+viewres:REC
+wqy-zenhei-font-ttf:REC
+x11-skel:REC
+x11perf:REC
+xauth:REC
+xaw3d:REC
+xbacklight:REC
+xbiff:REC
+xbitmaps:REC
+xcalc:REC
+xcb-proto:REC
+xclipboard:REC
+xclock:REC
+xcmiscproto:REC
+xcmsdb:REC
+xcompmgr:REC
+xconsole:REC
+xcursor-themes:REC
+xcursorgen:REC
+xdbedizzy:REC
+xditview:REC
+xdm:REC
+xdpyinfo:REC
+xdriinfo:REC
+xedit:REC
+xev:REC
+xextproto:REC
+xeyes:REC
+xf86-input-aiptek:REC
+xf86-input-calcomp:REC
+xf86-input-citron:REC
+xf86-input-digitaledge:REC
+xf86-input-dynapro:REC
+xf86-input-elo2300:REC
+xf86-input-elographics:REC
+xf86-input-evdev:REC
+xf86-input-fpit:REC
+xf86-input-hyperpen:REC
+xf86-input-jamstudio:REC
+xf86-input-joystick:REC
+xf86-input-keyboard:REC
+xf86-input-magellan:REC
+xf86-input-magictouch:REC
+xf86-input-microtouch:REC
+xf86-input-mouse:REC
+xf86-input-mutouch:REC
+xf86-input-palmax:REC
+xf86-input-penmount:REC
+xf86-input-spaceorb:REC
+xf86-input-summa:REC
+xf86-input-tek4957:REC
+xf86-input-ur98:REC
+xf86-input-vmmouse:REC
+xf86-video-apm:REC
+xf86-video-ark:REC
+xf86-video-ast:REC
+xf86-video-ati:REC
+xf86-video-chips:REC
+xf86-video-cirrus:REC
+xf86-video-cyrix:REC
+xf86-video-dummy:REC
+xf86-video-fbdev:REC
+xf86-video-geode:REC
+xf86-video-glint:REC
+xf86-video-i128:REC
+xf86-video-i740:REC
+xf86-video-i810:REC
+xf86-video-imstt:REC
+xf86-video-intel:REC
+xf86-video-mga:REC
+xf86-video-neomagic:REC
+xf86-video-newport:REC
+xf86-video-nsc:REC
+xf86-video-nv:REC
+xf86-video-radeonhd:REC
+xf86-video-rendition:REC
+xf86-video-s3:REC
+xf86-video-s3virge:REC
+xf86-video-savage:REC
+xf86-video-siliconmotion:REC
+xf86-video-sis:REC
+xf86-video-sisusb:REC
+xf86-video-tdfx:REC
+xf86-video-tga:REC
+xf86-video-trident:REC
+xf86-video-tseng:REC
+xf86-video-v4l:REC
+xf86-video-vesa:REC
+xf86-video-vga:REC
+xf86-video-via:REC
+xf86-video-vmware:REC
+xf86-video-voodoo:REC
+xf86bigfontproto:REC
+xf86dga:REC
+xf86dgaproto:REC
+xf86driproto:REC
+xf86miscproto:REC
+xf86rushproto:REC
+xf86vidmodeproto:REC
+xfd:REC
+xfindproxy:REC
+xfontsel:REC
+xfs:REC
+xfsinfo:REC
+xfwp:REC
+xgamma:REC
+xgc:REC
+xhost:REC
+xineramaproto:REC
+xinit:REC
+xinput:REC
+xkbcomp:REC
+xkbevd:REC
+xkbprint:REC
+xkbutils:REC
+xkeyboard-config:REC
+xkill:REC
+xload:REC
+xlogo:REC
+xlsatoms:REC
+xlsclients:REC
+xlsfonts:REC
+xmag:REC
+xman:REC
+xmessage:REC
+xmh:REC
+xmodmap:REC
+xmore:REC
+xorg-cf-files:REC
+xorg-docs:REC
+xorg-server:REC
+xorg-server-xnest:REC
+xorg-server-xvfb:REC
+xorg-sgml-doctools:REC
+xphelloworld:REC
+xplsprinters:REC
+xpr:REC
+xprehashprinterlist:REC
+xprop:REC
+xproto:REC
+xproxymanagementprotocol:REC
+xrandr:REC
+xrdb:REC
+xrefresh:REC
+xrx:REC
+xset:REC
+xsetmode:REC
+xsetpointer:REC
+xsetroot:REC
+xsm:REC
+xstdcmap:REC
+xterm:REC
+xtrans:REC
+xtrap:REC
+xvidtune:REC
+xvinfo:REC
+xwd:REC
+xwininfo:REC
+xwud:REC
+audacious:REC
+audacious-plugins:REC
+blackbox:OPT
+fluxbox:OPT
+fvwm:REC
+gftp:OPT
+gimp:REC
+gimp-help-2:REC
+gkrellm:OPT
+gnuchess:REC
+gnuplot:OPT
+gqview:REC
+gucharmap:OPT
+gv:REC
+gxine:OPT
+imagemagick:REC
+mozilla-firefox:REC
+mozilla-thunderbird:REC
+pan:REC
+pidgin:OPT
+rdesktop:OPT
+rxvt:REC
+sane:OPT
+seamonkey:REC
+seyon:OPT
+vim-gvim:REC
+windowmaker:REC
+x3270:OPT
+xchat:OPT
+xfce:OPT
+xfractint:OPT
+xgames:REC
+xine-lib:REC
+xine-ui:REC
+xlockmore:REC
+xpaint:OPT
+xpdf:OPT
+xsane:OPT
+xscreensaver:REC
+xv:REC
+xxgdb:REC
+bsd-games:OPT
+# extras
+bash-completion
+bittornado
+bittorrent
+grub
+inn
+mpg123
+slackpkg
+slacktrack
diff --git a/tags/0.6rc1/templates/slackware-12.2/packages b/tags/0.6rc1/templates/slackware-12.2/packages
new file mode 100644
index 0000000..a2db7c6
--- /dev/null
+++ b/tags/0.6rc1/templates/slackware-12.2/packages
@@ -0,0 +1,970 @@
+aaa_base:ADD
+aaa_elflibs:ADD
+aaa_terminfo:REC
+acl:ADD
+acpid:REC
+apmd:REC
+attr:ADD
+bash:ADD
+bin:ADD
+bzip2:ADD
+coreutils:ADD
+cpio:ADD
+cryptsetup:OPT
+cups:REC
+cxxlibs:ADD
+dcron:ADD
+device-mapper:REC
+devs:ADD
+dialog:REC
+dosfstools:REC
+e2fsprogs:ADD
+ed:REC
+eject:REC
+elvis:ADD
+etc:ADD
+file:REC
+findutils:ADD
+floppy:ADD
+gawk:ADD
+genpower:OPT
+gettext:REC
+getty-ps:OPT
+glibc-solibs:ADD
+glibc-zoneinfo:ADD
+gpm:REC
+grep:ADD
+gzip:ADD
+hdparm:ADD
+infozip:ADD
+inotify-tools:REC
+isapnptools:OPT
+jfsutils:OPT
+kbd:REC
+kernel-firmware:ADD
+kernel-generic:REC
+kernel-generic-smp:REC
+kernel-huge:ADD
+kernel-huge-smp:ADD
+kernel-modules:ADD
+kernel-modules-smp:ADD
+less:ADD
+lha:REC
+lilo:ADD
+loadlin:REC
+logrotate:ADD
+lvm2:REC
+mdadm:OPT
+minicom:REC
+mkinitrd:REC
+module-init-tools:ADD
+mt-st:OPT
+mtx:REC
+ncompress:REC
+ntfs-3g:OPT
+openssl-solibs:ADD
+patch:REC
+pciutils:REC
+pcmciautils:REC
+pkgtools:ADD
+procps:ADD
+quota:OPT
+reiserfsprogs:ADD
+rpm2tgz:REC
+sdparm:ADD
+sed:ADD
+shadow:ADD
+sharutils:ADD
+slocate:ADD
+smartmontools:ADD
+splitvt:REC
+sysfsutils:REC
+sysklogd:ADD
+syslinux:ADD
+sysvinit:ADD
+sysvinit-functions:OPT
+sysvinit-scripts:ADD
+tar:ADD
+tcsh:REC
+time:REC
+tree:REC
+udev:ADD
+unarj:REC
+usbutils:ADD
+utempter:REC
+util-linux-ng:ADD
+which:REC
+xfsprogs:OPT
+zoo:REC
+a2ps:REC
+acct:OPT
+alsa-utils:REC
+amp:OPT
+ash:OPT
+at:OPT
+aumix:OPT
+bc:OPT
+bpe:OPT
+cdparanoia:OPT
+cdrdao:OPT
+cdrtools:OPT
+diffstat:REC
+diffutils:REC
+dmapi:REC
+dmidecode:ADD
+dvd+rw-tools:OPT
+enscript:OPT
+flac:OPT
+foomatic-filters:REC
+ghostscript:REC
+ghostscript-fonts-std:REC
+gphoto2:REC
+groff:ADD
+gutenprint:OPT
+hplip:REC
+ispell:OPT
+jed:OPT
+joe:OPT
+jove:OPT
+ksh93:OPT
+libx86:REC
+linuxdoc-tools:REC
+lm_sensors:REC
+lsof:OPT
+lsscsi:OPT
+madplay:OPT
+man:ADD
+man-pages:REC
+mc:OPT
+most:OPT
+mpg321:OPT
+mysql:OPT
+nano:REC
+normalize:OPT
+ntfsprogs:OPT
+pm-utils:OPT
+radeontool:REC
+rexima:REC
+rpm:OPT
+rzip:OPT
+sc:OPT
+screen:OPT
+seejpeg:REC
+slackpkg:REC
+sox:REC
+sqlite:OPT
+sudo:OPT
+sysstat:OPT
+texinfo:REC
+vbetool:REC
+vim:REC
+vorbis-tools:OPT
+workbone:OPT
+xfsdump:REC
+zsh:OPT
+autoconf:OPT
+automake:OPT
+binutils:ADD
+bison:ADD
+ccache:OPT
+clisp:OPT
+cmake:REC
+cscope:OPT
+cvs:REC
+dev86:ADD
+distcc:OPT
+doxygen:OPT
+flex:ADD
+gcc:ADD
+gcc-g++:REC
+gcc-gfortran:OPT
+gcc-gnat:OPT
+gcc-java:OPT
+gcc-objc:OPT
+gdb:REC
+gettext-tools:REC
+git:REC
+gperf:REC
+guile:OPT
+indent:OPT
+intltool:REC
+kernel-headers:ADD
+libtool:OPT
+m4:REC
+make:ADD
+mercurial:REC
+nasm:OPT
+oprofile:OPT
+p2c:OPT
+perl:REC
+pkg-config:REC
+pmake:REC
+python:REC
+rcs:REC
+ruby:REC
+strace:REC
+subversion:OPT
+emacs:ADD
+linux-faqs:ADD
+linux-howtos:ADD
+kernel-source:REC
+amarok:OPT
+k3b:OPT
+kdeaccessibility:OPT
+kdeaddons:OPT
+kdeadmin:ADD
+kdeartwork:ADD
+kdebase:ADD
+kdebindings:OPT
+kdeedu:REC
+kdegames:REC
+kdegraphics:ADD
+kdelibs:ADD
+kdemultimedia:REC
+kdenetwork:REC
+kdepim:REC
+kdesdk:OPT
+kdetoys:REC
+kdeutils:ADD
+kdevelop:OPT
+kdewebdev:OPT
+knemo:OPT
+koffice:REC
+k3b-i18n:OPT
+kde-i18n-af:OPT
+kde-i18n-ar:OPT
+kde-i18n-az:OPT
+kde-i18n-be:OPT
+kde-i18n-bg:OPT
+kde-i18n-bn:OPT
+kde-i18n-br:OPT
+kde-i18n-bs:OPT
+kde-i18n-ca:OPT
+kde-i18n-cs:OPT
+kde-i18n-csb:OPT
+kde-i18n-cy:OPT
+kde-i18n-da:OPT
+kde-i18n-de:OPT
+kde-i18n-el:OPT
+kde-i18n-en_GB:OPT
+kde-i18n-eo:OPT
+kde-i18n-es:OPT
+kde-i18n-et:OPT
+kde-i18n-eu:OPT
+kde-i18n-fa:OPT
+kde-i18n-fi:OPT
+kde-i18n-fr:OPT
+kde-i18n-fy:OPT
+kde-i18n-ga:OPT
+kde-i18n-gl:OPT
+kde-i18n-he:OPT
+kde-i18n-hi:OPT
+kde-i18n-hr:OPT
+kde-i18n-hu:OPT
+kde-i18n-is:OPT
+kde-i18n-it:OPT
+kde-i18n-ja:OPT
+kde-i18n-kk:OPT
+kde-i18n-km:OPT
+kde-i18n-ko:OPT
+kde-i18n-lt:OPT
+kde-i18n-lv:OPT
+kde-i18n-mk:OPT
+kde-i18n-mn:OPT
+kde-i18n-ms:OPT
+kde-i18n-nb:OPT
+kde-i18n-nds:OPT
+kde-i18n-nl:OPT
+kde-i18n-nn:OPT
+kde-i18n-pa:OPT
+kde-i18n-pl:OPT
+kde-i18n-pt:OPT
+kde-i18n-pt_BR:OPT
+kde-i18n-ro:OPT
+kde-i18n-ru:OPT
+kde-i18n-rw:OPT
+kde-i18n-se:OPT
+kde-i18n-sk:OPT
+kde-i18n-sl:OPT
+kde-i18n-sr:OPT
+kde-i18n-sr@Latn:OPT
+kde-i18n-ss:OPT
+kde-i18n-sv:OPT
+kde-i18n-ta:OPT
+kde-i18n-te:OPT
+kde-i18n-tg:OPT
+kde-i18n-th:OPT
+kde-i18n-tr:OPT
+kde-i18n-uk:OPT
+kde-i18n-uz:OPT
+kde-i18n-uz@cyrillic:OPT
+kde-i18n-vi:OPT
+kde-i18n-wa:OPT
+kde-i18n-zh_CN:OPT
+kde-i18n-zh_TW:OPT
+koffice-l10n-bg:OPT
+koffice-l10n-ca:OPT
+koffice-l10n-cs:OPT
+koffice-l10n-cy:OPT
+koffice-l10n-da:OPT
+koffice-l10n-de:OPT
+koffice-l10n-el:OPT
+koffice-l10n-en_GB:OPT
+koffice-l10n-es:OPT
+koffice-l10n-et:OPT
+koffice-l10n-eu:OPT
+koffice-l10n-fa:OPT
+koffice-l10n-fi:OPT
+koffice-l10n-fr:OPT
+koffice-l10n-ga:OPT
+koffice-l10n-gl:OPT
+koffice-l10n-hu:OPT
+koffice-l10n-it:OPT
+koffice-l10n-ja:OPT
+koffice-l10n-km:OPT
+koffice-l10n-lv:OPT
+koffice-l10n-ms:OPT
+koffice-l10n-nb:OPT
+koffice-l10n-nds:OPT
+koffice-l10n-ne:OPT
+koffice-l10n-nl:OPT
+koffice-l10n-pl:OPT
+koffice-l10n-pt:OPT
+koffice-l10n-pt_BR:OPT
+koffice-l10n-ru:OPT
+koffice-l10n-sk:OPT
+koffice-l10n-sl:OPT
+koffice-l10n-sr:OPT
+koffice-l10n-sr@Latn:OPT
+koffice-l10n-sv:OPT
+koffice-l10n-tr:OPT
+koffice-l10n-uk:OPT
+koffice-l10n-zh_CN:OPT
+koffice-l10n-zh_TW:OPT
+aalib:REC
+alsa-lib:ADD
+alsa-oss:OPT
+apr:REC
+apr-util:REC
+arts:ADD
+aspell:REC
+aspell-en:REC
+atk:REC
+audiofile:REC
+beecrypt:REC
+cairo:REC
+db42:REC
+db44:REC
+dbus:REC
+dbus-glib:REC
+dbus-python:REC
+dbus-qt3:REC
+desktop-file-utils:REC
+enchant:REC
+esound:REC
+expat:REC
+freetype:REC
+fribidi:REC
+fuse:OPT
+gamin:REC
+gd:REC
+gdbm:REC
+glib:REC
+glib2:REC
+glibc:REC
+glibc-i18n:OPT
+glibc-profile:OPT
+gmime:REC
+gmp:REC
+gnome-icon-theme:REC
+gst-plugins-base:ADD
+gstreamer:ADD
+gtk+:REC
+gtk+2:REC
+gtkspell:REC
+hal:REC
+hal-info:REC
+hicolor-icon-theme:REC
+icon-naming-utils:REC
+imlib:REC
+jre:OPT
+lcms:REC
+lesstif:REC
+libaio:REC
+libao:REC
+libart_lgpl:REC
+libcaca:OPT
+libcap:REC
+libcddb:REC
+libcdio:REC
+libexif:REC
+libglade:REC
+libgphoto2:REC
+libgpod:REC
+libgsf:REC
+libgtkhtml:REC
+libid3tag:REC
+libidl:REC
+libidn:REC
+libieee1284:REC
+libjpeg:REC
+libkarma:REC
+libmad:REC
+libmcs:REC
+libmng:REC
+libmowgli:REC
+libmtp:REC
+libnjb:REC
+libogg:REC
+liboil:REC
+libpng:REC
+libraw1394:REC
+librsvg:REC
+libtermcap:REC
+libtheora:REC
+libtiff:REC
+libungif:REC
+libusb:REC
+libvisual:REC
+libvisual-plugins:REC
+libvorbis:REC
+libwmf:REC
+libwmf-docs:OPT
+libwnck:REC
+libwpd:REC
+libxml2:REC
+libxslt:REC
+lzo:OPT
+mhash:REC
+mm:REC
+mpfr:REC
+ncurses:REC
+neon:REC
+netpbm:REC
+pango:REC
+parted:ADD
+pcre:REC
+pilot-link:REC
+poppler:OPT
+poppler-data:OPT
+popt:REC
+pycairo:REC
+pygobject:REC
+pygtk:REC
+pyrex:REC
+qca:REC
+qca-tls:REC
+qt:ADD
+readline:REC
+sdl:REC
+shared-mime-info:REC
+slang:REC
+slang1:REC
+startup-notification:ADD
+svgalib:REC
+svgalib_helper:REC
+t1lib:REC
+taglib:REC
+tango-icon-theme:REC
+tango-icon-theme-extras:REC
+vte:REC
+wavpack:OPT
+wv2:REC
+zlib:REC
+alpine:OPT
+autofs:OPT
+biff+comsat:OPT
+bind:REC
+bitchx:OPT
+bluez-firmware:ADD
+bluez-hcidump:ADD
+bluez-libs:ADD
+bluez-utils:ADD
+bootp:OPT
+bridge-utils:OPT
+bsd-finger:OPT
+curl:OPT
+cyrus-sasl:REC
+dhcp:OPT
+dhcpcd:REC
+dirmngr:REC
+dnsmasq:OPT
+elm:OPT
+epic4:OPT
+ethtool:OPT
+fetchmail:OPT
+getmail:REC
+gnupg:OPT
+gnupg2:REC
+gnutls:ADD
+gpa:REC
+gpgme:REC
+htdig:OPT
+httpd:OPT
+icmpinfo:OPT
+imapd:OPT
+inetd:REC
+iproute2:OPT
+iptables:ADD
+iptraf:OPT
+iputils:OPT
+ipw2100-fw:ADD
+ipw2200-fw:ADD
+irssi:OPT
+iwlwifi-3945-ucode:ADD
+iwlwifi-4965-ucode:ADD
+iwlwifi-5000-ucode:ADD
+lftp:OPT
+libassuan:REC
+libgcrypt:REC
+libgpg-error:REC
+libksba:REC
+links:OPT
+lynx:OPT
+mailx:REC
+mcabber:OPT
+metamail:REC
+mtr:OPT
+mutt:OPT
+nc:OPT
+ncftp:OPT
+net-snmp:REC
+net-tools:OPT
+netatalk:OPT
+netdate:OPT
+netkit-bootparamd:OPT
+netkit-ftp:OPT
+netkit-ntalk:OPT
+netkit-routed:OPT
+netkit-rsh:OPT
+netkit-rusers:OPT
+netkit-rwall:OPT
+netkit-rwho:OPT
+netkit-timed:OPT
+netpipes:OPT
+netwatch:OPT
+network-scripts:ADD
+netwrite:OPT
+newspost:OPT
+nfs-utils:OPT
+nmap:OPT
+nn:OPT
+ntp:OPT
+obexftp:REC
+openldap-client:REC
+openobex:REC
+openssh:REC
+openssl:REC
+openvpn:OPT
+php:OPT
+pidentd:REC
+pinentry:REC
+popa3d:REC
+portmap:REC
+ppp:OPT
+procmail:REC
+proftpd:OPT
+pssh:OPT
+pth:REC
+rdist:OPT
+rp-pppoe:OPT
+rsync:OPT
+rt61-firmware:ADD
+rt71w-firmware:ADD
+samba:OPT
+sendmail:REC
+sendmail-cf:OPT
+slrn:OPT
+stunnel:OPT
+tcp_wrappers:REC
+tcpdump:REC
+telnet:REC
+tftp-hpa:OPT
+tin:OPT
+traceroute:OPT
+trn:OPT
+uucp:OPT
+vlan:OPT
+vsftpd:REC
+wget:OPT
+whois:OPT
+wireless-tools:OPT
+wpa_supplicant:REC
+yptools:OPT
+ytalk:OPT
+zd1211-firmware:ADD
+tetex:ADD
+tetex-doc:REC
+transfig:OPT
+xfig:OPT
+expect:OPT
+hfsutils:OPT
+tcl:ADD
+tclx:REC
+tix:OPT
+tk:REC
+anthy:REC
+appres:REC
+bdftopcf:REC
+beforelight:REC
+bigreqsproto:REC
+bitmap:REC
+compiz:REC
+compositeproto:REC
+damageproto:REC
+dejavu-fonts-ttf:REC
+dmxproto:REC
+dri2proto:REC
+editres:REC
+encodings:REC
+evieext:REC
+fixesproto:REC
+font-adobe-100dpi:REC
+font-adobe-75dpi:REC
+font-adobe-utopia-100dpi:REC
+font-adobe-utopia-75dpi:REC
+font-adobe-utopia-type1:REC
+font-alias:REC
+font-arabic-misc:REC
+font-bh-100dpi:REC
+font-bh-75dpi:REC
+font-bh-lucidatypewriter-100dpi:REC
+font-bh-lucidatypewriter-75dpi:REC
+font-bh-ttf:REC
+font-bh-type1:REC
+font-bitstream-100dpi:REC
+font-bitstream-75dpi:REC
+font-bitstream-speedo:REC
+font-bitstream-type1:REC
+font-cronyx-cyrillic:REC
+font-cursor-misc:REC
+font-daewoo-misc:REC
+font-dec-misc:REC
+font-ibm-type1:REC
+font-isas-misc:REC
+font-jis-misc:REC
+font-micro-misc:REC
+font-misc-cyrillic:REC
+font-misc-ethiopic:REC
+font-misc-meltho:REC
+font-misc-misc:REC
+font-mutt-misc:REC
+font-schumacher-misc:REC
+font-screen-cyrillic:REC
+font-sony-misc:REC
+font-sun-misc:REC
+font-util:REC
+font-winitzki-cyrillic:REC
+font-xfree86-type1:REC
+fontcacheproto:REC
+fontconfig:ADD
+fontsproto:REC
+fonttosfnt:REC
+fslsfonts:REC
+fstobdf:REC
+gccmakedep:REC
+glproto:REC
+iceauth:REC
+ico:REC
+imake:REC
+inputproto:REC
+kbproto:REC
+lbxproxy:REC
+libFS:REC
+libICE:REC
+libSM:REC
+libX11:REC
+libXScrnSaver:REC
+libXTrap:REC
+libXau:REC
+libXaw:REC
+libXcomposite:REC
+libXcursor:REC
+libXdamage:REC
+libXdmcp:REC
+libXevie:REC
+libXext:REC
+libXfixes:REC
+libXfont:REC
+libXfontcache:REC
+libXft:REC
+libXi:REC
+libXinerama:REC
+libXmu:REC
+libXp:REC
+libXpm:REC
+libXprintAppUtil:REC
+libXprintUtil:REC
+libXrandr:REC
+libXrender:REC
+libXres:REC
+libXt:REC
+libXtst:REC
+libXv:REC
+libXvMC:REC
+libXxf86dga:REC
+libXxf86misc:REC
+libXxf86vm:REC
+libdmx:REC
+libdrm:REC
+liberation-fonts-ttf:REC
+libfontenc:REC
+libhangul:REC
+liblbxutil:REC
+liboldX:REC
+libpciaccess:REC
+libpthread-stubs:REC
+libxcb:REC
+libxkbfile:REC
+libxkbui:REC
+listres:REC
+lndir:REC
+luit:REC
+m17n-lib:REC
+makedepend:REC
+mesa:REC
+mkcomposecache:REC
+mkfontdir:REC
+mkfontscale:REC
+oclock:REC
+pixman:REC
+printproto:REC
+proxymngr:REC
+randrproto:REC
+recordproto:REC
+rendercheck:REC
+renderproto:REC
+resourceproto:REC
+rgb:REC
+rstart:REC
+sazanami-fonts-ttf:REC
+scim:REC
+scim-anthy:REC
+scim-bridge:REC
+scim-hangul:REC
+scim-m17n:REC
+scim-pinyin:REC
+scim-tables:REC
+scripts:REC
+scrnsaverproto:REC
+sessreg:REC
+setxkbmap:REC
+showfont:REC
+sinhala_lklug-font-ttf:REC
+smproxy:REC
+tibmachuni-font-ttf:REC
+trapproto:REC
+ttf-indic-fonts:REC
+twm:REC
+util-macros:REC
+videoproto:REC
+viewres:REC
+wqy-zenhei-font-ttf:REC
+x11-skel:REC
+x11perf:REC
+xauth:REC
+xaw3d:REC
+xbacklight:REC
+xbiff:REC
+xbitmaps:REC
+xcalc:REC
+xcb-proto:REC
+xclipboard:REC
+xclock:REC
+xcmiscproto:REC
+xcmsdb:REC
+xcompmgr:REC
+xconsole:REC
+xcursor-themes:REC
+xcursorgen:REC
+xdbedizzy:REC
+xdg-utils:OPT
+xditview:REC
+xdm:REC
+xdpyinfo:REC
+xdriinfo:REC
+xedit:REC
+xev:REC
+xextproto:REC
+xeyes:REC
+xf86-input-acecad:REC
+xf86-input-aiptek:REC
+xf86-input-calcomp:REC
+xf86-input-citron:REC
+xf86-input-digitaledge:REC
+xf86-input-dmc:REC
+xf86-input-dynapro:REC
+xf86-input-elo2300:REC
+xf86-input-elographics:REC
+xf86-input-evdev:REC
+xf86-input-fpit:REC
+xf86-input-hyperpen:REC
+xf86-input-jamstudio:REC
+xf86-input-joystick:REC
+xf86-input-keyboard:REC
+xf86-input-magellan:REC
+xf86-input-magictouch:REC
+xf86-input-microtouch:REC
+xf86-input-mouse:REC
+xf86-input-mutouch:REC
+xf86-input-palmax:REC
+xf86-input-penmount:REC
+xf86-input-spaceorb:REC
+xf86-input-summa:REC
+xf86-input-synaptics:REC
+xf86-input-tek4957:REC
+xf86-input-ur98:REC
+xf86-input-vmmouse:REC
+xf86-input-void:REC
+xf86-video-apm:REC
+xf86-video-ark:REC
+xf86-video-ast:REC
+xf86-video-ati:REC
+xf86-video-chips:REC
+xf86-video-cirrus:REC
+xf86-video-cyrix:REC
+xf86-video-dummy:REC
+xf86-video-fbdev:REC
+xf86-video-geode:REC
+xf86-video-glint:REC
+xf86-video-i128:REC
+xf86-video-i740:REC
+xf86-video-i810:REC
+xf86-video-imstt:REC
+xf86-video-intel:REC
+xf86-video-mach64:REC
+xf86-video-mga:REC
+xf86-video-neomagic:REC
+xf86-video-newport:REC
+xf86-video-nsc:REC
+xf86-video-nv:REC
+xf86-video-openchrome:REC
+xf86-video-r128:REC
+xf86-video-radeonhd:REC
+xf86-video-rendition:REC
+xf86-video-s3:REC
+xf86-video-s3virge:REC
+xf86-video-savage:REC
+xf86-video-siliconmotion:REC
+xf86-video-sis:REC
+xf86-video-sisusb:REC
+xf86-video-tdfx:REC
+xf86-video-tga:REC
+xf86-video-trident:REC
+xf86-video-tseng:REC
+xf86-video-v4l:REC
+xf86-video-vesa:REC
+xf86-video-vga:REC
+xf86-video-via:REC
+xf86-video-vmware:REC
+xf86-video-voodoo:REC
+xf86bigfontproto:REC
+xf86dga:REC
+xf86dgaproto:REC
+xf86driproto:REC
+xf86miscproto:REC
+xf86rushproto:REC
+xf86vidmodeproto:REC
+xfd:REC
+xfindproxy:REC
+xfontsel:REC
+xfs:REC
+xfsinfo:REC
+xfwp:REC
+xgamma:REC
+xgc:REC
+xhost:REC
+xineramaproto:REC
+xinit:REC
+xinput:REC
+xkbcomp:REC
+xkbevd:REC
+xkbprint:REC
+xkbutils:REC
+xkeyboard-config:REC
+xkill:REC
+xload:REC
+xlogo:REC
+xlsatoms:REC
+xlsclients:REC
+xlsfonts:REC
+xmag:REC
+xman:REC
+xmessage:REC
+xmh:REC
+xmodmap:REC
+xmore:REC
+xorg-cf-files:REC
+xorg-docs:REC
+xorg-server:REC
+xorg-server-xnest:REC
+xorg-server-xvfb:REC
+xorg-sgml-doctools:REC
+xphelloworld:REC
+xplsprinters:REC
+xpr:REC
+xprehashprinterlist:REC
+xprop:REC
+xproto:REC
+xproxymanagementprotocol:REC
+xrandr:REC
+xrdb:REC
+xrefresh:REC
+xrx:REC
+xset:REC
+xsetmode:REC
+xsetpointer:REC
+xsetroot:REC
+xsm:REC
+xstdcmap:REC
+xterm:REC
+xtrans:REC
+xtrap:REC
+xvidtune:REC
+xvinfo:REC
+xwd:REC
+xwininfo:REC
+xwud:REC
+audacious:REC
+audacious-plugins:REC
+blackbox:OPT
+fluxbox:OPT
+fvwm:REC
+gftp:OPT
+gimp:REC
+gimp-help-2:REC
+gkrellm:OPT
+gnuchess:REC
+gnuplot:OPT
+gqview:REC
+gucharmap:OPT
+gv:REC
+gxine:OPT
+imagemagick:REC
+mozilla-firefox:REC
+mozilla-thunderbird:REC
+pan:REC
+pidgin:OPT
+rdesktop:OPT
+rxvt:REC
+sane:OPT
+seamonkey:REC
+seyon:OPT
+vim-gvim:REC
+windowmaker:REC
+x3270:OPT
+xchat:OPT
+xfce:OPT
+xfractint:OPT
+xgames:REC
+xine-lib:REC
+xine-ui:REC
+xlockmore:REC
+xmms:OPT
+xpaint:OPT
+xpdf:OPT
+xsane:OPT
+xscreensaver:REC
+xv:REC
+xxgdb:REC
+bsd-games:OPT
diff --git a/tags/0.6rc1/templates/slamd64-11.0/packages b/tags/0.6rc1/templates/slamd64-11.0/packages
new file mode 100644
index 0000000..d6a0bb4
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-11.0/packages
@@ -0,0 +1,627 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+acl: ADD
+acpid: REC
+attr: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cpio: ADD
+cups: REC
+cxxlibs: ADD
+dcron: ADD
+devs: ADD
+devmapper: OPT
+e2fsprogs: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+floppy: ADD
+gawk: ADD
+genpower: OPT
+gettext: REC
+glibc-solibs: ADD
+glibc-zoneinfo: ADD
+gpm: REC
+grep: ADD
+gzip: ADD
+hdparm: ADD
+hotplug: ADD
+infozip: ADD
+jfsutils: OPT
+kbd: REC
+kernel-modules: ADD
+less: ADD
+lilo: ADD
+logrotate: ADD
+lvm2: OPT
+minicom: REC
+mkinitrd: REC
+module-init-tools: ADD
+openssl-solibs: ADD
+pciutils: OPT
+pcmcia-cs: REC
+pcmciautils: REC
+pkgtools: ADD
+procps: ADD
+reiserfsprogs: ADD
+sed: ADD
+shadow: ADD
+sharutils: ADD
+slocate: ADD
+smartmontools: ADD
+sysfsutils: REC
+sysklogd: ADD
+syslinux: ADD
+sysvinit: ADD
+tar: ADD
+tcsh: REC
+udev: ADD
+usbutils: ADD
+utempter: REC
+util-linux: ADD
+xfsprogs: OPT
+32atk: ADD
+32base: ADD
+32cairo: REC
+32gtk+: ADD
+32gtk+2: ADD
+32pango: ADD
+32x11: ADD
+linux32: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+acct: OPT
+alsa-utils: REC
+amp: OPT
+ash: OPT
+at: OPT
+aumix: OPT
+bc: OPT
+bpe: OPT
+cdparanoia: OPT
+cdrdao: OPT
+cdrtools: OPT
+diffutils: REC
+dmapi: REC
+dvd+rw-tools: OPT
+enscript: OPT
+espgs: REC
+flac: OPT
+gimp-print: OPT
+gnu-gs-fonts: REC
+groff: ADD
+hpijs: REC
+ispell: OPT
+jed: OPT
+joe: OPT
+jove: OPT
+ksh93: OPT
+linuxdoc-tools: REC
+lm_sensors: REC
+lsof: OPT
+madplay: OPT
+man: ADD
+man-pages: REC
+mc: OPT
+mdadm: OPT
+most: OPT
+mpg321: OPT
+mt-st: OPT
+mysql: OPT
+normalize: OPT
+quota: OPT
+raidtools: OPT
+rexima: REC
+rpm: OPT
+rzip: OPT
+sc: OPT
+screen: OPT
+sox: REC
+sudo: OPT
+sysstat: OPT
+texinfo: REC
+vim: OPT
+vorbis-tools: OPT
+workbone: OPT
+xfsdump: REC
+zsh: OPT
+autoconf: OPT
+automake: OPT
+bin86: ADD
+binutils: ADD
+bison: ADD
+byacc: OPT
+ccache: OPT
+clisp: OPT
+cscope: OPT
+cvs: REC
+distcc: OPT
+doxygen: OPT
+flex: ADD
+gcc: ADD
+gcc-g++: REC
+gcc-g77: OPT
+gcc-gnat: OPT
+gcc-java: OPT
+gcc-objc: OPT
+gdb: REC
+gettext-tools: REC
+guile: OPT
+git:REC
+indent: OPT
+kernel-headers: ADD
+libtool: OPT
+m4: REC
+make: ADD
+mercurial: REC
+nasm: OPT
+oprofile: OPT
+p2c: OPT
+perl: REC
+pkgconfig: REC
+pmake: REC
+python: OPT
+rcs: OPT
+ruby: REC
+strace: REC
+subversion: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+linux-faqs: ADD
+linux-howtos: ADD
+kernel-source: REC
+aalib: REC
+alsa-driver: ADD
+alsa-oss: OPT
+alsa-lib: ADD
+apr: REC
+apr-util: REC
+arts: ADD
+aspell: REC
+aspell-en: REC
+atk: REC
+audiofile: REC
+cairo: REC
+db42: REC
+db44: REC
+desktop-file-utils: REC
+esound: REC
+expat: REC
+freetype: REC
+fribidi: REC
+gdk-pixbuf: REC
+gd: REC
+gdbm: REC
+glib: REC
+glib2: REC
+glibc: REC
+glibc-i18n: OPT
+glut: REC
+gnome-icon-theme: REC
+gmp: REC
+gnet: REC
+gpgme: OPT
+gtk+: REC
+gtk+2: REC
+hicolor-icon-theme: REC
+imlib: REC
+jre: REC
+lcms: REC
+lesstif: REC
+libao: REC
+libart_lgpl: REC
+libassuan: OPT
+libcaca: OPT
+libexif: REC
+libgcrypt: OPT
+libglade: OPT
+libgpg-error: OPT
+libgpod: REC
+libgsf: REC
+libgtkhtml: REC
+libid3tag: REC
+libidl: REC
+libidn: REC
+libieee1284: REC
+libjpeg: REC
+libksba: OPT
+libmad: REC
+libmal: REC
+libmikmod: REC
+libmng: REC
+libmusicbrainz: REC
+libmtp: REC
+libnjb: REC
+libogg: REC
+libpng: REC
+librsvg: REC
+libtermcap: REC
+libtheora: REC
+libtiff: REC
+libtunepimp: REC
+libungif: REC
+libusb: REC
+libvisual: REC
+libvorbis: REC
+libwmf: REC
+libwmf-docs: OPT
+libwpd: REC
+libxml2: REC
+libxslt: REC
+mhash: REC
+mm: REC
+mpeg_lib: OPT
+mpfr: REC
+ncurses: REC
+neon: REC
+netpbm: REC
+pango: REC
+pcre: REC
+pilot-link: REC
+popt: REC
+pth: REC
+readline: REC
+sdl: REC
+shared-mime-info: REC
+slang1: REC
+slang: REC
+startup-notification: ADD
+svgalib: REC
+t1lib: REC
+taglib: REC
+wv2: REC
+xaw3d: REC
+zlib: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+autofs: OPT
+bind: REC
+bitchx: OPT
+bootp: OPT
+curl: OPT
+cyrus-sasl: REC
+dhcp: OPT
+dhcpcd: REC
+dnsmasq: OPT
+elm: OPT
+epic4: OPT
+fetchmail: OPT
+getmail: REC
+gnupg: OPT
+gnupg2: OPT
+imapd: OPT
+inetd: REC
+iproute2: OPT
+iptables: ADD
+iptraf: OPT
+irssi: OPT
+lftp: OPT
+links: OPT
+lynx: OPT
+metamail: REC
+mod_ssl: OPT
+mutt: OPT
+mailx: REC
+nc: OPT
+ncftp: OPT
+netatalk: OPT
+netpipes: OPT
+newspost: OPT
+nfs-utils: OPT
+nmap: OPT
+nn: OPT
+ntp: OPT
+openldap-client: REC
+openssh: REC
+openssl: REC
+php: OPT
+pidentd: REC
+pine: OPT
+pinentry: OPT
+popa3d: REC
+ppp: REC
+portmap: REC
+procmail: OPT
+proftpd: REC
+rdesktop: OPT
+rdist: OPT
+rp-pppoe: OPT
+rsync: OPT
+samba: OPT
+sendmail-cf: OPT
+sendmail: REC
+slrn: OPT
+stunnel: OPT
+tcpdump: REC
+tcpip: REC
+tin: OPT
+traceroute: OPT
+trn: OPT
+uucp: OPT
+vsftpd: REC
+wget: OPT
+whois: OPT
+wireless-tools: OPT
+yptools: OPT
+ytalk: REC
+dejavu-ttf: REC
+fontconfig: ADD
+ttf-indic-fonts: REC
+x11: ADD
+x11-devel: ADD
+x11-docs: REC
+x11-docs-html: OPT
+x11-fonts-100dpi: OPT
+x11-fonts-cyrillic: OPT
+x11-fonts-misc: ADD
+x11-fonts-scale: ADD
+x11-xdmx: OPT
+x11-xnest: OPT
+x11-xvfb: OPT
+blackbox: OPT
+fluxbox: OPT
+fvwm: OPT
+gaim: OPT
+gftp: OPT
+gimp: REC
+gimp-help-2: REC
+gkrellm: OPT
+gnuchess: REC
+gnuplot: OPT
+gucharmap: OPT
+gv: REC
+gxine: OPT
+imagemagick: REC
+mozilla-firefox: REC
+pan: REC
+rxvt: REC
+sane: OPT
+seamonkey: REC
+seyon: OPT
+vim-gvim: REC
+windowmaker: REC
+xfm: OPT
+x3270: OPT
+xchat: OPT
+xgames: OPT
+xfce: OPT
+xfractint: OPT
+xine-lib: REC
+xine-ui: REC
+xmms: OPT
+xpaint: OPT
+xpdf: OPT
+xsane: REC
+xlockmore: REC
+xscreensaver: REC
+xv: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+bsd-games: OPT
+# Tagfile for emacs series
+emacs: ADD
+emacs-misc: REC
+emacs-lisp: OPT
+emacs-leim: OPT
+emacs-nox: OPT
+emacs-info: REC
+tetex: ADD
+tetex-doc: REC
+xfig: OPT
+transfig: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+expect: OPT
+hfsutils: OPT
+tcl: ADD
+tclx: REC
+tk: REC
+tix: OPT
+amarok: OPT
+kdeaccessibility: OPT
+kdeaddons: OPT
+kdeadmin: ADD
+kdeartwork: ADD
+kdebase: ADD
+kdebindings: OPT
+kdeedu: REC
+kdegames: REC
+kdegraphics: ADD
+kdelibs: ADD
+kdemultimedia: REC
+kdenetwork: REC
+kdepim: REC
+kdesdk: OPT
+kdetoys: REC
+kdeutils: ADD
+kdevelop: OPT
+kdewebdev: OPT
+koffice: REC
+qca: REC
+qca-tls: REC
+qt: ADD
+# contrib packages section begins here
+slacktrack
+simplepkg
diff --git a/tags/0.6rc1/templates/slamd64-11.0/scripts/post-install.sh b/tags/0.6rc1/templates/slamd64-11.0/scripts/post-install.sh
new file mode 100755
index 0000000..d21fed0
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-11.0/scripts/post-install.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+#
+
+chroot $1/$2/ sbin/ldconfig
+
diff --git a/tags/0.6rc1/templates/slamd64-12.0/packages b/tags/0.6rc1/templates/slamd64-12.0/packages
new file mode 100644
index 0000000..d683aa6
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-12.0/packages
@@ -0,0 +1,910 @@
+aaa_base:ADD
+aaa_elflibs:ADD
+aaa_terminfo:REC
+acl:ADD
+acpid:REC
+attr:ADD
+bash:ADD
+bin:ADD
+bzip2:ADD
+coreutils:ADD
+cpio:ADD
+cryptsetup:OPT
+cups:REC
+cxxlibs:ADD
+dcron:ADD
+device-mapper:REC
+devs:ADD
+dialog:REC
+dosfstools:REC
+e2fsprogs:ADD
+ed:REC
+eject:REC
+elvis:ADD
+etc:ADD
+file:REC
+findutils:ADD
+floppy:ADD
+gawk:ADD
+genpower:OPT
+gettext:REC
+getty-ps:OPT
+glibc-solibs:ADD
+glibc-zoneinfo:ADD
+gpm:REC
+grep:ADD
+gzip:ADD
+hdparm:ADD
+infozip:ADD
+jfsutils:OPT
+kbd:REC
+kernel-generic:REC
+kernel-huge:ADD
+kernel-modules:ADD
+less:ADD
+lha:REC
+lilo:ADD
+logrotate:ADD
+lvm2:REC
+mdadm:OPT
+minicom:REC
+mkinitrd:REC
+module-init-tools:ADD
+mt-st:OPT
+mtx:REC
+ncompress:REC
+openssl-solibs:ADD
+patch:REC
+pciutils:OPT
+pcmciautils:REC
+pkgtools:ADD
+procps:ADD
+quota:OPT
+reiserfsprogs:ADD
+rpm2tgz:REC
+sdparm:ADD
+sed:ADD
+shadow:ADD
+sharutils:ADD
+slocate:ADD
+smartmontools:ADD
+splitvt:REC
+sysfsutils:REC
+sysklogd:ADD
+syslinux:ADD
+sysvinit:ADD
+sysvinit-functions:OPT
+sysvinit-scripts:ADD
+tar:ADD
+tcsh:REC
+time:REC
+tree:REC
+udev:ADD
+unarj:REC
+usbutils:ADD
+utempter:REC
+util-linux:ADD
+which:REC
+xfsprogs:OPT
+zoo:REC
+
+a2ps:REC
+acct:OPT
+alsa-utils:REC
+amp:OPT
+ash:OPT
+at:OPT
+aumix:OPT
+bc:OPT
+bpe:OPT
+cdparanoia:OPT
+cdrdao:OPT
+cdrtools:OPT
+diffstat:REC
+diffutils:REC
+dmapi:REC
+dmidecode:ADD
+dvd+rw-tools:OPT
+enscript:OPT
+espgs:REC
+flac:OPT
+ghostscript-fonts-std:REC
+gimp-print:OPT
+groff:ADD
+hplip:REC
+ispell:OPT
+jed:OPT
+joe:OPT
+jove:OPT
+ksh93:OPT
+linuxdoc-tools:REC
+lm_sensors:REC
+lsof:OPT
+lsscsi:OPT
+madplay:OPT
+man:ADD
+man-pages:REC
+mc:OPT
+most:OPT
+mpg321:OPT
+mysql:OPT
+nano:REC
+normalize:OPT
+rexima:REC
+rpm:OPT
+rzip:OPT
+sc:OPT
+screen:OPT
+sox:REC
+sudo:OPT
+sysstat:OPT
+texinfo:REC
+vim:REC
+vorbis-tools:OPT
+workbone:OPT
+xfsdump:REC
+zsh:OPT
+
+aaa_elflibs32:ADD
+alsa-lib32:ADD
+atk32:ADD
+cairo32:ADD
+devel32:SKP
+expat32:ADD
+gcc32:REC
+gcc32-g++:REC
+gcc32-gfortran:OFF
+gcc32-java:REC
+gcc32-objc:OFF
+glib2-32:ADD
+glibc32:ADD
+glibc32-i18n:REC
+gtk+2-32:ADD
+libtiff32:ADD
+linux32:ADD
+mesa32:ADD
+nspluginwrapper:ADD
+pango32:ADD
+qt32:ADD
+xlibs32:ADD
+
+autoconf:OPT
+automake:OPT
+bin86:ADD
+binutils:ADD
+bison:ADD
+ccache:OPT
+clisp:OPT
+cmake:REC
+cscope:OPT
+cvs:REC
+distcc:OPT
+doxygen:OPT
+flex:ADD
+gcc:ADD
+gcc-g++:REC
+gcc-gfortran:OPT
+gcc-gnat:OPT
+gcc-java:OPT
+gcc-objc:OPT
+gdb:REC
+gettext-tools:REC
+git:REC
+gperf:REC
+guile:OPT
+indent:OPT
+kernel-headers:ADD
+libtool:OPT
+m4:REC
+make:ADD
+mercurial:REC
+nasm:OPT
+oprofile:OPT
+p2c:OPT
+perl:REC
+pkg-config:REC
+pkghelpers:REC
+pmake:REC
+python:REC
+rcs:REC
+ruby:REC
+strace:REC
+subversion:OPT
+
+# Tagfile for emacs series
+emacs: ADD
+emacs-misc: REC
+emacs-lisp: OPT
+emacs-leim: OPT
+emacs-nox: OPT
+emacs-info: REC
+
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+linux-faqs: ADD
+linux-howtos: ADD
+
+kernel-source:REC
+
+amarok:OPT
+k3b:OPT
+kdeaccessibility:OPT
+kdeaddons:OPT
+kdeadmin:ADD
+kdeartwork:ADD
+kdebase:ADD
+kdebindings:OPT
+kdeedu:REC
+kdegames:REC
+kdegraphics:ADD
+kdelibs:ADD
+kdemultimedia:REC
+kdenetwork:REC
+kdepim:REC
+kdesdk:OPT
+kdetoys:REC
+kdeutils:ADD
+kdevelop:OPT
+kdewebdev:OPT
+knemo:OPT
+koffice:REC
+
+aalib:REC
+alsa-lib:ADD
+alsa-oss:OPT
+apr:REC
+apr-util:REC
+arts:ADD
+aspell:REC
+aspell-en:REC
+atk:REC
+audiofile:REC
+cairo:REC
+db42:REC
+db44:REC
+dbus:REC
+dbus-glib:REC
+dbus-qt3:REC
+desktop-file-utils:REC
+esound:REC
+expat:REC
+freetype:REC
+fribidi:REC
+gamin:REC
+gd:REC
+gdbm:REC
+glib:REC
+glib2:REC
+glibc:REC
+glibc-i18n:OPT
+glibc-profile:OPT
+gmime:REC
+gmp:REC
+gnome-icon-theme:REC
+gtk+:REC
+gtk+2:REC
+hal:REC
+hal-info:REC
+hicolor-icon-theme:REC
+imlib:REC
+jre:OPT
+lcms:REC
+lesstif:REC
+libao:REC
+libart_lgpl:REC
+libcaca:OPT
+libexif:REC
+libglade:REC
+libgpod:REC
+libgsf:REC
+libgtkhtml:REC
+libid3tag:REC
+libidl:REC
+libidn:REC
+libieee1284:REC
+libjpeg:REC
+libkarma:REC
+libmad:REC
+libmng:REC
+libmtp:REC
+libmusicbrainz:REC
+libnjb:REC
+libogg:REC
+libpng:REC
+librsvg:REC
+libtermcap:REC
+libtheora:REC
+libtiff:REC
+libtunepimp:REC
+libungif:REC
+libusb:REC
+libvisual:REC
+libvorbis:REC
+libwmf:REC
+libwmf-docs:OPT
+libwpd:REC
+libxml2:REC
+libxslt:REC
+lzo:OPT
+mcs:REC
+mhash:REC
+mm:REC
+mpfr:REC
+ncurses:REC
+neon:REC
+netpbm:REC
+pango:REC
+pcre:REC
+pilot-link:REC
+poppler:OPT
+poppler-data:OPT
+popt:REC
+qca:REC
+qca-tls:REC
+qt:ADD
+readline:REC
+sdl:REC
+shared-mime-info:REC
+slang:REC
+slang1:REC
+startup-notification:ADD
+svgalib:REC
+svgalib_helper:REC
+t1lib:REC
+taglib:REC
+vte:REC
+wv2:REC
+zlib:REC
+
+autofs:OPT
+biff+comsat:OPT
+bind:REC
+bitchx:OPT
+bluez-firmware:ADD
+bluez-hcidump:ADD
+bluez-libs:ADD
+bluez-utils:ADD
+bootp:OPT
+bridge-utils:OPT
+bsd-finger:OPT
+curl:OPT
+cyrus-sasl:REC
+dhcp:OPT
+dhcpcd:REC
+dirmngr:REC
+dnsmasq:OPT
+elm:OPT
+epic4:OPT
+ethtool:OPT
+fetchmail:OPT
+getmail:REC
+gnupg:OPT
+gnupg2:REC
+gnutls:ADD
+gpa:REC
+gpgme:REC
+htdig:OPT
+httpd:OPT
+icmpinfo:OPT
+imapd:OPT
+inetd:REC
+iproute2:OPT
+iptables:ADD
+iptraf:OPT
+iputils:OPT
+irssi:OPT
+lftp:OPT
+libassuan:REC
+libgcrypt:REC
+libgpg-error:REC
+libksba:REC
+links:OPT
+lynx:OPT
+mailx:REC
+mcabber:OPT
+metamail:REC
+mtr:OPT
+mutt:OPT
+nc:OPT
+ncftp:OPT
+net-snmp:REC
+net-tools:OPT
+netatalk:OPT
+netdate:OPT
+netkit-bootparamd:OPT
+netkit-ftp:OPT
+netkit-ntalk:OPT
+netkit-routed:OPT
+netkit-rsh:OPT
+netkit-rusers:OPT
+netkit-rwall:OPT
+netkit-rwho:OPT
+netkit-timed:OPT
+netpipes:OPT
+netwatch:OPT
+network-scripts:ADD
+netwrite:OPT
+newspost:OPT
+nfs-utils:OPT
+nmap:OPT
+nn:OPT
+ntp:OPT
+obexftp:REC
+openldap-client:REC
+openobex:REC
+openssh:REC
+openssl:REC
+openvpn:OPT
+php:OPT
+pidentd:REC
+pine:OPT
+pinentry:REC
+popa3d:REC
+portmap:REC
+ppp:OPT
+procmail:REC
+proftpd:OPT
+pssh:OPT
+pth:REC
+rdist:OPT
+rp-pppoe:OPT
+rsync:OPT
+samba:OPT
+sendmail:REC
+sendmail-cf:OPT
+slrn:OPT
+stunnel:OPT
+tcp_wrappers:REC
+tcpdump:REC
+telnet:REC
+tftp-hpa:OPT
+tin:OPT
+traceroute:OPT
+trn:OPT
+uucp:OPT
+vlan:OPT
+vsftpd:REC
+wget:OPT
+whois:OPT
+wireless-tools:OPT
+wpa_supplicant:REC
+yptools:OPT
+ytalk:OPT
+
+tetex: ADD
+tetex-doc: REC
+xfig: OPT
+transfig: OPT
+
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+expect: OPT
+hfsutils: OPT
+tcl: ADD
+tclx: REC
+tk: REC
+tix: OPT
+
+appres:REC
+bdftopcf:REC
+beforelight:REC
+bigreqsproto:REC
+bitmap:REC
+compiz:REC
+compositeproto:REC
+damageproto:REC
+dejavu-ttf:REC
+dmxproto:REC
+editres:REC
+encodings:REC
+evieext:REC
+fixesproto:REC
+font-adobe-100dpi:REC
+font-adobe-75dpi:REC
+font-adobe-utopia-100dpi:REC
+font-adobe-utopia-75dpi:REC
+font-adobe-utopia-type1:REC
+font-alias:REC
+font-arabic-misc:REC
+font-bh-100dpi:REC
+font-bh-75dpi:REC
+font-bh-lucidatypewriter-100dpi:REC
+font-bh-lucidatypewriter-75dpi:REC
+font-bh-ttf:REC
+font-bh-type1:REC
+font-bitstream-100dpi:REC
+font-bitstream-75dpi:REC
+font-bitstream-speedo:REC
+font-bitstream-type1:REC
+font-cronyx-cyrillic:REC
+font-cursor-misc:REC
+font-daewoo-misc:REC
+font-dec-misc:REC
+font-ibm-type1:REC
+font-isas-misc:REC
+font-jis-misc:REC
+font-micro-misc:REC
+font-misc-cyrillic:REC
+font-misc-ethiopic:REC
+font-misc-meltho:REC
+font-misc-misc:REC
+font-mutt-misc:REC
+font-schumacher-misc:REC
+font-screen-cyrillic:REC
+font-sony-misc:REC
+font-sun-misc:REC
+font-util:REC
+font-winitzki-cyrillic:REC
+font-xfree86-type1:REC
+fontcacheproto:REC
+fontconfig:ADD
+fontsproto:REC
+fonttosfnt:REC
+fslsfonts:REC
+fstobdf:REC
+gccmakedep:REC
+glproto:REC
+iceauth:REC
+ico:REC
+imake:REC
+inputproto:REC
+kbproto:REC
+lbxproxy:REC
+libFS:REC
+libICE:REC
+libSM:REC
+libX11:REC
+libXScrnSaver:REC
+libXTrap:REC
+libXau:REC
+libXaw:REC
+libXcomposite:REC
+libXcursor:REC
+libXdamage:REC
+libXdmcp:REC
+libXevie:REC
+libXext:REC
+libXfixes:REC
+libXfont:REC
+libXfontcache:REC
+libXft:REC
+libXi:REC
+libXinerama:REC
+libXmu:REC
+libXp:REC
+libXpm:REC
+libXprintAppUtil:REC
+libXprintUtil:REC
+libXrandr:REC
+libXrender:REC
+libXres:REC
+libXt:REC
+libXtst:REC
+libXv:REC
+libXvMC:REC
+libXxf86dga:REC
+libXxf86misc:REC
+libXxf86vm:REC
+libdmx:REC
+libdrm:REC
+libfontenc:REC
+liblbxutil:REC
+liboldX:REC
+libpthread-stubs:REC
+libxcb:REC
+libxkbfile:REC
+libxkbui:REC
+listres:REC
+lndir:REC
+luit:REC
+makedepend:REC
+mesa:REC
+mkcomposecache:REC
+mkfontdir:REC
+mkfontscale:REC
+oclock:REC
+printproto:REC
+proxymngr:REC
+randrproto:REC
+recordproto:REC
+rendercheck:REC
+renderproto:REC
+resourceproto:REC
+rgb:REC
+rstart:REC
+scripts:REC
+scrnsaverproto:REC
+sessreg:REC
+setxkbmap:REC
+showfont:REC
+smproxy:REC
+trapproto:REC
+ttf-indic-fonts:REC
+twm:REC
+util-macros:REC
+videoproto:REC
+viewres:REC
+x11-skel:REC
+x11perf:REC
+xauth:REC
+xaw3d:REC
+xbiff:REC
+xbitmaps:REC
+xcalc:REC
+xcb-proto:REC
+xclipboard:REC
+xclock:REC
+xcmiscproto:REC
+xcmsdb:REC
+xconsole:REC
+xcursor-themes:REC
+xcursorgen:REC
+xdbedizzy:REC
+xditview:REC
+xdm:REC
+xdpyinfo:REC
+xdriinfo:REC
+xedit:REC
+xev:REC
+xextproto:REC
+xeyes:REC
+xf86-input-acecad:REC
+xf86-input-aiptek:REC
+xf86-input-calcomp:REC
+xf86-input-digitaledge:REC
+xf86-input-elographics:REC
+xf86-input-evdev:REC
+xf86-input-fpit:REC
+xf86-input-hyperpen:REC
+xf86-input-jamstudio:REC
+xf86-input-joystick:REC
+xf86-input-keyboard:REC
+xf86-input-magellan:REC
+xf86-input-magictouch:REC
+xf86-input-mouse:REC
+xf86-input-mutouch:REC
+xf86-input-palmax:REC
+xf86-input-spaceorb:REC
+xf86-input-summa:REC
+xf86-input-tek4957:REC
+xf86-input-ur98:REC
+xf86-input-vmmouse:REC
+xf86-input-void:REC
+xf86-video-apm:REC
+xf86-video-ark:REC
+xf86-video-ast:REC
+xf86-video-ati:REC
+xf86-video-chips:REC
+xf86-video-cirrus:REC
+xf86-video-cyrix:REC
+xf86-video-dummy:REC
+xf86-video-fbdev:REC
+xf86-video-glint:REC
+xf86-video-i128:REC
+xf86-video-i740:REC
+xf86-video-i810:REC
+xf86-video-imstt:REC
+xf86-video-intel:REC
+xf86-video-mga:REC
+xf86-video-neomagic:REC
+xf86-video-newport:REC
+xf86-video-nsc:REC
+xf86-video-nv:REC
+xf86-video-rendition:REC
+xf86-video-s3:REC
+xf86-video-s3virge:REC
+xf86-video-savage:REC
+xf86-video-siliconmotion:REC
+xf86-video-sis:REC
+xf86-video-sisusb:REC
+xf86-video-tdfx:REC
+xf86-video-tga:REC
+xf86-video-trident:REC
+xf86-video-tseng:REC
+xf86-video-v4l:REC
+xf86-video-vesa:REC
+xf86-video-vga:REC
+xf86-video-via:REC
+xf86-video-vmware:REC
+xf86-video-voodoo:REC
+xf86bigfontproto:REC
+xf86dga:REC
+xf86dgaproto:REC
+xf86driproto:REC
+xf86miscproto:REC
+xf86rushproto:REC
+xf86vidmodeproto:REC
+xfd:REC
+xfindproxy:REC
+xfontsel:REC
+xfs:REC
+xfsinfo:REC
+xfwp:REC
+xgamma:REC
+xgc:REC
+xhost:REC
+xineramaproto:REC
+xinit:REC
+xkbcomp:REC
+xkbevd:REC
+xkbprint:REC
+xkbutils:REC
+xkeyboard-config:REC
+xkill:REC
+xload:REC
+xlogo:REC
+xlsatoms:REC
+xlsclients:REC
+xlsfonts:REC
+xmag:REC
+xman:REC
+xmessage:REC
+xmh:REC
+xmodmap:REC
+xmore:REC
+xorg-cf-files:REC
+xorg-docs:REC
+xorg-server:REC
+xorg-server-xdmx:REC
+xorg-server-xnest:REC
+xorg-server-xvfb:REC
+xorg-sgml-doctools:REC
+xphelloworld:REC
+xplsprinters:REC
+xpr:REC
+xprehashprinterlist:REC
+xprop:REC
+xproto:REC
+xproxymanagementprotocol:REC
+xrandr:REC
+xrdb:REC
+xrefresh:REC
+xrx:REC
+xset:REC
+xsetmode:REC
+xsetpointer:REC
+xsetroot:REC
+xsm:REC
+xstdcmap:REC
+xterm:REC
+xtrans:REC
+xtrap:REC
+xvidtune:REC
+xvinfo:REC
+xwd:REC
+xwininfo:REC
+xwud:REC
+
+audacious:REC
+audacious-plugins:REC
+blackbox:OPT
+fluxbox:OPT
+fvwm:REC
+gftp:OPT
+gimp:REC
+gimp-help-2:REC
+gkrellm:OPT
+gnuchess:REC
+gnuplot:OPT
+gqview:REC
+gucharmap:OPT
+gv:REC
+gxine:OPT
+imagemagick:REC
+mozilla-firefox:REC
+mozilla-thunderbird:REC
+pan:REC
+pidgin:OPT
+rdesktop:OPT
+rxvt:REC
+sane:OPT
+seamonkey:REC
+seyon:OPT
+vim-gvim:REC
+windowmaker:REC
+x3270:OPT
+xchat:OPT
+xfce:OPT
+xfractint:OPT
+xgames:REC
+xine-lib:REC
+xine-ui:REC
+xlockmore:REC
+xpaint:OPT
+xpdf:OPT
+xsane:OPT
+xscreensaver:REC
+xv:REC
+
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+bsd-games: OPT
+
diff --git a/tags/0.6rc1/templates/slamd64-12.0/scripts/post-install.sh b/tags/0.6rc1/templates/slamd64-12.0/scripts/post-install.sh
new file mode 100755
index 0000000..d21fed0
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-12.0/scripts/post-install.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+#
+
+chroot $1/$2/ sbin/ldconfig
+
diff --git a/tags/0.6rc1/templates/slamd64-12.1/packages b/tags/0.6rc1/templates/slamd64-12.1/packages
new file mode 100644
index 0000000..0a38687
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-12.1/packages
@@ -0,0 +1,844 @@
+
+aaa_base:ADD
+aaa_elflibs:ADD
+aaa_terminfo:REC
+acl:ADD
+acpid:REC
+attr:ADD
+bash:ADD
+bin:ADD
+bzip2:ADD
+coreutils:ADD
+cpio:ADD
+cryptsetup:OPT
+cups:REC
+cxxlibs:ADD
+dcron:ADD
+device-mapper:REC
+devs:ADD
+dialog:REC
+dosfstools:REC
+e2fsprogs:ADD
+ed:REC
+eject:REC
+elvis:ADD
+etc:ADD
+file:REC
+findutils:ADD
+floppy:ADD
+gawk:ADD
+genpower:OPT
+gettext:REC
+getty-ps:OPT
+glibc-solibs:ADD
+glibc-zoneinfo:ADD
+gpm:REC
+grep:ADD
+gzip:ADD
+hdparm:ADD
+infozip:ADD
+inotify-tools:REC
+jfsutils:OPT
+kbd:REC
+kernel-generic:REC
+kernel-huge:ADD
+kernel-modules:ADD
+less:ADD
+lha:REC
+lilo:ADD
+logrotate:ADD
+lvm2:REC
+mdadm:OPT
+minicom:REC
+mkinitrd:REC
+module-init-tools:ADD
+mt-st:OPT
+mtx:REC
+ncompress:REC
+ntfs-3g:OPT
+openssl-solibs:ADD
+patch:REC
+pciutils:REC
+pcmciautils:REC
+pkgtools:ADD
+procps:ADD
+quota:OPT
+reiserfsprogs:ADD
+rpm2tgz:REC
+sdparm:ADD
+sed:ADD
+shadow:ADD
+sharutils:ADD
+slocate:ADD
+smartmontools:ADD
+splitvt:REC
+sysfsutils:REC
+sysklogd:ADD
+syslinux:ADD
+sysvinit:ADD
+sysvinit-functions:OPT
+sysvinit-scripts:ADD
+tar:ADD
+tcsh:REC
+time:REC
+tree:REC
+udev:ADD
+unarj:REC
+usbutils:ADD
+utempter:REC
+util-linux-ng:ADD
+which:REC
+xfsprogs:OPT
+zoo:REC
+a2ps:REC
+acct:OPT
+alsa-utils:REC
+amp:OPT
+ash:OPT
+at:OPT
+aumix:OPT
+bc:OPT
+bpe:OPT
+cdparanoia:OPT
+cdrdao:OPT
+cdrtools:OPT
+diffstat:REC
+diffutils:REC
+dmapi:REC
+dmidecode:ADD
+dvd+rw-tools:OPT
+enscript:OPT
+flac:OPT
+foomatic-filters:REC
+ghostscript:REC
+ghostscript-fonts-std:REC
+groff:ADD
+gutenprint:OPT
+hplip:REC
+ispell:OPT
+jed:OPT
+joe:OPT
+jove:OPT
+ksh93:OPT
+linuxdoc-tools:REC
+lm_sensors:REC
+lsof:OPT
+lsscsi:OPT
+madplay:OPT
+man:ADD
+man-pages:REC
+mc:OPT
+most:OPT
+mpg321:OPT
+mysql:OPT
+nano:REC
+normalize:OPT
+ntfsprogs:OPT
+rexima:REC
+rpm:OPT
+rzip:OPT
+sc:OPT
+screen:OPT
+seejpeg:REC
+sox:REC
+sudo:OPT
+sysstat:OPT
+texinfo:REC
+vim:REC
+vorbis-tools:OPT
+workbone:OPT
+xfsdump:REC
+zsh:OPT
+aaa_elflibs32:ADD
+alsa-lib32:ADD
+atk32:ADD
+cairo32:ADD
+devel32:OPT
+expat32:ADD
+gcc32:REC
+gcc32-g++:REC
+gcc32-gfortran:OPT
+gcc32-java:REC
+gcc32-objc:OPT
+glib2-32:ADD
+glibc32:ADD
+glibc32-i18n:REC
+gtk+2-32:ADD
+libtiff32:ADD
+linux32:ADD
+mesa32:ADD
+nspluginwrapper:ADD
+pango32:ADD
+qt32:ADD
+xlibs32:ADD
+emacs:ADD
+linux-faqs:ADD
+linux-howtos:ADD
+aalib:REC
+alsa-lib:ADD
+alsa-oss:OPT
+apr:REC
+apr-util:REC
+arts:ADD
+aspell:REC
+aspell-en:REC
+atk:REC
+audiofile:REC
+cairo:REC
+db42:REC
+db44:REC
+dbus:REC
+dbus-glib:REC
+dbus-python:REC
+dbus-qt3:REC
+desktop-file-utils:REC
+esound:REC
+expat:REC
+freetype:REC
+fribidi:REC
+fuse:OPT
+gamin:REC
+gd:REC
+gdbm:REC
+glib:REC
+glib2:REC
+glibc:REC
+glibc-i18n:OPT
+glibc-profile:OPT
+gmime:REC
+gmp:REC
+gnome-icon-theme:REC
+gtk+:REC
+gtk+2:REC
+hal:REC
+hal-info:REC
+hicolor-icon-theme:REC
+icon-naming-utils:REC
+imlib:REC
+jre:OPT
+lcms:REC
+lesstif:REC
+libaio:REC
+libao:REC
+libart_lgpl:REC
+libcaca:OPT
+libcddb:REC
+libcdio:REC
+libexif:REC
+libglade:REC
+libgpod:REC
+libgsf:REC
+libgtkhtml:REC
+libid3tag:REC
+libidl:REC
+libidn:REC
+libieee1284:REC
+libjpeg:REC
+libkarma:REC
+libmad:REC
+libmcs:REC
+libmng:REC
+libmowgli:REC
+libmtp:REC
+libnjb:REC
+libogg:REC
+libpng:REC
+librsvg:REC
+libtermcap:REC
+libtheora:REC
+libtiff:REC
+libungif:REC
+libusb:REC
+libvisual:REC
+libvorbis:REC
+libwmf:REC
+libwmf-docs:OPT
+libwnck:REC
+libwpd:REC
+libxml2:REC
+libxslt:REC
+lzo:OPT
+mhash:REC
+mm:REC
+mpfr:REC
+ncurses:REC
+neon:REC
+netpbm:REC
+pango:REC
+pcre:REC
+pilot-link:REC
+poppler:OPT
+poppler-data:OPT
+popt:REC
+pycairo:REC
+pygobject:REC
+pygtk:REC
+pyrex:REC
+qca:REC
+qca-tls:REC
+qt:ADD
+readline:REC
+sdl:REC
+shared-mime-info:REC
+slang:REC
+slang1:REC
+startup-notification:ADD
+svgalib:REC
+svgalib_helper:REC
+t1lib:REC
+taglib:REC
+tango-icon-theme:REC
+tango-icon-theme-extras:REC
+vte:REC
+wavpack:OPT
+wv2:REC
+zlib:REC
+autofs:OPT
+biff+comsat:OPT
+bind:REC
+bitchx:OPT
+bluez-firmware:ADD
+bluez-hcidump:ADD
+bluez-libs:ADD
+bluez-utils:ADD
+bootp:OPT
+bridge-utils:OPT
+bsd-finger:OPT
+curl:OPT
+cyrus-sasl:REC
+dhcp:OPT
+dhcpcd:REC
+dirmngr:REC
+dnsmasq:OPT
+elm:OPT
+epic4:OPT
+ethtool:OPT
+fetchmail:OPT
+getmail:REC
+gnupg:OPT
+gnupg2:REC
+gnutls:ADD
+gpa:REC
+gpgme:REC
+htdig:OPT
+httpd:OPT
+icmpinfo:OPT
+imapd:OPT
+inetd:REC
+iproute2:OPT
+iptables:ADD
+iptraf:OPT
+iputils:OPT
+ipw2100-fw:ADD
+ipw2200-fw:ADD
+irssi:OPT
+iwlwifi-3945-ucode:ADD
+iwlwifi-4965-ucode:ADD
+lftp:OPT
+libassuan:REC
+libgcrypt:REC
+libgpg-error:REC
+libksba:REC
+links:OPT
+lynx:OPT
+mailx:REC
+mcabber:OPT
+metamail:REC
+mtr:OPT
+mutt:OPT
+nc:OPT
+ncftp:OPT
+net-snmp:REC
+net-tools:OPT
+netatalk:OPT
+netdate:OPT
+netkit-bootparamd:OPT
+netkit-ftp:OPT
+netkit-ntalk:OPT
+netkit-routed:OPT
+netkit-rsh:OPT
+netkit-rusers:OPT
+netkit-rwall:OPT
+netkit-rwho:OPT
+netkit-timed:OPT
+netpipes:OPT
+netwatch:OPT
+network-scripts:ADD
+netwrite:OPT
+newspost:OPT
+nfs-utils:OPT
+nmap:OPT
+nn:OPT
+ntp:OPT
+obexftp:REC
+openldap-client:REC
+openobex:REC
+openssh:REC
+openssl:REC
+openvpn:OPT
+php:OPT
+pidentd:REC
+pine:OPT
+pinentry:REC
+popa3d:REC
+portmap:REC
+ppp:OPT
+procmail:REC
+proftpd:OPT
+pssh:OPT
+pth:REC
+rdist:OPT
+rp-pppoe:OPT
+rsync:OPT
+rt61-firmware:ADD
+rt71w-firmware:ADD
+samba:OPT
+sendmail:REC
+sendmail-cf:OPT
+slrn:OPT
+stunnel:OPT
+tcp_wrappers:REC
+tcpdump:REC
+telnet:REC
+tftp-hpa:OPT
+tin:OPT
+traceroute:OPT
+trn:OPT
+uucp:OPT
+vlan:OPT
+vsftpd:REC
+wget:OPT
+whois:OPT
+wireless-tools:OPT
+wpa_supplicant:REC
+yptools:OPT
+ytalk:OPT
+zd1211-firmware:ADD
+expect:OPT
+hfsutils:OPT
+tcl:ADD
+tclx:REC
+tix:OPT
+tk:REC
+bsd-games:OPT
+amarok:OPT
+k3b:OPT
+kdeaccessibility:OPT
+kdeaddons:OPT
+kdeadmin:ADD
+kdeartwork:ADD
+kdebase:ADD
+kdebindings:OPT
+kdeedu:REC
+kdegames:REC
+kdegraphics:ADD
+kdelibs:ADD
+kdemultimedia:REC
+kdenetwork:REC
+kdepim:REC
+kdesdk:OPT
+kdetoys:REC
+kdeutils:ADD
+kdevelop:OPT
+kdewebdev:OPT
+knemo:OPT
+koffice:REC
+anthy:REC
+appres:REC
+bdftopcf:REC
+beforelight:REC
+bigreqsproto:REC
+bitmap:REC
+compiz:REC
+compositeproto:REC
+damageproto:REC
+dejavu-fonts-ttf:REC
+dmxproto:REC
+editres:REC
+encodings:REC
+evieext:REC
+fixesproto:REC
+font-adobe-100dpi:REC
+font-adobe-75dpi:REC
+font-adobe-utopia-100dpi:REC
+font-adobe-utopia-75dpi:REC
+font-adobe-utopia-type1:REC
+font-alias:REC
+font-arabic-misc:REC
+font-bh-100dpi:REC
+font-bh-75dpi:REC
+font-bh-lucidatypewriter-100dpi:REC
+font-bh-lucidatypewriter-75dpi:REC
+font-bh-ttf:REC
+font-bh-type1:REC
+font-bitstream-100dpi:REC
+font-bitstream-75dpi:REC
+font-bitstream-speedo:REC
+font-bitstream-type1:REC
+font-cronyx-cyrillic:REC
+font-cursor-misc:REC
+font-daewoo-misc:REC
+font-dec-misc:REC
+font-ibm-type1:REC
+font-isas-misc:REC
+font-jis-misc:REC
+font-micro-misc:REC
+font-misc-cyrillic:REC
+font-misc-ethiopic:REC
+font-misc-meltho:REC
+font-misc-misc:REC
+font-mutt-misc:REC
+font-schumacher-misc:REC
+font-screen-cyrillic:REC
+font-sony-misc:REC
+font-sun-misc:REC
+font-util:REC
+font-winitzki-cyrillic:REC
+font-xfree86-type1:REC
+fontcacheproto:REC
+fontconfig:ADD
+fontsproto:REC
+fonttosfnt:REC
+fslsfonts:REC
+fstobdf:REC
+gccmakedep:REC
+glproto:REC
+iceauth:REC
+ico:REC
+imake:REC
+inputproto:REC
+kbproto:REC
+lbxproxy:REC
+libFS:REC
+libICE:REC
+libSM:REC
+libX11:REC
+libXScrnSaver:REC
+libXTrap:REC
+libXau:REC
+libXaw:REC
+libXcomposite:REC
+libXcursor:REC
+libXdamage:REC
+libXdmcp:REC
+libXevie:REC
+libXext:REC
+libXfixes:REC
+libXfont:REC
+libXfontcache:REC
+libXft:REC
+libXi:REC
+libXinerama:REC
+libXmu:REC
+libXp:REC
+libXpm:REC
+libXprintAppUtil:REC
+libXprintUtil:REC
+libXrandr:REC
+libXrender:REC
+libXres:REC
+libXt:REC
+libXtst:REC
+libXv:REC
+libXvMC:REC
+libXxf86dga:REC
+libXxf86misc:REC
+libXxf86vm:REC
+libdmx:REC
+libdrm:REC
+liberation-fonts-ttf:REC
+libfontenc:REC
+libhangul:REC
+liblbxutil:REC
+liboldX:REC
+libpciaccess:REC
+libpthread-stubs:REC
+libxcb:REC
+libxkbfile:REC
+libxkbui:REC
+listres:REC
+lndir:REC
+luit:REC
+m17n-lib:REC
+makedepend:REC
+mesa:REC
+mkcomposecache:REC
+mkfontdir:REC
+mkfontscale:REC
+oclock:REC
+pixman:REC
+printproto:REC
+proxymngr:REC
+randrproto:REC
+recordproto:REC
+rendercheck:REC
+renderproto:REC
+resourceproto:REC
+rgb:REC
+rstart:REC
+sazanami-fonts-ttf:REC
+scim:REC
+scim-anthy:REC
+scim-bridge:REC
+scim-hangul:REC
+scim-m17n:REC
+scim-pinyin:REC
+scim-tables:REC
+scripts:REC
+scrnsaverproto:REC
+sessreg:REC
+setxkbmap:REC
+showfont:REC
+sinhala_lklug-font-ttf:REC
+smproxy:REC
+tibmachuni-font-ttf:REC
+trapproto:REC
+ttf-indic-fonts:REC
+twm:REC
+util-macros:REC
+videoproto:REC
+viewres:REC
+wqy-zenhei-font-ttf:REC
+x11-skel:REC
+x11perf:REC
+xauth:REC
+xaw3d:REC
+xbacklight:REC
+xbiff:REC
+xbitmaps:REC
+xcalc:REC
+xcb-proto:REC
+xclipboard:REC
+xclock:REC
+xcmiscproto:REC
+xcmsdb:REC
+xcompmgr:REC
+xconsole:REC
+xcursor-themes:REC
+xcursorgen:REC
+xdbedizzy:REC
+xditview:REC
+xdm:REC
+xdpyinfo:REC
+xdriinfo:REC
+xedit:REC
+xev:REC
+xextproto:REC
+xeyes:REC
+xf86-input-aiptek:REC
+xf86-input-calcomp:REC
+xf86-input-citron:REC
+xf86-input-digitaledge:REC
+xf86-input-dynapro:REC
+xf86-input-elo2300:REC
+xf86-input-elographics:REC
+xf86-input-evdev:REC
+xf86-input-fpit:REC
+xf86-input-hyperpen:REC
+xf86-input-jamstudio:REC
+xf86-input-joystick:REC
+xf86-input-keyboard:REC
+xf86-input-magellan:REC
+xf86-input-magictouch:REC
+xf86-input-microtouch:REC
+xf86-input-mouse:REC
+xf86-input-mutouch:REC
+xf86-input-palmax:REC
+xf86-input-penmount:REC
+xf86-input-spaceorb:REC
+xf86-input-summa:REC
+xf86-input-tek4957:REC
+xf86-input-ur98:REC
+xf86-input-vmmouse:REC
+xf86-video-apm:REC
+xf86-video-ark:REC
+xf86-video-ast:REC
+xf86-video-ati:REC
+xf86-video-chips:REC
+xf86-video-cirrus:REC
+xf86-video-cyrix:REC
+xf86-video-dummy:REC
+xf86-video-fbdev:REC
+xf86-video-glint:REC
+xf86-video-i128:REC
+xf86-video-i740:REC
+xf86-video-i810:REC
+xf86-video-imstt:REC
+xf86-video-intel:REC
+xf86-video-mga:REC
+xf86-video-neomagic:REC
+xf86-video-newport:REC
+xf86-video-nsc:REC
+xf86-video-nv:REC
+xf86-video-radeonhd:REC
+xf86-video-rendition:REC
+xf86-video-s3:REC
+xf86-video-s3virge:REC
+xf86-video-savage:REC
+xf86-video-siliconmotion:REC
+xf86-video-sis:REC
+xf86-video-sisusb:REC
+xf86-video-tdfx:REC
+xf86-video-tga:REC
+xf86-video-trident:REC
+xf86-video-tseng:REC
+xf86-video-v4l:REC
+xf86-video-vesa:REC
+xf86-video-vga:REC
+xf86-video-via:REC
+xf86-video-vmware:REC
+xf86-video-voodoo:REC
+xf86bigfontproto:REC
+xf86dga:REC
+xf86dgaproto:REC
+xf86driproto:REC
+xf86miscproto:REC
+xf86rushproto:REC
+xf86vidmodeproto:REC
+xfd:REC
+xfindproxy:REC
+xfontsel:REC
+xfs:REC
+xfsinfo:REC
+xfwp:REC
+xgamma:REC
+xgc:REC
+xhost:REC
+xineramaproto:REC
+xinit:REC
+xinput:REC
+xkbcomp:REC
+xkbevd:REC
+xkbprint:REC
+xkbutils:REC
+xkeyboard-config:REC
+xkill:REC
+xload:REC
+xlogo:REC
+xlsatoms:REC
+xlsclients:REC
+xlsfonts:REC
+xmag:REC
+xman:REC
+xmessage:REC
+xmh:REC
+xmodmap:REC
+xmore:REC
+xorg-cf-files:REC
+xorg-docs:REC
+xorg-server:REC
+xorg-server-xnest:REC
+xorg-server-xvfb:REC
+xorg-sgml-doctools:REC
+xphelloworld:REC
+xplsprinters:REC
+xpr:REC
+xprehashprinterlist:REC
+xprop:REC
+xproto:REC
+xproxymanagementprotocol:REC
+xrandr:REC
+xrdb:REC
+xrefresh:REC
+xrx:REC
+xset:REC
+xsetmode:REC
+xsetpointer:REC
+xsetroot:REC
+xsm:REC
+xstdcmap:REC
+xterm:REC
+xtrans:REC
+xtrap:REC
+xvidtune:REC
+xvinfo:REC
+xwd:REC
+xwininfo:REC
+xwud:REC
+audacious:REC
+audacious-plugins:REC
+blackbox:OPT
+fluxbox:OPT
+fvwm:REC
+gftp:OPT
+gimp:REC
+gimp-help-2:REC
+gkrellm:OPT
+gnuchess:REC
+gnuplot:OPT
+gqview:REC
+gucharmap:OPT
+gv:REC
+gxine:OPT
+imagemagick:REC
+mozilla-firefox:REC
+mozilla-thunderbird:REC
+pan:REC
+pidgin:OPT
+rdesktop:OPT
+rxvt:REC
+sane:OPT
+seamonkey:REC
+seyon:OPT
+vim-gvim:REC
+windowmaker:REC
+x3270:OPT
+xchat:OPT
+xfce:OPT
+xfractint:OPT
+xgames:REC
+xine-lib:REC
+xine-ui:REC
+xlockmore:REC
+xpaint:OPT
+xpdf:OPT
+xsane:OPT
+xscreensaver:REC
+xv:REC
+autoconf:OPT
+automake:OPT
+bin86:ADD
+binutils:ADD
+bison:ADD
+ccache:OPT
+clisp:OPT
+cmake:REC
+cscope:OPT
+cvs:REC
+distcc:OPT
+doxygen:OPT
+flex:ADD
+gcc:ADD
+gcc-g++:REC
+gcc-gfortran:OPT
+gcc-gnat:OPT
+gcc-java:OPT
+gcc-objc:OPT
+gdb:REC
+gettext-tools:REC
+git:REC
+gperf:REC
+guile:OPT
+indent:OPT
+kernel-headers:ADD
+libtool:OPT
+m4:REC
+make:ADD
+mercurial:REC
+nasm:OPT
+oprofile:OPT
+p2c:OPT
+perl:REC
+pkg-config:REC
+pkghelpers:REC
+pmake:REC
+python:REC
+rcs:REC
+ruby:REC
+strace:REC
+subversion:OPT
+kernel-source:REC
+tetex:ADD
+tetex-doc:REC
+transfig:OPT
+xfig:OPT
diff --git a/tags/0.6rc1/templates/slamd64-12.1/perms b/tags/0.6rc1/templates/slamd64-12.1/perms
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-12.1/perms
diff --git a/tags/0.6rc1/templates/slamd64-12.1/scripts/post-install.sh b/tags/0.6rc1/templates/slamd64-12.1/scripts/post-install.sh
new file mode 100755
index 0000000..d21fed0
--- /dev/null
+++ b/tags/0.6rc1/templates/slamd64-12.1/scripts/post-install.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+#
+
+chroot $1/$2/ sbin/ldconfig
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/httpd.conf b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/httpd.conf
new file mode 100644
index 0000000..7b7115d
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/httpd.conf
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do. They're here only as hints or reminders. If you are unsure
+# consult the online docs. You have been warned.
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+# 1. Directives that control the operation of the Apache server process as a
+# whole (the 'global environment').
+# 2. Directives that define the parameters of the 'main' or 'default' server,
+# which responds to requests that aren't handled by a virtual host.
+# These directives also provide default values for the settings
+# of all virtual hosts.
+# 3. Settings for virtual hosts, which allow Web requests to be sent to
+# different IP addresses or hostnames and have them handled by the
+# same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path. If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone. Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE! If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename.
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this. But if yours does (you'll know because
+# this file will be created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation. Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request. If there are fewer than MinSpareServers, it creates
+# a new spare. If there are more than MaxSpareServers, some of the
+# spares die off. The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies. The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources. On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+# request per connection. For example, if a child process handles
+# an initial request and 10 subsequent "keptalive" requests, it
+# would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important. Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module libexec/apache/mod_env.so
+LoadModule define_module libexec/apache/mod_define.so
+LoadModule config_log_module libexec/apache/mod_log_config.so
+LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
+LoadModule mime_module libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module libexec/apache/mod_status.so
+#LoadModule info_module libexec/apache/mod_info.so
+LoadModule includes_module libexec/apache/mod_include.so
+LoadModule autoindex_module libexec/apache/mod_autoindex.so
+LoadModule dir_module libexec/apache/mod_dir.so
+LoadModule cgi_module libexec/apache/mod_cgi.so
+#LoadModule asis_module libexec/apache/mod_asis.so
+#LoadModule imap_module libexec/apache/mod_imap.so
+#LoadModule action_module libexec/apache/mod_actions.so
+#LoadModule speling_module libexec/apache/mod_speling.so
+#LoadModule userdir_module libexec/apache/mod_userdir.so
+LoadModule alias_module libexec/apache/mod_alias.so
+LoadModule rewrite_module libexec/apache/mod_rewrite.so
+LoadModule access_module libexec/apache/mod_access.so
+LoadModule auth_module libexec/apache/mod_auth.so
+LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module libexec/apache/mod_digest.so
+LoadModule proxy_module libexec/apache/libproxy.so
+LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
+LoadModule expires_module libexec/apache/mod_expires.so
+LoadModule headers_module libexec/apache/mod_headers.so
+#LoadModule usertrack_module libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module libexec/apache/mod_unique_id.so
+LoadModule setenvif_module libexec/apache/mod_setenvif.so
+
+# Reconstruction of the complete module list from all available modules
+# (static and shared ones) to achieve correct module execution order.
+# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition. These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+# . On HPUX you may not be able to use shared memory as nobody, and the
+# suggested workaround is to create a user www and use that user.
+# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+# when the value of (unsigned)Group is above 60000;
+# don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed. This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories).
+#
+# First, we configure the "default" to be a very restrictive set of
+# permissions.
+#
+<Directory />
+ Options FollowSymLinks
+ AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+ Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo",
+# "AuthConfig", and "Limit"
+#
+ AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+ Order allow,deny
+ Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+ UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+# AllowOverride FileInfo AuthConfig Limit
+# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+# <Limit GET POST OPTIONS PROPFIND>
+# Order allow,deny
+# Allow from all
+# </Limit>
+# <LimitExcept GET POST OPTIONS PROPFIND>
+# Order deny,allow
+# Deny from all
+# </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index. Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+ DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients. Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons. Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files. If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+ Order allow,deny
+ Deny from all
+ Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name. With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible. This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+ TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value. If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type. The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+ MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here. Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of: On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType On=InOut text/* message/* multipart/*
+# EBCDICConvertByType On=In application/x-www-form-urlencoded
+# EBCDICConvertByType On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+ #
+ # Note that if you include a trailing / on fakename then the server will
+ # require it to be present in the URL. So "/icons" isn't aliased in this
+ # example, only "/icons/". If the fakename is slash-terminated, then the
+ # realname must also be slash terminated, and if the fakename omits the
+ # trailing slash, the realname must also omit it.
+ #
+ Alias /icons/ "/var/www/icons/"
+
+ <Directory "/var/www/icons">
+ Options Indexes MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ # This Alias will project the on-line documentation tree under /manual/
+ # even if you change the DocumentRoot. Comment it if you don't want to
+ # provide access to the on-line documentation.
+ #
+ Alias /manual/ "/var/www/htdocs/manual/"
+
+ <Directory "/var/www/htdocs/manual">
+ Options Indexes FollowSymlinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the client.
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+ #
+ # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+ <Directory "/var/www/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+ #
+ # FancyIndexing is whether you want fancy directory indexing or standard
+ #
+ IndexOptions FancyIndexing
+
+ #
+ # AddIcon* directives tell the server which icon to show for different
+ # files or filename extensions. These are only displayed for
+ # FancyIndexed directories.
+ #
+ AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+ AddIconByType (TXT,/icons/text.gif) text/*
+ AddIconByType (IMG,/icons/image2.gif) image/*
+ AddIconByType (SND,/icons/sound2.gif) audio/*
+ AddIconByType (VID,/icons/movie.gif) video/*
+
+ AddIcon /icons/binary.gif .bin .exe
+ AddIcon /icons/binhex.gif .hqx
+ AddIcon /icons/tar.gif .tar
+ AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+ AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+ AddIcon /icons/a.gif .ps .ai .eps
+ AddIcon /icons/layout.gif .html .shtml .htm .pdf
+ AddIcon /icons/text.gif .txt
+ AddIcon /icons/c.gif .c
+ AddIcon /icons/p.gif .pl .py
+ AddIcon /icons/f.gif .for
+ AddIcon /icons/dvi.gif .dvi
+ AddIcon /icons/uuencoded.gif .uu
+ AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+ AddIcon /icons/tex.gif .tex
+ AddIcon /icons/bomb.gif core
+
+ AddIcon /icons/back.gif ..
+ AddIcon /icons/hand.right.gif README
+ AddIcon /icons/folder.gif ^^DIRECTORY^^
+ AddIcon /icons/blank.gif ^^BLANKICON^^
+
+ #
+ # DefaultIcon is which icon to show for files which do not have an icon
+ # explicitly set.
+ #
+ DefaultIcon /icons/unknown.gif
+
+ #
+ # AddDescription allows you to place a short description after a file in
+ # server-generated indexes. These are only displayed for FancyIndexed
+ # directories.
+ # Format: AddDescription "description" filename
+ #
+ #AddDescription "GZIP compressed document" .gz
+ #AddDescription "tar archive" .tar
+ #AddDescription "GZIP compressed tar archive" .tgz
+
+ #
+ # ReadmeName is the name of the README file the server will look for by
+ # default, and append to directory listings.
+ #
+ # HeaderName is the name of a file which should be prepended to
+ # directory indexes.
+ #
+ ReadmeName README.html
+ HeaderName HEADER.html
+
+ #
+ # IndexIgnore is a set of filenames which directory indexing should ignore
+ # and not include in the listing. Shell-style wildcarding is permitted.
+ #
+ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+ #
+ # AddLanguage allows you to specify the language of a document. You can
+ # then use content negotiation to give a browser a file in a language
+ # it can understand.
+ #
+ # Note 1: The suffix does not have to be the same as the language
+ # keyword --- those with documents in Polish (whose net-standard
+ # language code is pl) may wish to use "AddLanguage pl .po" to
+ # avoid the ambiguity with the common suffix for perl scripts.
+ #
+ # Note 2: The example entries below illustrate that in quite
+ # some cases the two character 'Language' abbreviation is not
+ # identical to the two character 'Country' code for its country,
+ # E.g. 'Danmark/dk' versus 'Danish/da'.
+ #
+ # Note 3: In the case of 'ltz' we violate the RFC by using a three char
+ # specifier. But there is 'work in progress' to fix this and get
+ # the reference data for rfc1766 cleaned up.
+ #
+ # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+ # French (fr) - German (de) - Greek-Modern (el)
+ # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+ # Portugese (pt) - Luxembourgeois* (ltz)
+ # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+ # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
+ #
+ AddLanguage da .dk
+ AddLanguage nl .nl
+ AddLanguage en .en
+ AddLanguage et .ee
+ AddLanguage fr .fr
+ AddLanguage de .de
+ AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
+ AddLanguage it .it
+ AddLanguage ja .ja
+ AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage nn .nn
+ AddLanguage no .no
+ AddLanguage pl .po
+ AddCharset ISO-8859-2 .iso-pl
+ AddLanguage pt .pt
+ AddLanguage pt-br .pt-br
+ AddLanguage ltz .lu
+ AddLanguage ca .ca
+ AddLanguage es .es
+ AddLanguage sv .sv
+ AddLanguage cs .cz .cs
+ AddLanguage ru .ru
+ AddLanguage zh-TW .zh-tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
+
+ # LanguagePriority allows you to give precedence to some languages
+ # in case of a tie during content negotiation.
+ #
+ # Just list the languages in decreasing order of preference. We have
+ # more or less alphabetized them here. You probably want to change this.
+ #
+ <IfModule mod_negotiation.c>
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+ </IfModule>
+
+ #
+ # AddType allows you to tweak mime.types without actually editing it, or to
+ # make certain files to be certain types.
+ #
+ AddType application/x-tar .tgz
+
+ #
+ # AddEncoding allows you to have certain browsers uncompress
+ # information on the fly. Note: Not all browsers support this.
+ # Despite the name similarity, the following Add* directives have nothing
+ # to do with the FancyIndexing customization directives above.
+ #
+ AddEncoding x-compress .Z
+ AddEncoding x-gzip .gz .tgz
+ #
+ # If the AddEncoding directives above are commented-out, then you
+ # probably should define those extensions to indicate media types:
+ #
+ #AddType application/x-compress .Z
+ #AddType application/x-gzip .gz .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers",
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action command (see below)
+ #
+ # If you want to use server side includes, or CGI outside
+ # ScriptAliased directories, uncomment the following lines.
+ #
+ # To use CGI scripts:
+ #
+ #AddHandler cgi-script .cgi
+
+ #
+ # To use server-parsed HTML files
+ #
+ #AddType text/html .shtml
+ #AddHandler server-parsed .shtml
+
+ #
+ # Uncomment the following line to enable Apache's send-asis HTTP file
+ # feature
+ #
+ #AddHandler send-as-is asis
+
+ #
+ # If you wish to use server-parsed imagemap files, use
+ #
+ #AddHandler imap-file map
+
+ #
+ # To enable type maps, you might want to use
+ #
+ #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+# these come in three flavors
+#
+# 1) plain text
+ErrorDocument 500 /missing.html
+# n.b. the single leading (") marks it as text, it does not get output
+#
+# 2) local redirects
+ErrorDocument 404 /missing.html
+# to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+# N.B.: You can redirect to a script or a document using server-side-includes.
+#
+# 3) external redirects
+ErrorDocument 402 /missing.html
+# N.B.: Many of the environment variables associated with the original
+# request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+ #
+ # The following directives modify normal HTTP response behavior.
+ # The first directive disables keepalive for Netscape 2.x and browsers that
+ # spoof it. There are known problems with these browser implementations.
+ # The second directive is for Microsoft Internet Explorer 4.0b2
+ # which has a broken HTTP/1.1 implementation and does not properly
+ # support keepalive when it is used on 301 or 302 (redirect) responses.
+ #
+ BrowserMatch "Mozilla/2" nokeepalive
+ BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+ #
+ # The following directive disables HTTP/1.1 responses to browsers which
+ # are in violation of the HTTP/1.0 spec by not being able to grok a
+ # basic 1.1 response.
+ #
+ BrowserMatch "RealPlayer 4\.0" force-response-1.0
+ BrowserMatch "Java/1\.0" force-response-1.0
+ BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+# SetHandler server-status
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+# SetHandler server-info
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days. This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging
+# script on phf.apache.org. Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+# Deny from all
+# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled. To enable a particular
+# module for Apache, make sure the necessary packages are installed. Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache. Note that some modules may need additional configuration steps. For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED: openssl-solibs (A series) and/or openssl (N series),
+# mysql (AP series), gmp (L series), mhash (L series),
+# and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED: apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/php.ini b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/php.ini
new file mode 100644
index 0000000..e6cddef
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/php.ini
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file. It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with. Using this
+; file is warmly recommended for production sites. As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3. Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off [Security, Performance]
+; Global variables are no longer registered for input data (POST, GET, cookies,
+; environment and other server variables). Instead of using $foo, you must use
+; you can use $_REQUEST["foo"] (includes any variable that arrives through the
+; request, namely, POST, GET and cookie variables), or use one of the specific
+; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+; on where the input originates. Also, you can look at the
+; import_request_variables() function.
+; Note that register_globals is going to be depracated (i.e., turned off by
+; default) in the next version of PHP, because it often leads to security bugs.
+; Read http://php.net/manual/en/security.registerglobals.php for further
+; information.
+; - display_errors = Off [Security]
+; With this directive set to off, errors that occur during the execution of
+; scripts will no longer be displayed as a part of the script output, and thus,
+; will no longer be exposed to remote users. With some errors, the error message
+; content may expose information about your script, web server, or database
+; server that may be exploitable for hacking. Production sites should have this
+; directive set to off.
+; - log_errors = On [Security]
+; This directive complements the above one. Any errors that occur during the
+; execution of your script will be logged (typically, to your server's error log,
+; but can be configured in several ways). Along with setting display_errors to off,
+; this setup gives you the ability to fully understand what may have gone wrong,
+; without exposing any sensitive information to remote users.
+; - output_buffering = 4096 [Performance]
+; Set a 4KB output buffer. Enabling output buffering typically results in less
+; writes, and sometimes less packets sent on the wire, which can often lead to
+; better performance. The gain this directive actually yields greatly depends
+; on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off [Performance]
+; Disables registration of the somewhat redundant $argv and $argc global
+; variables.
+; - magic_quotes_gpc = Off [Performance]
+; Input data is no longer escaped with slashes so that it can be sent into
+; SQL databases without further manipulation. Instead, you should use the
+; function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS" [Performance]
+; The environment variables are not hashed into the $HTTP_ENV_VARS[]. To access
+; environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL [Code Cleanliness, Security(?)]
+; By default, PHP surpresses errors of type E_NOTICE. These error messages
+; are emitted for non-critical errors, but that could be a symptom of a bigger
+; problem. Most notably, this will cause error messages about the use
+; of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off [Code cleanliness]
+; It's not possible to decide to force a variable to be passed by reference
+; when calling a function. The PHP 4 style to do this is by making the
+; function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision = 14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit. You can enable output buffering during runtime by calling the output
+; buffering functions. You can also enable output buffering for all files by
+; setting this directive to On. If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function. For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+; directive. Instead, explicitly set the output handler using ob_start().
+; Using this ini directive may cause problems unless you know what script
+; is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP
+; outputs chunks that are few handreds bytes each as a result of compression.
+; If you want larger chunk size for better performence, enable output_buffering
+; also.
+; Note: output_handler must be empty if this is set 'On' !!!!
+; Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block. This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block. Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time. This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend. The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration. You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes. In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here. By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note: If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv(). These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below. This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode. Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header). It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30 ; Maximum execution time of each script, in seconds
+max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field. Or each number up to get desired error
+; reporting level
+; E_ALL - All errors and warnings
+; E_ERROR - fatal run-time errors
+; E_WARNING - run-time warnings (non-fatal errors)
+; E_PARSE - compile-time parse errors
+; E_NOTICE - run-time notices (these are warnings which often result
+; from a bug in your code, but it's possible that it was
+; intentional (e.g., using an uninitialized variable and
+; relying on the fact it's automatically initialized to an
+; empty string)
+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
+; initial startup
+; E_COMPILE_ERROR - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR - user-generated error message
+; E_USER_WARNING - user-generated warning message
+; E_USER_NOTICE - user-generated notice message
+;
+; Examples:
+;
+; - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+; - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+; - Show all errors
+;
+error_reporting = E_ALL
+
+; Print out errors (as a part of the output). For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below). Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed. It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&".
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&".
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC). Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables. You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data. This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on; Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information). If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated. Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header. To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues. The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function. The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers. Left undefined, PHP turns this on by default. You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution. Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting
+; of zero causes PHP to behave as before. Default is zero. You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client. This allows IIS to define the
+; security context that the request runs under. mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS. Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+; extension=modulename.extension
+;
+; For example, on Windows:
+;
+; extension=msql.dll
+;
+; ... or under UNIX:
+;
+; extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information
+; needs to go here. Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default. Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default. Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db = Not yet implemented
+;odbc.default_user = Not yet implemented
+;odbc.default_pw = Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+odbc.max_links = -1
+
+; Handling of LONG fields. Returns number of bytes to variables. 0 means
+; passthru.
+odbc.defaultlrl = 4096
+
+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect(). If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password! And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect().
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links. -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings. This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns. May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1. In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler. In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data. php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled. PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+; to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+; in publically accessible computer.
+; - User may access your site with the same session ID
+; always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs. If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch. 0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting(). Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents. -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file =
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+; portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database =
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files. Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding
+; is used. For the decode settings you can distinguish between motorola and
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel = UCS-2LE
+;exif.encode_jis =
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/vhosts b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/vhosts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/apache/vhosts
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/hosts b/tags/0.6rc1/templates/vserver-legacy/files/etc/hosts
new file mode 100644
index 0000000..6e33147
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/hosts
@@ -0,0 +1,21 @@
+#
+# hosts This file describes a number of hostname-to-address
+# mappings for the TCP/IP subsystem. It is mostly
+# used at boot time, when no name servers are running.
+# On small systems, this file can be used instead of a
+# "named" name server. Just add the names, addresses
+# and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine. It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1 localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1 darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/logrotate.d/apache b/tags/0.6rc1/templates/vserver-legacy/files/etc/logrotate.d/apache
new file mode 100644
index 0000000..f31fbe2
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/logrotate.d/apache
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+ monthly
+ nomail
+ compress
+ create 0664 root root
+ rotate 12
+ postrotate
+ /etc/rc.d/rc.httpd restart > /dev/null
+ endscript
+}
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/profile b/tags/0.6rc1/templates/vserver-legacy/files/etc/profile
new file mode 100644
index 0000000..563594a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/profile
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+ export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH. Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+ echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+ if [ ! $? = 0 ]; then
+ PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+ fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+ VISUAL=emacs
+# VISUAL=gmacs
+# VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask. A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+ if [ -x $profile_script ]; then
+ . $profile_script
+ fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.0 b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.0
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.0
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.4 b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.4
new file mode 100644
index 0000000..b972052
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.4
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.6 b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.6
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.6
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.K b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.K
new file mode 100755
index 0000000..00a1501
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.K
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K This file is executed by init when it goes into runlevel
+# 1, which is the administrative state. It kills all
+# daemons and then puts the system into single user mode.
+# Note that the file systems are kept mounted.
+#
+# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off accounting."
+ /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to initialize.
+ sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.M b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.M
new file mode 100755
index 0000000..0cb3343
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.M
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.S b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.S
new file mode 100755
index 0000000..05c75b4
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.S
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S: System initialization script.
+#
+# Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+ if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ fi
+fi
+
+# Start devfsd if necessary. On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+ /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+ if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ /sbin/mount -v sysfs /sys -n -t sysfs
+ fi
+ fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+ if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ /etc/rc.d/rc.udev
+ fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+ rm -f /fsrwtestfile
+ READWRITE=yes
+else
+ echo "Testing root filesystem status: read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+ FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+ RETVAL=0
+ if [ ! -r /etc/fastboot ]; then
+ echo "Checking root filesystem:"
+ /sbin/fsck $FORCEFSCK -C -a /
+ RETVAL=$?
+ fi
+ # An error code of 2 or higher will require a reboot.
+ if [ $RETVAL -ge 2 ]; then
+ # An error code equal to or greater than 4 means that some errors
+ # could not be corrected. This requires manual attention, so we
+ # offer a chance to try to fix the problem in single-user mode:
+ if [ $RETVAL -ge 4 ]; then
+ echo
+ echo "***********************************************************"
+ echo "*** An error occurred during the root filesystem check. ***"
+ echo "*** You will now be given a chance to log into the ***"
+ echo "*** system in single-user mode to fix the problem. ***"
+ echo "*** ***"
+ echo "*** If you are using the ext2 filesystem, running ***"
+ echo "*** 'e2fsck -v -y <partition>' might help. ***"
+ echo "***********************************************************"
+ echo
+ echo "Once you exit the single-user shell, the system will reboot."
+ echo
+ PS1="(Repair filesystem) \#"; export PS1
+ sulogin
+ else # With an error code of 2 or 3, reboot the machine automatically:
+ echo
+ echo "***********************************"
+ echo "*** The filesystem was changed. ***"
+ echo "*** The system will now reboot. ***"
+ echo "***********************************"
+ echo
+ fi
+ echo "Unmounting file systems."
+ /sbin/umount -a -r
+ /sbin/mount -n -o remount,ro /
+ echo "Rebooting system."
+ sleep 2
+ reboot -f
+ fi
+ # Remount the root filesystem in read-write mode
+ echo "Remounting root device with read-write enabled."
+ /sbin/mount -w -v -n -o remount /
+ if [ $? -gt 0 ] ; then
+ echo
+ echo "Attempt to remount root device as read-write failed! This is going to"
+ echo "cause serious problems."
+ echo
+ echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+ echo "read-write! You can make sure the root filesystem is getting mounted "
+ echo "read-write with the 'rw' flag to Loadlin:"
+ echo
+ echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
+ echo
+ echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+ echo
+ echo "rdev -R /dev/fd0 0"
+ echo
+ echo "You can also get into your system by using a boot disk with a command like this"
+ echo "on the LILO prompt line: (change the root partition name as needed)"
+ echo
+ echo "LILO: mount root=/dev/hda1 rw"
+ echo
+ echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+ echo -n "get into your machine and start looking for the problem. "
+ read junk;
+ fi
+else
+ echo "Testing root filesystem status: read-write filesystem"
+ if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+ ROOTTYPE="umsdos"
+ fi
+ if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+ echo
+ echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+ echo
+ echo "For filesystem checking to work properly, your system must initially mount"
+ echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+ echo "it does this. If you're booting with LILO, add a line:"
+ echo
+ echo " read-only"
+ echo
+ echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+ echo
+ echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+ echo " rdev -R /dev/fd0 1"
+ echo
+ echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+ echo
+ echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+ echo
+ echo -n "Press ENTER to continue. "
+ read junk;
+ fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+ /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+ /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+ if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+ echo "Setting system time from the hardware clock (UTC)."
+ /sbin/hwclock --utc --hctosys
+ else
+ echo "Setting system time from the hardware clock (localtime)."
+ /sbin/hwclock --localtime --hctosys
+ fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+ if [ -x /sbin/isapnp ]; then
+ /sbin/isapnp /etc/isapnp.conf
+ fi
+fi
+
+# This loads any kernel modules that are needed. These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+ . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+ /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or
+# /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Initializing LVM (Logical Volume Manager):"
+ # Check for device-mapper support.
+ if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+ # If device-mapper exists as a module, try to load it.
+ if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+ insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+ fi
+ fi
+ # Scan for new volume groups:
+ /sbin/vgscan 2> /dev/null
+ if [ $? = 0 ]; then
+ # This needs a moment to register.
+ sleep 10
+ # Make volume groups available to the kernel.
+ # This should also make logical volumes available.
+ /sbin/vgchange -ay
+ # Enable swapping again in case any LVs are used for swap. Ignore previous error. :-)
+ /sbin/swapon -a
+ fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+ echo "Checking non-root filesystems:"
+ /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+ /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+ /sbin/umount /initrd 2> /dev/null
+ rmdir /initrd 2> /dev/null
+ blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+ echo "Synchronizing UMSDOS directory structure:"
+ echo " /sbin/umssync -r99 -v- /"
+ /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+ echo "Using /etc/random-seed to initialize /dev/urandom."
+ cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.httpd b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.httpd
new file mode 100644
index 0000000..00b8837
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.httpd
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+ 'start')
+ /usr/sbin/apachectl start ;;
+ 'stop')
+ /usr/sbin/apachectl stop ;;
+ 'restart')
+ /usr/sbin/apachectl restart ;;
+ *)
+ echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inet2 b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inet2
new file mode 100755
index 0000000..db56589
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inet2
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2 This shell script boots up the entire network system.
+# Note, that when this script is used to also fire
+# up any important remote NFS disks (like the /usr
+# directory), care must be taken to actually
+# have all the needed binaries online _now_ ...
+#
+# Uncomment or comment out sections depending on which
+# services your site requires.
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+ # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+ # since it will need to be running in order to mount them. If portmap
+ # is not running, attempting to mount an NFS partition will cause mount
+ # to hang. Keep this in mind if you plan to mount unlisted partitions...
+ if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+ else
+ # Warn about a possible NFS problem. It's also possible to mount NFS partitions
+ # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+ echo "WARNING: NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+ echo " not executable. If you do not run portmap, NFS partitions will"
+ echo " not mount properly. To start rpc.portmap at boot, change the"
+ echo " permissions on /etc/rc.d/rc.portmap: chmod 755 /etc/rc.d/rc.portmap"
+ sleep 10
+ fi
+ echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs"
+ /sbin/mount -a -t nfs # This may be our /usr runtime!
+ # Show the mounted volumes:
+ /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+ echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
+ /sbin/mount -a -t smbfs
+ # Show the mounted volumes:
+ /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux. In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+ /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+ . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+ /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+ echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+ /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+ /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+ . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server. Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows. ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+# echo "Starting network routing daemon: /usr/sbin/routed"
+# /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+# echo "Starting system status server: /usr/sbin/rwhod"
+# /usr/sbin/rwhod
+# fi
+
+# # Fire up the PC-NFS daemon(s). This is a primarily obsolete system, and may
+# # not be very secure. It's not at all needed for normal NFS server support.
+# # You probably should not run this.
+# if [ -x /usr/sbin/rpc.pcnfsd ]; then
+# echo "Starting PC-NFS daemons: /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+# /usr/sbin/rpc.pcnfsd /var/spool/lpd
+# fi
+# if [ -x /usr/sbin/rpc.bwnfsd ]; then
+# /usr/sbin/rpc.bwnfsd /var/spool/lpd
+# fi
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inetd b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inetd
new file mode 100644
index 0000000..9fe1419
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.inetd
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+ if [ -x /usr/sbin/inetd ]; then
+ echo "Starting Internet super-server daemon: /usr/sbin/inetd"
+ /usr/sbin/inetd
+ fi
+}
+
+# Stop inetd:
+inetd_stop() {
+ killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+ inetd_stop
+ sleep 1
+ inetd_start
+}
+
+case "$1" in
+'start')
+ inetd_start
+ ;;
+'stop')
+ inetd_stop
+ ;;
+'restart')
+ inetd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.ip_forward b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.ip_forward
new file mode 100644
index 0000000..52bd2fe
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.ip_forward
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward: start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable: chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable: chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Activating IPv4 packet forwarding."
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ fi
+ # When using IPv4 packet forwarding, you will also get the
+ # rp_filter, which automatically rejects incoming packets if the
+ # routing table entry for their source address doesn't match the
+ # network interface they're arriving on. This has security
+ # advantages because it prevents the so-called IP spoofing,
+ # however it can pose problems if you use asymmetric routing
+ # (packets from you to a host take a different path than packets
+ # from that host to you) or if you operate a non-routing host
+ # which has several IP addresses on different interfaces. To
+ # turn rp_filter off, uncomment the lines below:
+ #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+ # echo "Disabling rp_filter."
+ # echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+ #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Disabling IPv4 packet forwarding."
+ echo 0 > /proc/sys/net/ipv4/ip_forward
+ fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+ ip_forward_stop
+ sleep 1
+ ip_forward_start
+}
+
+case "$1" in
+'start')
+ ip_forward_start
+ ;;
+'stop')
+ ip_forward_stop
+ ;;
+'restart')
+ ip_forward_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.local b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.local
new file mode 100755
index 0000000..3cf2076
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.local
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local: Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.mysqld b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.mysqld
new file mode 100644
index 0000000..239e2e6
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.mysqld
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database. To install an initial
+# database, do this as root:
+#
+# su - mysql
+# mysql_install_db
+#
+# Note that step one is becoming the mysql user. It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+ if [ -x /usr/bin/mysqld_safe ]; then
+ # If there is an old PID file (no mysqld running), clean it up:
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+ echo "Cleaning up old /var/run/mysql/mysql.pid."
+ rm -f /var/run/mysql/mysql.pid
+ fi
+ fi
+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+ fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+ # If there is no PID file, ignore this request...
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ killall mysqld
+ # Wait at least one minute for it to exit, as we don't know how big the DB is...
+ for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+ if [ ! -r /var/run/mysql/mysql.pid ]; then
+ break;
+ fi
+ sleep 1
+ done
+ if [ "$second" = "60" ]; then
+ echo "WARNING: Gave up waiting for mysqld to exit!"
+ sleep 15
+ fi
+ fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+ mysqld_stop
+ mysqld_start
+}
+
+case "$1" in
+'start')
+ mysqld_start
+ ;;
+'stop')
+ mysqld_stop
+ ;;
+'restart')
+ mysqld_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.postfix b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.postfix
new file mode 100644
index 0000000..bc32367
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.postfix
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+## 20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+ if [ -x /usr/sbin/postfix ]; then
+ echo -n "Starting postfix MTA: "
+ echo "/usr/sbin/postfix start"
+ /usr/sbin/postfix start 2>/dev/null
+ fi
+}
+
+postfix_stop() {
+ /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+ sh $0 stop
+ sleep 1
+ sh $0 start
+}
+
+postfix_reload() {
+ /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+ 'start')
+ postfix_start
+ ;;
+ 'stop')
+ postfix_stop
+ ;;
+ 'restart')
+ postfix_restart
+ ;;
+ 'reload')
+ postfix_reload
+ ;;
+ *)
+ echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sendmail b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sendmail
new file mode 100644
index 0000000..1a31c52
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sendmail
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+ if [ -x /usr/sbin/sendmail ]; then
+ echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+ /usr/sbin/sendmail -L sm-mta -bd -q25m
+ echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+ /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+ fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+ killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+ sendmail_stop
+ sleep 1
+ sendmail_start
+}
+
+case "$1" in
+'start')
+ sendmail_start
+ ;;
+'stop')
+ sendmail_stop
+ ;;
+'restart')
+ sendmail_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.serial b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.serial
new file mode 100755
index 0000000..5f31c01
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.serial
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial
+# Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver. We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial
+# file with a newer one.
+#
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now). Autosave also doesn't work for the hayes devices.
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+ ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+ SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+ SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+ if grep -q " ttyS$" /proc/devices ; then
+ LOADED="yes"
+ else
+ LOADED="no"
+ fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+ if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+ MODULE=$i/$DRIVER.o
+ fi
+done
+
+if ! test -f /proc/modules ; then
+ MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+ action="start";
+ ;;
+stop)
+ action="stop";
+ ;;
+*)
+ action="start";
+esac
+
+if test $action = stop ; then
+ if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+ `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+ echo -n "Saving state of serial devices... "
+ grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+ ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+ mv /etc/serial.conf /etc/.serial.conf.old
+ mv /etc/.serial.conf.new /etc/serial.conf
+ echo "done."
+ fi
+ if test -n "$MODULE" ; then
+ module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+ if test -z "$module" ; then
+ echo "The $DRIVER_NAME driver is not loaded."
+ rm -f ${RCLOCKFILE}
+ exit 0
+ fi
+ if rmmod $module ; then :; else
+ echo "The $DRIVER_NAME driver could NOT be unloaded."
+ exit 1;
+ fi
+ echo "The $DRIVER_NAME driver has been unloaded."
+ fi
+ rm -f ${RCLOCKFILE}
+ exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then
+ if insmod -f $MODULE $DRIVER_ARG ; then
+ true
+ else
+ echo "Couldn't load $DRIVER_NAME driver."
+ exit 1
+ fi
+fi
+
+if test -f /etc/serial.conf ; then
+ if test -n ${SETSERIAL} ; then
+ grep -v ^# < /etc/serial.conf | while read device args
+ do
+ if [ ! "$device" = "" -a ! "$args" = "" ]; then
+ ${SETSERIAL} -z $device $args
+ fi
+ done
+ fi
+else
+ echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sshd b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sshd
new file mode 100755
index 0000000..a3707e3
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sshd
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+ # Create host keys if needed.
+ if [ ! -r /etc/ssh/ssh_host_key ]; then
+ /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+ /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+ /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+ fi
+ /usr/sbin/sshd
+}
+
+sshd_stop() {
+ killall sshd
+}
+
+sshd_restart() {
+ if [ -r /var/run/sshd.pid ]; then
+ echo "WARNING: killing listener process only. To kill every sshd process, you must"
+ echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to"
+ echo " allow an admin logged in through sshd to use 'rc.sshd restart' without"
+ echo " being cut off. If sshd has been upgraded, new connections will now"
+ echo " use the new version, which should be a safe enough approach."
+ kill `cat /var/run/sshd.pid`
+ else
+ killall sshd
+ fi
+ sleep 1
+ sshd_start
+}
+
+case "$1" in
+'start')
+ sshd_start
+ ;;
+'stop')
+ sshd_stop
+ ;;
+'restart')
+ sshd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.syslog b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.syslog
new file mode 100755
index 0000000..a005fb7
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.syslog
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+ if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+ echo -n "Starting sysklogd daemons: "
+ echo -n "/usr/sbin/syslogd "
+ /usr/sbin/syslogd
+ sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+ echo "/usr/sbin/klogd -c 3 -x"
+ # '-c 3' = display level 'error' or higher messages on console
+ # '-x' = turn off broken EIP translation
+ /usr/sbin/klogd -c 3 -x
+ fi
+}
+
+syslogd_stop() {
+ killall syslogd 2> /dev/null
+ killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+ syslogd_stop
+ sleep 1
+ syslogd_start
+}
+
+case "$1" in
+'start')
+ syslogd_start
+ ;;
+'stop')
+ syslogd_stop
+ ;;
+'restart')
+ syslogd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sysvinit b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sysvinit
new file mode 100755
index 0000000..916e59e
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rc.d/rc.sysvinit
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit This file provides basic compatibility with SystemV style
+# startup scripts. The SystemV style init system places
+# start/stop scripts for each runlevel into directories such as
+# /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+# from /etc/rc.d/rc.M. This makes for a lot more init scripts,
+# and a more complicated execution path to follow through if
+# something goes wrong. For this reason, Slackware has always
+# used the traditional BSD style init script layout.
+#
+# However, many binary packages exist that install SystemV
+# init scripts. With rc.sysvinit in place, most well-written
+# startup scripts will work. This is primarily intended to
+# support commercial software, though, and probably shouldn't
+# be considered bug free.
+#
+# Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+# from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+ case "$1" in
+ *.sh)
+ sh "$@"
+ ;;
+ *)
+ "$@"
+ ;;
+ esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+ runlevel=$RUNLEVEL
+ export runlevel
+ prevlevel=$PREVLEVEL
+ export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+ for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+ if [ -x $script ]; then
+ startup $script stop
+ fi
+ done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+ if [ -x $script ]; then
+ startup $script start
+ fi
+done
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/rssh.conf b/tags/0.6rc1/templates/vserver-legacy/files/etc/rssh.conf
new file mode 100644
index 0000000..a74acc6
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/rssh.conf
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility. "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010: # the path can simply be left out to not chroot
+#user=rudy:077:00010 # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir" # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir" # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir" # both with chroot
+#user=rudy:011:00100: # cvs, with no chroot
+#user=rudy:011:01000: # rdist, with no chroot
+#user=rudy:011:10000: # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot" # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot" # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot' # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"
+#user = "rudy:011:00001:/usr/local/chroot dir" # neither do comments at line end
+
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/etc/ssh/sshd_config b/tags/0.6rc1/templates/vserver-legacy/files/etc/ssh/sshd_config
new file mode 100644
index 0000000..a161fec
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/etc/ssh/sshd_config
@@ -0,0 +1,103 @@
+# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the ChallengeResponseAuthentication mechanism.
+# Depending on your PAM configuration, this may bypass the setting of
+# PasswordAuthentication, PermitEmptyPasswords, and
+# "PermitRootLogin without-password". If you just want the PAM account and
+# session checks to run without PAM authentication, then enable this but set
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem sftp /usr/libexec/sftp-server
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/var/www/htdocs/missing.html b/tags/0.6rc1/templates/vserver-legacy/files/var/www/htdocs/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/var/www/htdocs/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/tags/0.6rc1/templates/vserver-legacy/files/var/www/missing.html b/tags/0.6rc1/templates/vserver-legacy/files/var/www/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/files/var/www/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/tags/0.6rc1/templates/vserver-legacy/packages b/tags/0.6rc1/templates/vserver-legacy/packages
new file mode 100644
index 0000000..b810e32
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/packages
@@ -0,0 +1,251 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+vim: OPT
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+htdig: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+nail: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+libsafe
+# contrib
+simplepkg
+ssmtp
diff --git a/tags/0.6rc1/templates/vserver-legacy/perms b/tags/0.6rc1/templates/vserver-legacy/perms
new file mode 100644
index 0000000..a323d6c
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/perms
@@ -0,0 +1,36 @@
+./etc;0;0;755
+./etc/apache;0;0;755
+./etc/apache/httpd.conf;0;0;644
+./etc/apache/php.ini;0;0;644
+./etc/apache/vhosts;0;0;644
+./etc/logrotate.d;0;0;755
+./etc/logrotate.d/apache;0;0;644
+./etc/rc.d;0;0;755
+./etc/rc.d/rc.httpd;0;0;644
+./etc/rc.d/rc.0;0;0;755
+./etc/rc.d/rc.4;0;0;644
+./etc/rc.d/rc.6;0;0;755
+./etc/rc.d/rc.K;0;0;755
+./etc/rc.d/rc.M;0;0;755
+./etc/rc.d/rc.S;0;0;755
+./etc/rc.d/rc.ip_forward;0;0;644
+./etc/rc.d/rc.inet2;0;0;755
+./etc/rc.d/rc.inetd;0;0;644
+./etc/rc.d/rc.mysqld;0;0;644
+./etc/rc.d/rc.local;0;0;755
+./etc/rc.d/rc.postfix;0;0;644
+./etc/rc.d/rc.sendmail;0;0;644
+./etc/rc.d/rc.serial;0;0;755
+./etc/rc.d/rc.sshd;0;0;755
+./etc/rc.d/rc.syslog;0;0;755
+./etc/rc.d/rc.sysvinit;0;0;755
+./etc/ssh;0;0;755
+./etc/ssh/sshd_config;0;0;644
+./etc/rssh.conf;0;0;644
+./etc/hosts;0;0;644
+./etc/profile;0;0;644
+./var;0;0;755
+./var/www;0;0;755
+./var/www/htdocs;0;0;755
+./var/www/htdocs/missing.html;0;0;644
+./var/www/missing.html;0;0;644
diff --git a/tags/0.6rc1/templates/vserver-legacy/scripts/GPG-KEY b/tags/0.6rc1/templates/vserver-legacy/scripts/GPG-KEY
new file mode 100644
index 0000000..fd23e95
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/scripts/GPG-KEY
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type bits/keyID Date User ID
+pub 1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub 1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tags/0.6rc1/templates/vserver-legacy/scripts/devices.tar.gz b/tags/0.6rc1/templates/vserver-legacy/scripts/devices.tar.gz
new file mode 100644
index 0000000..992ba79
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/scripts/devices.tar.gz
Binary files differ
diff --git a/tags/0.6rc1/templates/vserver-legacy/scripts/skel.conf b/tags/0.6rc1/templates/vserver-legacy/scripts/skel.conf
new file mode 100644
index 0000000..73985d3
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/scripts/skel.conf
@@ -0,0 +1,70 @@
+if [ "" = "" ] ; then
+PROFILE=prod
+fi
+# Select the IP number assigned to the virtual server
+# This IP must be one IP of the server, either an interface
+# or an IP alias
+# A vserver may have more than one IP. Separate them with spaces.
+# do not forget double quotes.
+# Some examples:
+# IPROOT="1.2.3.4 2.3.4.5"
+# IPROOT="eth0:1.2.3.4 eth1:2.3.4.5"
+# If the device is not specified, IPROOTDEV is used
+case $PROFILE in
+prod)
+#IPROOT=143.106.35.156
+IPROOT="eth0:192.168.0.1"
+# The netmask and broadcast are computed by default from IPROOTDEV
+#IPROOTMASK=
+#IPROOTBCAST=
+# You can define on which device the IP alias will be done
+# The IP alias will be set when the server is started and unset
+# when the server is stopped
+#IPROOTDEV=eth0
+# You can set a different host name for the vserver
+# If empty, the host name of the main server is used
+S_HOSTNAME=skel
+;;
+backup)
+IPROOT=1.2.3.4
+#IPROOTMASK=
+#IPROOTBCAST=
+#IPROOTDEV=eth0
+S_HOSTNAME=
+;;
+esac
+# Uncomment the onboot line if you want to enable this
+# virtual server at boot time
+#ONBOOT=yes
+# You can set a different NIS domain for the vserver
+# If empty, the current on is kept
+# Set it to "none" to have no NIS domain set
+S_DOMAINNAME=
+# You can set the priority level (nice) of all process in the vserver
+# Even root won't be able to raise it
+S_NICE=
+# You can set various flags for the new security context
+# lock: Prevent the vserver from setting new security context
+# sched: Merge scheduler priority of all processes in the vserver
+# so that it acts a like a single one.
+# nproc: Limit the number of processes in the vserver according to ulimit
+# (instead of a per user limit, this becomes a per vserver limit)
+# private: No other process can join this security context. Even root
+# Do not forget the quotes around the flags
+S_FLAGS="lock nproc"
+# You can set various ulimit flags and they will be inherited by the
+# vserver. You enter here various command line argument of ulimit
+# ULIMIT="-HS -u 200"
+# The example above, combined with the nproc S_FLAGS will limit the
+# vserver to a maximum of 200 processes
+ULIMIT="-HS -u 1000"
+# You can set various capabilities. By default, the vserver are run
+# with a limited set, so you can let root run in a vserver and not
+# worry about it. He can't take over the machine. In some cases
+# you can to give a little more capabilities (such as CAP_NET_RAW)
+# S_CAPS="CAP_NET_RAW"
+S_CAPS="CAP_SETGID"
+# Select an unused context (this is optional)
+# The default is to allocate a free context on the fly
+# In general you don't need to force a context
+#S_CONTEXT=
diff --git a/tags/0.6rc1/templates/vserver-legacy/scripts/vserver-legacy.sh b/tags/0.6rc1/templates/vserver-legacy/scripts/vserver-legacy.sh
new file mode 100644
index 0000000..4ce8a4b
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver-legacy/scripts/vserver-legacy.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# legacy vserver template
+#
+
+BASE="/etc/simplepkg/templates/vserver-legacy/vserver-legacy.s/"
+DEVICES="$BASE/devices.tar.gz"
+GPGKEY="$BASE/GPG-KEY"
+SKEL="$BASE/skel.conf"
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab
+
+echo "creating devices and dependencies"
+if [ -f "$DEVICES" ]; then
+ cd $1/$2/
+ tar zxvf $DEVICES
+ chroot $1/$2/ sbin/ldconfig
+else
+ echo error: device template $DEVICES not found
+fi
+
+if [ -f "$SKEL" ]; then
+ echo "creating /etc/vservers/$2.conf"
+ mkdir -p /etc/vservers
+ cp $SKEL /etc/vservers/$2.conf
+else
+ echo error: config file template $SKEL not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+ echo "importing slack gpg pubkey"
+ mkdir $1/$2/root/.gnupg
+ gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+echo "done; now edit /etc/vservers/$2.conf"
+echo "then, set all desired iptables rules and start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd""
diff --git a/tags/0.6rc1/templates/vserver/files/etc/apache/httpd.conf b/tags/0.6rc1/templates/vserver/files/etc/apache/httpd.conf
new file mode 100644
index 0000000..7b7115d
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/apache/httpd.conf
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do. They're here only as hints or reminders. If you are unsure
+# consult the online docs. You have been warned.
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+# 1. Directives that control the operation of the Apache server process as a
+# whole (the 'global environment').
+# 2. Directives that define the parameters of the 'main' or 'default' server,
+# which responds to requests that aren't handled by a virtual host.
+# These directives also provide default values for the settings
+# of all virtual hosts.
+# 3. Settings for virtual hosts, which allow Web requests to be sent to
+# different IP addresses or hostnames and have them handled by the
+# same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path. If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone. Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE! If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename.
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this. But if yours does (you'll know because
+# this file will be created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation. Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request. If there are fewer than MinSpareServers, it creates
+# a new spare. If there are more than MaxSpareServers, some of the
+# spares die off. The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies. The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources. On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+# request per connection. For example, if a child process handles
+# an initial request and 10 subsequent "keptalive" requests, it
+# would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important. Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module libexec/apache/mod_env.so
+LoadModule define_module libexec/apache/mod_define.so
+LoadModule config_log_module libexec/apache/mod_log_config.so
+LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
+LoadModule mime_module libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module libexec/apache/mod_status.so
+#LoadModule info_module libexec/apache/mod_info.so
+LoadModule includes_module libexec/apache/mod_include.so
+LoadModule autoindex_module libexec/apache/mod_autoindex.so
+LoadModule dir_module libexec/apache/mod_dir.so
+LoadModule cgi_module libexec/apache/mod_cgi.so
+#LoadModule asis_module libexec/apache/mod_asis.so
+#LoadModule imap_module libexec/apache/mod_imap.so
+#LoadModule action_module libexec/apache/mod_actions.so
+#LoadModule speling_module libexec/apache/mod_speling.so
+#LoadModule userdir_module libexec/apache/mod_userdir.so
+LoadModule alias_module libexec/apache/mod_alias.so
+LoadModule rewrite_module libexec/apache/mod_rewrite.so
+LoadModule access_module libexec/apache/mod_access.so
+LoadModule auth_module libexec/apache/mod_auth.so
+LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module libexec/apache/mod_digest.so
+LoadModule proxy_module libexec/apache/libproxy.so
+LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
+LoadModule expires_module libexec/apache/mod_expires.so
+LoadModule headers_module libexec/apache/mod_headers.so
+#LoadModule usertrack_module libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module libexec/apache/mod_unique_id.so
+LoadModule setenvif_module libexec/apache/mod_setenvif.so
+
+# Reconstruction of the complete module list from all available modules
+# (static and shared ones) to achieve correct module execution order.
+# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition. These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+# . On HPUX you may not be able to use shared memory as nobody, and the
+# suggested workaround is to create a user www and use that user.
+# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+# when the value of (unsigned)Group is above 60000;
+# don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed. This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories).
+#
+# First, we configure the "default" to be a very restrictive set of
+# permissions.
+#
+<Directory />
+ Options FollowSymLinks
+ AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+ Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo",
+# "AuthConfig", and "Limit"
+#
+ AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+ Order allow,deny
+ Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+ UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+# AllowOverride FileInfo AuthConfig Limit
+# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+# <Limit GET POST OPTIONS PROPFIND>
+# Order allow,deny
+# Allow from all
+# </Limit>
+# <LimitExcept GET POST OPTIONS PROPFIND>
+# Order deny,allow
+# Deny from all
+# </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index. Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+ DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients. Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons. Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files. If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+ Order allow,deny
+ Deny from all
+ Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name. With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible. This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+ TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value. If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type. The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+ MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here. Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of: On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType On=InOut text/* message/* multipart/*
+# EBCDICConvertByType On=In application/x-www-form-urlencoded
+# EBCDICConvertByType On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+ #
+ # Note that if you include a trailing / on fakename then the server will
+ # require it to be present in the URL. So "/icons" isn't aliased in this
+ # example, only "/icons/". If the fakename is slash-terminated, then the
+ # realname must also be slash terminated, and if the fakename omits the
+ # trailing slash, the realname must also omit it.
+ #
+ Alias /icons/ "/var/www/icons/"
+
+ <Directory "/var/www/icons">
+ Options Indexes MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ # This Alias will project the on-line documentation tree under /manual/
+ # even if you change the DocumentRoot. Comment it if you don't want to
+ # provide access to the on-line documentation.
+ #
+ Alias /manual/ "/var/www/htdocs/manual/"
+
+ <Directory "/var/www/htdocs/manual">
+ Options Indexes FollowSymlinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the client.
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+ #
+ # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+ <Directory "/var/www/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+ #
+ # FancyIndexing is whether you want fancy directory indexing or standard
+ #
+ IndexOptions FancyIndexing
+
+ #
+ # AddIcon* directives tell the server which icon to show for different
+ # files or filename extensions. These are only displayed for
+ # FancyIndexed directories.
+ #
+ AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+ AddIconByType (TXT,/icons/text.gif) text/*
+ AddIconByType (IMG,/icons/image2.gif) image/*
+ AddIconByType (SND,/icons/sound2.gif) audio/*
+ AddIconByType (VID,/icons/movie.gif) video/*
+
+ AddIcon /icons/binary.gif .bin .exe
+ AddIcon /icons/binhex.gif .hqx
+ AddIcon /icons/tar.gif .tar
+ AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+ AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+ AddIcon /icons/a.gif .ps .ai .eps
+ AddIcon /icons/layout.gif .html .shtml .htm .pdf
+ AddIcon /icons/text.gif .txt
+ AddIcon /icons/c.gif .c
+ AddIcon /icons/p.gif .pl .py
+ AddIcon /icons/f.gif .for
+ AddIcon /icons/dvi.gif .dvi
+ AddIcon /icons/uuencoded.gif .uu
+ AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+ AddIcon /icons/tex.gif .tex
+ AddIcon /icons/bomb.gif core
+
+ AddIcon /icons/back.gif ..
+ AddIcon /icons/hand.right.gif README
+ AddIcon /icons/folder.gif ^^DIRECTORY^^
+ AddIcon /icons/blank.gif ^^BLANKICON^^
+
+ #
+ # DefaultIcon is which icon to show for files which do not have an icon
+ # explicitly set.
+ #
+ DefaultIcon /icons/unknown.gif
+
+ #
+ # AddDescription allows you to place a short description after a file in
+ # server-generated indexes. These are only displayed for FancyIndexed
+ # directories.
+ # Format: AddDescription "description" filename
+ #
+ #AddDescription "GZIP compressed document" .gz
+ #AddDescription "tar archive" .tar
+ #AddDescription "GZIP compressed tar archive" .tgz
+
+ #
+ # ReadmeName is the name of the README file the server will look for by
+ # default, and append to directory listings.
+ #
+ # HeaderName is the name of a file which should be prepended to
+ # directory indexes.
+ #
+ ReadmeName README.html
+ HeaderName HEADER.html
+
+ #
+ # IndexIgnore is a set of filenames which directory indexing should ignore
+ # and not include in the listing. Shell-style wildcarding is permitted.
+ #
+ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+ #
+ # AddLanguage allows you to specify the language of a document. You can
+ # then use content negotiation to give a browser a file in a language
+ # it can understand.
+ #
+ # Note 1: The suffix does not have to be the same as the language
+ # keyword --- those with documents in Polish (whose net-standard
+ # language code is pl) may wish to use "AddLanguage pl .po" to
+ # avoid the ambiguity with the common suffix for perl scripts.
+ #
+ # Note 2: The example entries below illustrate that in quite
+ # some cases the two character 'Language' abbreviation is not
+ # identical to the two character 'Country' code for its country,
+ # E.g. 'Danmark/dk' versus 'Danish/da'.
+ #
+ # Note 3: In the case of 'ltz' we violate the RFC by using a three char
+ # specifier. But there is 'work in progress' to fix this and get
+ # the reference data for rfc1766 cleaned up.
+ #
+ # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+ # French (fr) - German (de) - Greek-Modern (el)
+ # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+ # Portugese (pt) - Luxembourgeois* (ltz)
+ # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+ # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
+ #
+ AddLanguage da .dk
+ AddLanguage nl .nl
+ AddLanguage en .en
+ AddLanguage et .ee
+ AddLanguage fr .fr
+ AddLanguage de .de
+ AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
+ AddLanguage it .it
+ AddLanguage ja .ja
+ AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage nn .nn
+ AddLanguage no .no
+ AddLanguage pl .po
+ AddCharset ISO-8859-2 .iso-pl
+ AddLanguage pt .pt
+ AddLanguage pt-br .pt-br
+ AddLanguage ltz .lu
+ AddLanguage ca .ca
+ AddLanguage es .es
+ AddLanguage sv .sv
+ AddLanguage cs .cz .cs
+ AddLanguage ru .ru
+ AddLanguage zh-TW .zh-tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
+
+ # LanguagePriority allows you to give precedence to some languages
+ # in case of a tie during content negotiation.
+ #
+ # Just list the languages in decreasing order of preference. We have
+ # more or less alphabetized them here. You probably want to change this.
+ #
+ <IfModule mod_negotiation.c>
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+ </IfModule>
+
+ #
+ # AddType allows you to tweak mime.types without actually editing it, or to
+ # make certain files to be certain types.
+ #
+ AddType application/x-tar .tgz
+
+ #
+ # AddEncoding allows you to have certain browsers uncompress
+ # information on the fly. Note: Not all browsers support this.
+ # Despite the name similarity, the following Add* directives have nothing
+ # to do with the FancyIndexing customization directives above.
+ #
+ AddEncoding x-compress .Z
+ AddEncoding x-gzip .gz .tgz
+ #
+ # If the AddEncoding directives above are commented-out, then you
+ # probably should define those extensions to indicate media types:
+ #
+ #AddType application/x-compress .Z
+ #AddType application/x-gzip .gz .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers",
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action command (see below)
+ #
+ # If you want to use server side includes, or CGI outside
+ # ScriptAliased directories, uncomment the following lines.
+ #
+ # To use CGI scripts:
+ #
+ #AddHandler cgi-script .cgi
+
+ #
+ # To use server-parsed HTML files
+ #
+ #AddType text/html .shtml
+ #AddHandler server-parsed .shtml
+
+ #
+ # Uncomment the following line to enable Apache's send-asis HTTP file
+ # feature
+ #
+ #AddHandler send-as-is asis
+
+ #
+ # If you wish to use server-parsed imagemap files, use
+ #
+ #AddHandler imap-file map
+
+ #
+ # To enable type maps, you might want to use
+ #
+ #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+# these come in three flavors
+#
+# 1) plain text
+ErrorDocument 500 /missing.html
+# n.b. the single leading (") marks it as text, it does not get output
+#
+# 2) local redirects
+ErrorDocument 404 /missing.html
+# to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+# N.B.: You can redirect to a script or a document using server-side-includes.
+#
+# 3) external redirects
+ErrorDocument 402 /missing.html
+# N.B.: Many of the environment variables associated with the original
+# request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+ #
+ # The following directives modify normal HTTP response behavior.
+ # The first directive disables keepalive for Netscape 2.x and browsers that
+ # spoof it. There are known problems with these browser implementations.
+ # The second directive is for Microsoft Internet Explorer 4.0b2
+ # which has a broken HTTP/1.1 implementation and does not properly
+ # support keepalive when it is used on 301 or 302 (redirect) responses.
+ #
+ BrowserMatch "Mozilla/2" nokeepalive
+ BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+ #
+ # The following directive disables HTTP/1.1 responses to browsers which
+ # are in violation of the HTTP/1.0 spec by not being able to grok a
+ # basic 1.1 response.
+ #
+ BrowserMatch "RealPlayer 4\.0" force-response-1.0
+ BrowserMatch "Java/1\.0" force-response-1.0
+ BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+# SetHandler server-status
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+# SetHandler server-info
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days. This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging
+# script on phf.apache.org. Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+# Deny from all
+# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled. To enable a particular
+# module for Apache, make sure the necessary packages are installed. Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache. Note that some modules may need additional configuration steps. For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED: openssl-solibs (A series) and/or openssl (N series),
+# mysql (AP series), gmp (L series), mhash (L series),
+# and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED: apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/tags/0.6rc1/templates/vserver/files/etc/apache/php.ini b/tags/0.6rc1/templates/vserver/files/etc/apache/php.ini
new file mode 100644
index 0000000..e6cddef
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/apache/php.ini
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file. It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with. Using this
+; file is warmly recommended for production sites. As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3. Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off [Security, Performance]
+; Global variables are no longer registered for input data (POST, GET, cookies,
+; environment and other server variables). Instead of using $foo, you must use
+; you can use $_REQUEST["foo"] (includes any variable that arrives through the
+; request, namely, POST, GET and cookie variables), or use one of the specific
+; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+; on where the input originates. Also, you can look at the
+; import_request_variables() function.
+; Note that register_globals is going to be depracated (i.e., turned off by
+; default) in the next version of PHP, because it often leads to security bugs.
+; Read http://php.net/manual/en/security.registerglobals.php for further
+; information.
+; - display_errors = Off [Security]
+; With this directive set to off, errors that occur during the execution of
+; scripts will no longer be displayed as a part of the script output, and thus,
+; will no longer be exposed to remote users. With some errors, the error message
+; content may expose information about your script, web server, or database
+; server that may be exploitable for hacking. Production sites should have this
+; directive set to off.
+; - log_errors = On [Security]
+; This directive complements the above one. Any errors that occur during the
+; execution of your script will be logged (typically, to your server's error log,
+; but can be configured in several ways). Along with setting display_errors to off,
+; this setup gives you the ability to fully understand what may have gone wrong,
+; without exposing any sensitive information to remote users.
+; - output_buffering = 4096 [Performance]
+; Set a 4KB output buffer. Enabling output buffering typically results in less
+; writes, and sometimes less packets sent on the wire, which can often lead to
+; better performance. The gain this directive actually yields greatly depends
+; on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off [Performance]
+; Disables registration of the somewhat redundant $argv and $argc global
+; variables.
+; - magic_quotes_gpc = Off [Performance]
+; Input data is no longer escaped with slashes so that it can be sent into
+; SQL databases without further manipulation. Instead, you should use the
+; function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS" [Performance]
+; The environment variables are not hashed into the $HTTP_ENV_VARS[]. To access
+; environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL [Code Cleanliness, Security(?)]
+; By default, PHP surpresses errors of type E_NOTICE. These error messages
+; are emitted for non-critical errors, but that could be a symptom of a bigger
+; problem. Most notably, this will cause error messages about the use
+; of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off [Code cleanliness]
+; It's not possible to decide to force a variable to be passed by reference
+; when calling a function. The PHP 4 style to do this is by making the
+; function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision = 14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit. You can enable output buffering during runtime by calling the output
+; buffering functions. You can also enable output buffering for all files by
+; setting this directive to On. If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function. For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+; directive. Instead, explicitly set the output handler using ob_start().
+; Using this ini directive may cause problems unless you know what script
+; is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP
+; outputs chunks that are few handreds bytes each as a result of compression.
+; If you want larger chunk size for better performence, enable output_buffering
+; also.
+; Note: output_handler must be empty if this is set 'On' !!!!
+; Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block. This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block. Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time. This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend. The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration. You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes. In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here. By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note: If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv(). These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below. This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode. Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header). It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30 ; Maximum execution time of each script, in seconds
+max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field. Or each number up to get desired error
+; reporting level
+; E_ALL - All errors and warnings
+; E_ERROR - fatal run-time errors
+; E_WARNING - run-time warnings (non-fatal errors)
+; E_PARSE - compile-time parse errors
+; E_NOTICE - run-time notices (these are warnings which often result
+; from a bug in your code, but it's possible that it was
+; intentional (e.g., using an uninitialized variable and
+; relying on the fact it's automatically initialized to an
+; empty string)
+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
+; initial startup
+; E_COMPILE_ERROR - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR - user-generated error message
+; E_USER_WARNING - user-generated warning message
+; E_USER_NOTICE - user-generated notice message
+;
+; Examples:
+;
+; - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+; - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+; - Show all errors
+;
+error_reporting = E_ALL
+
+; Print out errors (as a part of the output). For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below). Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed. It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&".
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&".
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC). Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables. You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data. This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on; Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information). If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated. Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header. To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues. The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function. The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers. Left undefined, PHP turns this on by default. You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution. Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting
+; of zero causes PHP to behave as before. Default is zero. You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client. This allows IIS to define the
+; security context that the request runs under. mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS. Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+; extension=modulename.extension
+;
+; For example, on Windows:
+;
+; extension=msql.dll
+;
+; ... or under UNIX:
+;
+; extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information
+; needs to go here. Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default. Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default. Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db = Not yet implemented
+;odbc.default_user = Not yet implemented
+;odbc.default_pw = Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+odbc.max_links = -1
+
+; Handling of LONG fields. Returns number of bytes to variables. 0 means
+; passthru.
+odbc.defaultlrl = 4096
+
+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect(). If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password! And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect().
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links. -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings. This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns. May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1. In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler. In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data. php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled. PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+; to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+; in publically accessible computer.
+; - User may access your site with the same session ID
+; always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs. If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch. 0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting(). Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents. -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file =
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+; portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database =
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files. Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding
+; is used. For the decode settings you can distinguish between motorola and
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel = UCS-2LE
+;exif.encode_jis =
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/tags/0.6rc1/templates/vserver/files/etc/apache/vhosts b/tags/0.6rc1/templates/vserver/files/etc/apache/vhosts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/apache/vhosts
diff --git a/tags/0.6rc1/templates/vserver/files/etc/hosts b/tags/0.6rc1/templates/vserver/files/etc/hosts
new file mode 100644
index 0000000..6e33147
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/hosts
@@ -0,0 +1,21 @@
+#
+# hosts This file describes a number of hostname-to-address
+# mappings for the TCP/IP subsystem. It is mostly
+# used at boot time, when no name servers are running.
+# On small systems, this file can be used instead of a
+# "named" name server. Just add the names, addresses
+# and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine. It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1 localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1 darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/tags/0.6rc1/templates/vserver/files/etc/logrotate.d/apache b/tags/0.6rc1/templates/vserver/files/etc/logrotate.d/apache
new file mode 100644
index 0000000..f31fbe2
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/logrotate.d/apache
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+ monthly
+ nomail
+ compress
+ create 0664 root root
+ rotate 12
+ postrotate
+ /etc/rc.d/rc.httpd restart > /dev/null
+ endscript
+}
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/profile b/tags/0.6rc1/templates/vserver/files/etc/profile
new file mode 100644
index 0000000..563594a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/profile
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+ export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH. Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+ echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+ if [ ! $? = 0 ]; then
+ PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+ fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+ VISUAL=emacs
+# VISUAL=gmacs
+# VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask. A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+ if [ -x $profile_script ]; then
+ . $profile_script
+ fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc
new file mode 100755
index 0000000..eefbcc5
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ "$1" == "3" ]; then
+ /etc/rc.d/rc.M
+elif [ "$1" == "6" ]; then
+ /etc/rc.d/rc.6
+else
+ echo "Invalid level."
+ exit 1
+fi
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.0 b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.0
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.0
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.4 b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.4
new file mode 100644
index 0000000..b972052
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.4
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.6 b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.6
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.6
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.K b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.K
new file mode 100755
index 0000000..00a1501
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.K
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K This file is executed by init when it goes into runlevel
+# 1, which is the administrative state. It kills all
+# daemons and then puts the system into single user mode.
+# Note that the file systems are kept mounted.
+#
+# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off accounting."
+ /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to initialize.
+ sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.M b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.M
new file mode 100755
index 0000000..0cb3343
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.M
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.S b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.S
new file mode 100755
index 0000000..05c75b4
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.S
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S: System initialization script.
+#
+# Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+ if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ fi
+fi
+
+# Start devfsd if necessary. On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+ /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+ if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ /sbin/mount -v sysfs /sys -n -t sysfs
+ fi
+ fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+ if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ /etc/rc.d/rc.udev
+ fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+ rm -f /fsrwtestfile
+ READWRITE=yes
+else
+ echo "Testing root filesystem status: read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+ FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+ RETVAL=0
+ if [ ! -r /etc/fastboot ]; then
+ echo "Checking root filesystem:"
+ /sbin/fsck $FORCEFSCK -C -a /
+ RETVAL=$?
+ fi
+ # An error code of 2 or higher will require a reboot.
+ if [ $RETVAL -ge 2 ]; then
+ # An error code equal to or greater than 4 means that some errors
+ # could not be corrected. This requires manual attention, so we
+ # offer a chance to try to fix the problem in single-user mode:
+ if [ $RETVAL -ge 4 ]; then
+ echo
+ echo "***********************************************************"
+ echo "*** An error occurred during the root filesystem check. ***"
+ echo "*** You will now be given a chance to log into the ***"
+ echo "*** system in single-user mode to fix the problem. ***"
+ echo "*** ***"
+ echo "*** If you are using the ext2 filesystem, running ***"
+ echo "*** 'e2fsck -v -y <partition>' might help. ***"
+ echo "***********************************************************"
+ echo
+ echo "Once you exit the single-user shell, the system will reboot."
+ echo
+ PS1="(Repair filesystem) \#"; export PS1
+ sulogin
+ else # With an error code of 2 or 3, reboot the machine automatically:
+ echo
+ echo "***********************************"
+ echo "*** The filesystem was changed. ***"
+ echo "*** The system will now reboot. ***"
+ echo "***********************************"
+ echo
+ fi
+ echo "Unmounting file systems."
+ /sbin/umount -a -r
+ /sbin/mount -n -o remount,ro /
+ echo "Rebooting system."
+ sleep 2
+ reboot -f
+ fi
+ # Remount the root filesystem in read-write mode
+ echo "Remounting root device with read-write enabled."
+ /sbin/mount -w -v -n -o remount /
+ if [ $? -gt 0 ] ; then
+ echo
+ echo "Attempt to remount root device as read-write failed! This is going to"
+ echo "cause serious problems."
+ echo
+ echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+ echo "read-write! You can make sure the root filesystem is getting mounted "
+ echo "read-write with the 'rw' flag to Loadlin:"
+ echo
+ echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
+ echo
+ echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+ echo
+ echo "rdev -R /dev/fd0 0"
+ echo
+ echo "You can also get into your system by using a boot disk with a command like this"
+ echo "on the LILO prompt line: (change the root partition name as needed)"
+ echo
+ echo "LILO: mount root=/dev/hda1 rw"
+ echo
+ echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+ echo -n "get into your machine and start looking for the problem. "
+ read junk;
+ fi
+else
+ echo "Testing root filesystem status: read-write filesystem"
+ if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+ ROOTTYPE="umsdos"
+ fi
+ if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+ echo
+ echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+ echo
+ echo "For filesystem checking to work properly, your system must initially mount"
+ echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+ echo "it does this. If you're booting with LILO, add a line:"
+ echo
+ echo " read-only"
+ echo
+ echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+ echo
+ echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+ echo " rdev -R /dev/fd0 1"
+ echo
+ echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+ echo
+ echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+ echo
+ echo -n "Press ENTER to continue. "
+ read junk;
+ fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+ /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+ /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+ if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+ echo "Setting system time from the hardware clock (UTC)."
+ /sbin/hwclock --utc --hctosys
+ else
+ echo "Setting system time from the hardware clock (localtime)."
+ /sbin/hwclock --localtime --hctosys
+ fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+ if [ -x /sbin/isapnp ]; then
+ /sbin/isapnp /etc/isapnp.conf
+ fi
+fi
+
+# This loads any kernel modules that are needed. These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+ . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+ /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or
+# /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Initializing LVM (Logical Volume Manager):"
+ # Check for device-mapper support.
+ if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+ # If device-mapper exists as a module, try to load it.
+ if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+ insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+ fi
+ fi
+ # Scan for new volume groups:
+ /sbin/vgscan 2> /dev/null
+ if [ $? = 0 ]; then
+ # This needs a moment to register.
+ sleep 10
+ # Make volume groups available to the kernel.
+ # This should also make logical volumes available.
+ /sbin/vgchange -ay
+ # Enable swapping again in case any LVs are used for swap. Ignore previous error. :-)
+ /sbin/swapon -a
+ fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+ echo "Checking non-root filesystems:"
+ /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+ /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+ /sbin/umount /initrd 2> /dev/null
+ rmdir /initrd 2> /dev/null
+ blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+ echo "Synchronizing UMSDOS directory structure:"
+ echo " /sbin/umssync -r99 -v- /"
+ /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+ echo "Using /etc/random-seed to initialize /dev/urandom."
+ cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.httpd b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.httpd
new file mode 100644
index 0000000..00b8837
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.httpd
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+ 'start')
+ /usr/sbin/apachectl start ;;
+ 'stop')
+ /usr/sbin/apachectl stop ;;
+ 'restart')
+ /usr/sbin/apachectl restart ;;
+ *)
+ echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inet2 b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inet2
new file mode 100755
index 0000000..db56589
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inet2
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2 This shell script boots up the entire network system.
+# Note, that when this script is used to also fire
+# up any important remote NFS disks (like the /usr
+# directory), care must be taken to actually
+# have all the needed binaries online _now_ ...
+#
+# Uncomment or comment out sections depending on which
+# services your site requires.
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+ # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+ # since it will need to be running in order to mount them. If portmap
+ # is not running, attempting to mount an NFS partition will cause mount
+ # to hang. Keep this in mind if you plan to mount unlisted partitions...
+ if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+ else
+ # Warn about a possible NFS problem. It's also possible to mount NFS partitions
+ # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+ echo "WARNING: NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+ echo " not executable. If you do not run portmap, NFS partitions will"
+ echo " not mount properly. To start rpc.portmap at boot, change the"
+ echo " permissions on /etc/rc.d/rc.portmap: chmod 755 /etc/rc.d/rc.portmap"
+ sleep 10
+ fi
+ echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs"
+ /sbin/mount -a -t nfs # This may be our /usr runtime!
+ # Show the mounted volumes:
+ /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+ echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
+ /sbin/mount -a -t smbfs
+ # Show the mounted volumes:
+ /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux. In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+ /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+ . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+ /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+ echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+ /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+ /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+ . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server. Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows. ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+# echo "Starting network routing daemon: /usr/sbin/routed"
+# /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+# echo "Starting system status server: /usr/sbin/rwhod"
+# /usr/sbin/rwhod
+# fi
+
+# # Fire up the PC-NFS daemon(s). This is a primarily obsolete system, and may
+# # not be very secure. It's not at all needed for normal NFS server support.
+# # You probably should not run this.
+# if [ -x /usr/sbin/rpc.pcnfsd ]; then
+# echo "Starting PC-NFS daemons: /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+# /usr/sbin/rpc.pcnfsd /var/spool/lpd
+# fi
+# if [ -x /usr/sbin/rpc.bwnfsd ]; then
+# /usr/sbin/rpc.bwnfsd /var/spool/lpd
+# fi
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inetd b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inetd
new file mode 100644
index 0000000..9fe1419
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.inetd
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+ if [ -x /usr/sbin/inetd ]; then
+ echo "Starting Internet super-server daemon: /usr/sbin/inetd"
+ /usr/sbin/inetd
+ fi
+}
+
+# Stop inetd:
+inetd_stop() {
+ killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+ inetd_stop
+ sleep 1
+ inetd_start
+}
+
+case "$1" in
+'start')
+ inetd_start
+ ;;
+'stop')
+ inetd_stop
+ ;;
+'restart')
+ inetd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.ip_forward b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.ip_forward
new file mode 100644
index 0000000..52bd2fe
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.ip_forward
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward: start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable: chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable: chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Activating IPv4 packet forwarding."
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ fi
+ # When using IPv4 packet forwarding, you will also get the
+ # rp_filter, which automatically rejects incoming packets if the
+ # routing table entry for their source address doesn't match the
+ # network interface they're arriving on. This has security
+ # advantages because it prevents the so-called IP spoofing,
+ # however it can pose problems if you use asymmetric routing
+ # (packets from you to a host take a different path than packets
+ # from that host to you) or if you operate a non-routing host
+ # which has several IP addresses on different interfaces. To
+ # turn rp_filter off, uncomment the lines below:
+ #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+ # echo "Disabling rp_filter."
+ # echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+ #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Disabling IPv4 packet forwarding."
+ echo 0 > /proc/sys/net/ipv4/ip_forward
+ fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+ ip_forward_stop
+ sleep 1
+ ip_forward_start
+}
+
+case "$1" in
+'start')
+ ip_forward_start
+ ;;
+'stop')
+ ip_forward_stop
+ ;;
+'restart')
+ ip_forward_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.local b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.local
new file mode 100755
index 0000000..3cf2076
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.local
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local: Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.mysqld b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.mysqld
new file mode 100644
index 0000000..239e2e6
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.mysqld
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database. To install an initial
+# database, do this as root:
+#
+# su - mysql
+# mysql_install_db
+#
+# Note that step one is becoming the mysql user. It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+ if [ -x /usr/bin/mysqld_safe ]; then
+ # If there is an old PID file (no mysqld running), clean it up:
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+ echo "Cleaning up old /var/run/mysql/mysql.pid."
+ rm -f /var/run/mysql/mysql.pid
+ fi
+ fi
+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+ fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+ # If there is no PID file, ignore this request...
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ killall mysqld
+ # Wait at least one minute for it to exit, as we don't know how big the DB is...
+ for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+ if [ ! -r /var/run/mysql/mysql.pid ]; then
+ break;
+ fi
+ sleep 1
+ done
+ if [ "$second" = "60" ]; then
+ echo "WARNING: Gave up waiting for mysqld to exit!"
+ sleep 15
+ fi
+ fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+ mysqld_stop
+ mysqld_start
+}
+
+case "$1" in
+'start')
+ mysqld_start
+ ;;
+'stop')
+ mysqld_stop
+ ;;
+'restart')
+ mysqld_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.postfix b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.postfix
new file mode 100644
index 0000000..bc32367
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.postfix
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+## 20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+ if [ -x /usr/sbin/postfix ]; then
+ echo -n "Starting postfix MTA: "
+ echo "/usr/sbin/postfix start"
+ /usr/sbin/postfix start 2>/dev/null
+ fi
+}
+
+postfix_stop() {
+ /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+ sh $0 stop
+ sleep 1
+ sh $0 start
+}
+
+postfix_reload() {
+ /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+ 'start')
+ postfix_start
+ ;;
+ 'stop')
+ postfix_stop
+ ;;
+ 'restart')
+ postfix_restart
+ ;;
+ 'reload')
+ postfix_reload
+ ;;
+ *)
+ echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sendmail b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sendmail
new file mode 100644
index 0000000..1a31c52
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sendmail
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+ if [ -x /usr/sbin/sendmail ]; then
+ echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+ /usr/sbin/sendmail -L sm-mta -bd -q25m
+ echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+ /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+ fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+ killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+ sendmail_stop
+ sleep 1
+ sendmail_start
+}
+
+case "$1" in
+'start')
+ sendmail_start
+ ;;
+'stop')
+ sendmail_stop
+ ;;
+'restart')
+ sendmail_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.serial b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.serial
new file mode 100755
index 0000000..5f31c01
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.serial
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial
+# Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver. We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial
+# file with a newer one.
+#
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now). Autosave also doesn't work for the hayes devices.
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+ ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+ SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+ SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+ if grep -q " ttyS$" /proc/devices ; then
+ LOADED="yes"
+ else
+ LOADED="no"
+ fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+ if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+ MODULE=$i/$DRIVER.o
+ fi
+done
+
+if ! test -f /proc/modules ; then
+ MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+ action="start";
+ ;;
+stop)
+ action="stop";
+ ;;
+*)
+ action="start";
+esac
+
+if test $action = stop ; then
+ if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+ `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+ echo -n "Saving state of serial devices... "
+ grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+ ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+ mv /etc/serial.conf /etc/.serial.conf.old
+ mv /etc/.serial.conf.new /etc/serial.conf
+ echo "done."
+ fi
+ if test -n "$MODULE" ; then
+ module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+ if test -z "$module" ; then
+ echo "The $DRIVER_NAME driver is not loaded."
+ rm -f ${RCLOCKFILE}
+ exit 0
+ fi
+ if rmmod $module ; then :; else
+ echo "The $DRIVER_NAME driver could NOT be unloaded."
+ exit 1;
+ fi
+ echo "The $DRIVER_NAME driver has been unloaded."
+ fi
+ rm -f ${RCLOCKFILE}
+ exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then
+ if insmod -f $MODULE $DRIVER_ARG ; then
+ true
+ else
+ echo "Couldn't load $DRIVER_NAME driver."
+ exit 1
+ fi
+fi
+
+if test -f /etc/serial.conf ; then
+ if test -n ${SETSERIAL} ; then
+ grep -v ^# < /etc/serial.conf | while read device args
+ do
+ if [ ! "$device" = "" -a ! "$args" = "" ]; then
+ ${SETSERIAL} -z $device $args
+ fi
+ done
+ fi
+else
+ echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sshd b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sshd
new file mode 100755
index 0000000..a3707e3
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sshd
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+ # Create host keys if needed.
+ if [ ! -r /etc/ssh/ssh_host_key ]; then
+ /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+ /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+ /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+ fi
+ /usr/sbin/sshd
+}
+
+sshd_stop() {
+ killall sshd
+}
+
+sshd_restart() {
+ if [ -r /var/run/sshd.pid ]; then
+ echo "WARNING: killing listener process only. To kill every sshd process, you must"
+ echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to"
+ echo " allow an admin logged in through sshd to use 'rc.sshd restart' without"
+ echo " being cut off. If sshd has been upgraded, new connections will now"
+ echo " use the new version, which should be a safe enough approach."
+ kill `cat /var/run/sshd.pid`
+ else
+ killall sshd
+ fi
+ sleep 1
+ sshd_start
+}
+
+case "$1" in
+'start')
+ sshd_start
+ ;;
+'stop')
+ sshd_stop
+ ;;
+'restart')
+ sshd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.syslog b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.syslog
new file mode 100755
index 0000000..a005fb7
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.syslog
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+ if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+ echo -n "Starting sysklogd daemons: "
+ echo -n "/usr/sbin/syslogd "
+ /usr/sbin/syslogd
+ sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+ echo "/usr/sbin/klogd -c 3 -x"
+ # '-c 3' = display level 'error' or higher messages on console
+ # '-x' = turn off broken EIP translation
+ /usr/sbin/klogd -c 3 -x
+ fi
+}
+
+syslogd_stop() {
+ killall syslogd 2> /dev/null
+ killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+ syslogd_stop
+ sleep 1
+ syslogd_start
+}
+
+case "$1" in
+'start')
+ syslogd_start
+ ;;
+'stop')
+ syslogd_stop
+ ;;
+'restart')
+ syslogd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sysvinit b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sysvinit
new file mode 100755
index 0000000..916e59e
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rc.d/rc.sysvinit
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit This file provides basic compatibility with SystemV style
+# startup scripts. The SystemV style init system places
+# start/stop scripts for each runlevel into directories such as
+# /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+# from /etc/rc.d/rc.M. This makes for a lot more init scripts,
+# and a more complicated execution path to follow through if
+# something goes wrong. For this reason, Slackware has always
+# used the traditional BSD style init script layout.
+#
+# However, many binary packages exist that install SystemV
+# init scripts. With rc.sysvinit in place, most well-written
+# startup scripts will work. This is primarily intended to
+# support commercial software, though, and probably shouldn't
+# be considered bug free.
+#
+# Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+# from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+ case "$1" in
+ *.sh)
+ sh "$@"
+ ;;
+ *)
+ "$@"
+ ;;
+ esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+ runlevel=$RUNLEVEL
+ export runlevel
+ prevlevel=$PREVLEVEL
+ export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+ for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+ if [ -x $script ]; then
+ startup $script stop
+ fi
+ done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+ if [ -x $script ]; then
+ startup $script start
+ fi
+done
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/rssh.conf b/tags/0.6rc1/templates/vserver/files/etc/rssh.conf
new file mode 100644
index 0000000..a74acc6
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/rssh.conf
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility. "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010: # the path can simply be left out to not chroot
+#user=rudy:077:00010 # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir" # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir" # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir" # both with chroot
+#user=rudy:011:00100: # cvs, with no chroot
+#user=rudy:011:01000: # rdist, with no chroot
+#user=rudy:011:10000: # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot" # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot" # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot' # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"
+#user = "rudy:011:00001:/usr/local/chroot dir" # neither do comments at line end
+
diff --git a/tags/0.6rc1/templates/vserver/files/etc/ssh/sshd_config b/tags/0.6rc1/templates/vserver/files/etc/ssh/sshd_config
new file mode 100644
index 0000000..a161fec
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/etc/ssh/sshd_config
@@ -0,0 +1,103 @@
+# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the ChallengeResponseAuthentication mechanism.
+# Depending on your PAM configuration, this may bypass the setting of
+# PasswordAuthentication, PermitEmptyPasswords, and
+# "PermitRootLogin without-password". If you just want the PAM account and
+# session checks to run without PAM authentication, then enable this but set
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem sftp /usr/libexec/sftp-server
diff --git a/tags/0.6rc1/templates/vserver/files/var/www/htdocs/missing.html b/tags/0.6rc1/templates/vserver/files/var/www/htdocs/missing.html
new file mode 100644
index 0000000..2762324
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/var/www/htdocs/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ File not found.
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/tags/0.6rc1/templates/vserver/files/var/www/missing.html b/tags/0.6rc1/templates/vserver/files/var/www/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/files/var/www/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/tags/0.6rc1/templates/vserver/packages b/tags/0.6rc1/templates/vserver/packages
new file mode 100644
index 0000000..0cd1f69
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/packages
@@ -0,0 +1,250 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+glibc: REC
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+mailx: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+# libsafe
+# contrib
+simplepkg
+ssmtp
diff --git a/tags/0.6rc1/templates/vserver/perms b/tags/0.6rc1/templates/vserver/perms
new file mode 100644
index 0000000..0c136ed
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/perms
@@ -0,0 +1,37 @@
+./etc;0;0;755
+./etc/apache;0;0;755
+./etc/apache/httpd.conf;0;0;644
+./etc/apache/php.ini;0;0;644
+./etc/apache/vhosts;0;0;644
+./etc/logrotate.d;0;0;755
+./etc/logrotate.d/apache;0;0;644
+./etc/rc.d;0;0;755
+./etc/rc.d/rc.httpd;0;0;644
+./etc/rc.d/rc;0;0;755
+./etc/rc.d/rc.0;0;0;755
+./etc/rc.d/rc.4;0;0;644
+./etc/rc.d/rc.6;0;0;755
+./etc/rc.d/rc.K;0;0;755
+./etc/rc.d/rc.M;0;0;755
+./etc/rc.d/rc.S;0;0;755
+./etc/rc.d/rc.ip_forward;0;0;644
+./etc/rc.d/rc.inet2;0;0;755
+./etc/rc.d/rc.inetd;0;0;644
+./etc/rc.d/rc.mysqld;0;0;644
+./etc/rc.d/rc.local;0;0;755
+./etc/rc.d/rc.postfix;0;0;644
+./etc/rc.d/rc.sendmail;0;0;644
+./etc/rc.d/rc.serial;0;0;755
+./etc/rc.d/rc.sshd;0;0;755
+./etc/rc.d/rc.syslog;0;0;755
+./etc/rc.d/rc.sysvinit;0;0;755
+./etc/ssh;0;0;755
+./etc/ssh/sshd_config;0;0;644
+./etc/rssh.conf;0;0;644
+./etc/hosts;0;0;644
+./etc/profile;0;0;644
+./var;0;0;755
+./var/www;0;0;755
+./var/www/htdocs;0;0;755
+./var/www/htdocs/missing.html;0;0;644
+./var/www/missing.html;0;0;644
diff --git a/tags/0.6rc1/templates/vserver/scripts/GPG-KEY b/tags/0.6rc1/templates/vserver/scripts/GPG-KEY
new file mode 100644
index 0000000..fd23e95
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/scripts/GPG-KEY
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type bits/keyID Date User ID
+pub 1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub 1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tags/0.6rc1/templates/vserver/scripts/devices.tar.gz b/tags/0.6rc1/templates/vserver/scripts/devices.tar.gz
new file mode 100644
index 0000000..dc4aea6
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/scripts/devices.tar.gz
Binary files differ
diff --git a/tags/0.6rc1/templates/vserver/scripts/vserver.sh b/tags/0.6rc1/templates/vserver/scripts/vserver.sh
new file mode 100644
index 0000000..e9d68a9
--- /dev/null
+++ b/tags/0.6rc1/templates/vserver/scripts/vserver.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# vserver template script
+#
+
+BASE="/etc/simplepkg/templates/vserver/vserver.s"
+DEVICES="$BASE/devices.tar.gz"
+GPGKEY="$BASE/GPG-KEY"
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+echo "creating /etc/vservers/$2..."
+mv $1/$2 $1/$2.old
+vserver $2 build -m skeleton --force &> /dev/null
+result="$?"
+rm -rf $1/$2 && mv $1/$2.old $1/$2
+
+if [ "$result" != "0" ]; then
+ mkdir -p /etc/vservers/$2/apps/init
+fi
+
+echo sysv > /etc/vservers/$2/apps/init/style
+echo 3 > /etc/vservers/$2/apps/init/runlevel.start
+echo 6 > /etc/vservers/$2/apps/init/runlevel.stop
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab
+
+echo "creating devices and dependencies..."
+if [ -f "$DEVICES" ]; then
+ cd $1/$2/
+ tar zxvf $DEVICES
+ chroot $1/$2/ sbin/ldconfig
+else
+ echo error: device template $DEVICES not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+ echo "importing slack gpg pubkey"
+ mkdir $1/$2/root/.gnupg
+ gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+# todo: add rebootmgr
+echo "done; now config your vserver at /etc/vservers/$2"
+echo "then, set all desired iptables rules and other stuff and then start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd""
diff --git a/tags/0.6rc1/utils/README b/tags/0.6rc1/utils/README
new file mode 100644
index 0000000..ac139ad
--- /dev/null
+++ b/tags/0.6rc1/utils/README
@@ -0,0 +1,2 @@
+The scripts in this folder are just snippets used during the development or
+code not maintained anymore. They're not included in the simplepkg package.
diff --git a/tags/0.6rc1/utils/add-gpl b/tags/0.6rc1/utils/add-gpl
new file mode 100755
index 0000000..0a261e2
--- /dev/null
+++ b/tags/0.6rc1/utils/add-gpl
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# add-gpl is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# add-gpl is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# This script should be used to add a license in scripts.
+#
+
+script="SlackBuild"
+#script="build"
+
+for file in `find -name "*.$script"`; do
+
+ echo Changing $file...
+ package="`basename $file .$script`"
+ slackbuild="`basename $file`"
+
+ string="\#\!\/bin\/bash\n\#\n# $slackbuild is free software; you can redistribute it and\/or modify it under the\n# terms of the GNU General Public License as published by the Free Software\n# Foundation; either version 2 of the License, or any later version.\n#\n# $slackbuild is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License along with\n# this program; if not, write to the Free Software Foundation, Inc., 59 Temple\n# Place - Suite 330, Boston, MA 02111-1307, USA"
+
+ sed -e "s/\#\!\/bin\/bash/$string/" $file > $file.new
+ cat $file.new > $file
+ rm $file.new
+
+done
diff --git a/tags/0.6rc1/utils/add-slack-required b/tags/0.6rc1/utils/add-slack-required
new file mode 100755
index 0000000..67804d0
--- /dev/null
+++ b/tags/0.6rc1/utils/add-slack-required
@@ -0,0 +1,63 @@
+#!/bin/bash
+#
+# add-slack-required is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or any later version.
+#
+# add-slack-required is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# add slack-required files in an existing repository
+# by rhatto at riseup.net
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -z "$2" ]; then
+ echo "usage: $BASENAME /path/to/slackbuilds /path/to/packages"
+ exit 1
+elif [ ! -d "$1" ]; then
+ echo "$BASENAME: folder not found: $1"
+ exit 1
+elif [ ! -d "$2" ]; then
+ echo "$BASENAME: folder not found: $2"
+ exit 1
+fi
+
+slackbuild="$1"
+repository="$2"
+
+# we need the function package_name
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+function search_and_copy_slackbuild {
+
+ if [ -f "$1" ]; then
+ echo Copying `basename $1` to `dirname $package`/$pack.slack-required
+ cp $1 `dirname $package`/$pack.slack-required
+ svn add `dirname $package`/$pack.slack-required 2> /dev/null
+ fi
+
+}
+
+for package in `find $repository/ -name *tgz`; do
+ pack="`package_name $package`"
+ for build_script in `find $slackbuild/ -name $pack.SlackBuild`; do
+
+ search_and_copy_slackbuild `dirname $build_script`/slack-required
+ search_and_copy_slackbuild `dirname $build_script`/$pack.slack-required
+
+ done
+done
+
diff --git a/tags/0.6rc1/utils/convert-template-scheme b/tags/0.6rc1/utils/convert-template-scheme
new file mode 100755
index 0000000..de7e507
--- /dev/null
+++ b/tags/0.6rc1/utils/convert-template-scheme
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# This software is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This software is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# script for converting simplepkg templates
+# to the 0.5 own-folder format
+#
+
+cwd="/etc/simplepkg"
+cd $cwd
+
+for file in `ls *.template`; do
+ cd $cwd
+ template="`echo $file | cut -d . -f 1`"
+ mkdir templates/$template
+ mv $template.d templates/$template/
+ mv $template.s templates/$templates/
+ mv $template.template templates/$template/
+ cd templates/$template/$template.s
+ # optional step
+ # if [ "$template" != "vserver" ]; then
+ # ln -sf ../../../defaults/templatesvserver/vserver.s/vserver.sh
+ # fi
+done
+
diff --git a/tags/0.6rc1/utils/enable-mkbuild-section b/tags/0.6rc1/utils/enable-mkbuild-section
new file mode 100755
index 0000000..0889f1a
--- /dev/null
+++ b/tags/0.6rc1/utils/enable-mkbuild-section
@@ -0,0 +1,40 @@
+#!/bin/bash
+#
+# add-slack-required is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or any later version.
+#
+# add-slack-required is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# enable a given mkbuild section
+# by rhatto at riseup.net
+#
+
+CWD="`pwd`"
+BASE="/path/to/mkbuilds"
+MATCH="SLACK REQUIRED" # example parameter
+ADD_BEFORE="on: build_package" # example section
+INCLUDE=" on: slack-required" # example section
+
+cd $BASE
+FILES="`grep -R "$MATCH" * | grep -v .svn | grep -v '""' | cut -d : -f 1`"
+
+for file in $FILES; do
+ LINES="`wc -l $file | awk '{ print $1 }'`"
+ CENTER="`sed = $file | sed 'N;s/\n/\t/' | grep "$ADD_BEFORE" | awk '{ print $1 }'`"
+ CENTER="`echo $(($CENTER -1))`"
+ END="`echo $(($LINES - $CENTER))`"
+ head -n $CENTER $file > $file.new
+ echo "$INCLUDE" >> $file.new
+ tail -n $END $file >> $file.new
+ cat $file.new > $file
+ rm $file.new
+done
+
+cd $CWD
diff --git a/tags/0.6rc1/utils/merge-template b/tags/0.6rc1/utils/merge-template
new file mode 100755
index 0000000..cee1790
--- /dev/null
+++ b/tags/0.6rc1/utils/merge-template
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# This software is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This software is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# tip: to assemble a template from all slack tagfiles:
+#
+# for diskset in a ap d e f k l n t tcl x xap y; do
+# lynx -dump http://url/to/slackware/$diskset/tagfile >> slack.template
+# done
+#
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <template> <base-template>"
+ exit 1
+elif [ ! -f "$1" ] || [ ! -f "$2" ]; then
+ echo error: $1 ou $2 not found
+ exit 1
+fi
+
+cp $2 $1.new
+
+cat $1 | while read line; do
+ pack="`echo $line | cut -d : -f 1`"
+ if ! grep -qe "^$pack:" $2; then
+ echo $line >> $1.new
+ fi
+done
diff --git a/tags/0.6rc1/utils/metapkg b/tags/0.6rc1/utils/metapkg
new file mode 100755
index 0000000..e3db602
--- /dev/null
+++ b/tags/0.6rc1/utils/metapkg
@@ -0,0 +1,72 @@
+#!/bin/bash
+#
+# metapkg v0.1: install or remove a pkgtool metapackage
+#
+# feedback: rhatto at riseup.net | GPL
+#
+# Metapkg is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# Metapkg is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# A metapackage is a file containing a list of packages.
+# This script just installs all the packages in a metapackage.
+# Remeber that mkjail template == metapkg metapackage.
+#
+
+#
+# TODO
+#
+# In the mean term, metapkg will not be developed, but the code will rest
+# until someone need it. Some ideas to think for the future of metapkg would
+# be a better integration with simplepkg structure, like:
+#
+# - By default metapkg searches by a slack-required in the package/slackbuilds repos
+# - With -f, metapkg uses a local file (template, slack-required or tagfile)
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+ROOT="/"
+
+function usage {
+ echo "usage: [ROOT=/otherroot] $BASENAME --option [metapackage]"
+ echo "options: --install, --remove"
+ exit 1
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$2" ]; then
+ usage
+else
+ eval_config $BASENAME -u
+fi
+
+if [ ! -f "$BASE_CONF/$2.template" ]; then
+ echo error: template $2 not found
+ exit 1
+else
+ TEMPLATE="$BASE_CONF/$2.template"
+ unset server
+fi
+
+if [ "$1" == "--install" ] || [ "$1" == "install" ]; then
+ install_packages
+elif [ "$1" == "--remove" ] || [ "$1" == "remove" ]; then
+ remove_packages
+else
+ usage
+fi
diff --git a/tags/0.6rc1/utils/repos b/tags/0.6rc1/utils/repos
new file mode 100755
index 0000000..e4a17ee
--- /dev/null
+++ b/tags/0.6rc1/utils/repos
@@ -0,0 +1,87 @@
+#!/bin/bash
+#
+# repos script got from
+# http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ17
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# any later version.
+#
+# Changes by rhatto at riseup.net to fit http://slack.sarava.org needs
+#
+
+BASENAME="`basename $0`"
+REPOS_CONF="/etc/simplepkg/repos.conf"
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ exit 1
+fi
+
+function usage {
+
+ echo "`basename $0` [pkg [file]|all|new|svnmeta|PACKAGESTXT|FILELIST|MD5]"
+
+}
+
+function do_all {
+
+ for pkg in `find . -type f -name '*.tgz' -print`; do
+ gen_meta $pkg
+ done
+ $0 PACKAGESTXT
+ $0 FILELIST
+ $0 MD5
+
+}
+
+# ---------------------------------
+# main
+# ---------------------------------
+
+case "$1" in
+ pkg)
+ if [ -n "$2" ]; then
+ gen_meta $2
+ else
+ usage
+ fi
+ ;;
+ all)
+ do_all
+ ;;
+ new)
+ for pkg in `find . -type f -name '*.tgz' -print`; do
+ if [ ! -f ${pkg%tgz}meta ]; then
+ gen_meta $pkg
+ fi
+ done
+ ;;
+ svnmeta)
+ svn_add_meta
+ ;;
+ PACKAGESTXT)
+ gen_packages_txt .
+ gen_packages_txt patches
+ ;;
+ FILELIST)
+ gen_filelist
+ gen_patches_filelist patches
+ ;;
+ MD5)
+ gen_md5_checksums .
+ gen_md5_checksums patches
+ ;;
+ usage)
+ usage
+ ;;
+ *)
+ do_all
+ svn_add_meta
+ ;;
+esac
+
diff --git a/tags/0.6rc1/utils/searchpkg b/tags/0.6rc1/utils/searchpkg
new file mode 100755
index 0000000..cc5a827
--- /dev/null
+++ b/tags/0.6rc1/utils/searchpkg
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# This software is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This software is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# searchpkg: search packages inside a local slackware-like repository
+# this is part of simplepkg
+# feedback: rhatto at riseup.net | gpl
+#
+
+# find . -type f -exec ls -l {} \; > FILELIST.TXT
+
+if [[ $# != 1 && $# != 2 ]]; then
+ echo "usage: $0 [-1] <repository> [package-name]"
+ echo "package-name can be either the full package file name, just its prefix or so"
+ echo "option -1 show just the first matching package"
+ exit 1
+fi
+
+FILELIST="$1/FILELIST.TXT"
+PACKAGE_FIELD="8"
+
+if [ -z "$2" ]; then
+ grep .tgz $FILELIST
+else
+ grep -e "$2" $FILELIST | grep tgz | awk "{ print \$$PACKAGE_FIELD }"
+fi
diff --git a/tags/0.6rc1/utils/slackbuild-versions b/tags/0.6rc1/utils/slackbuild-versions
new file mode 100755
index 0000000..1d7bc92
--- /dev/null
+++ b/tags/0.6rc1/utils/slackbuild-versions
@@ -0,0 +1,30 @@
+#!/bin/bash
+# (ir)responsavel: rafael (at) riseup (dot) net
+
+echo "<html>"
+echo "<head>"
+echo "<title>"
+echo "Vers&otilde;es dos SlackBuilds"
+echo "</title>"
+echo "</head>"
+echo "<body>"
+echo "<br><br>"
+echo "Aten&ccedil;&atilde;o:<br><br>"
+echo "Quando o software possui algum n&uacute;mero de vers&atilde;o, isso "
+echo "significa que essa vers&atilde;o &eacute; a vers&atilde;o hardcoded "
+echo "do SlackBuild. Vamos mant&ecirc;-las atualizadas ;) "
+echo "<br><br>"
+
+rm .versions.temp
+
+for i in $(createpkg -l| grep SlackBuild| cut -d " " -f 7- | cut -d . -f 1); do echo $i >> .versions.temp; done
+
+for i in $(sort .versions.temp); do echo $i; echo "<br>"; for u in $(createpkg --search $i); do grep "VERSION=" $u; echo "<br><br>"; done; done
+
+rm .versions.temp
+
+echo "<br><br>SlackBuilds feitos pelo Projeto <a href=\"http://slack.sarava.org/\">slack.sarava.org</a><br>"
+echo "</body>"
+echo "</html>"
+
+