Docker

docker is a tool that makes linux containers super easy.

slackware package

There is a build available on slackbuilds. The only build dependency is golang

slackware container

I have published an image on the the public docker index called vbatts/slackware. Once you have docker installed, and the daemon started:
sudo sh /etc/rc.d/rc.docker start
then to access this image, just run:
docker run -i -t vbatts/slackware bash

Use cases

I've made a build script that enables building a slackware image from other versions of Slackware. You can get that source on github.com/vbatts/slackware-docker.

Since the container state is basically ephemeral, it makes for a great build environment, since it's like starting fresh every time.

Once you have a base image, can install a full version of slackware like so:


# copy a mirror if you haven't already
rsync -avPHS rsync://slackware.osuosl.org/slackware/slackware64-14.1/ ./slackware64-14.1/

# run the container
# privileged mode is required
# and mounting in the local mirror (read-only)
docker run -i -t --privileged -v $(pwd)/slackware64-14.1/:/mnt/slackware64-14.1/:ro  vbatts/slackware /sbin/upgradepkg --install-new /mnt/slackware64-14.1/slackware64/*/*.t?z /mnt/slackware64-14.1/patches/packages/*.t?z

# save that ephemeral container as a reusable image
docker commit $(docker ps -l -q) $USER/slackware-full

Now you can use this full install for package build/validation

# build an SBo in an clean slate
git clone git://slackbuilds.org/slackbuilds.git
# make a directory for the built artifact to wind up in
mkdir sbo-tmp
# mount in the needed directories, and run the steps needed to build
docker run -i -t -v $(pwd)/sbo-tmp:/tmp -v $(pwd)/slackbuilds:/mnt -w /mnt/development/google-go-lang $USER/slackware-full bash
 
New York-- to that tall skyline I come
Flyin' in from London to your door
New York-- lookin' down on Central Park
Where they say you should not wander after dark.
New York.
                -- Simon and Garfunkle

root@45cf9ee51e07:/mnt/development/google-go-lang# source google-go-lang.info
root@45cf9ee51e07:/mnt/development/google-go-lang# wget $DOWNLOAD
--2014-05-08 02:30:30--  https://go.googlecode.com/files/go1.2.src.tar.gz
Resolving go.googlecode.com (go.googlecode.com)... 64.233.171.82, 2607:f8b0:400d:c03::52
Connecting to go.googlecode.com (go.googlecode.com)|64.233.171.82|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9519109 (9.1M) [application/x-gzip]
Saving to: 'go1.2.src.tar.gz'

100%[===================================================================================================================================================================================================>] 9,519,109   1.19MB/s   in 7.9s   

2014-05-08 02:30:38 (1.14 MB/s) - 'go1.2.src.tar.gz' saved [9519109/9519109]

root@45cf9ee51e07:/mnt/development/google-go-lang# sh google-go-lang.SlackBuild
[...]

Slackware package /tmp/google-go-lang-1.2-x86_64-1_SBo.tgz created.


root@45cf9ee51e07:/mnt/development/google-go-lang# exit

# look for artifacts!
ls sbo-tmp/
google-go-lang-1.2-x86_64-1_SBo.tgz  gopath-api-root/  SBo/