# Makefile for to create mini chroot/jail tree
# by Tomoyuki Kudou <kudou@cypac.co.jp>
# for FreeBSD-4.5

ROOTDIR=/usr/jail/1/root
TEMPLATEDIR=/usr/jail/1
PKGDIR=/cdrom/packages/All

JAILHOSTNAME=j1.spring.dom
JAILIP=192.168.100.33

INITDIRS=/bin /dev /var /var/db /var/db/pkg /var/log /var/run /etc /usr /sbin /tmp /root /proc /usr/bin /usr/lib /usr/libexec /usr/sbin /usr/local
# mini chroot/jail base files
ETCFILES=/etc/login.conf /etc/hosts /etc/resolv.conf
LIBFILES=/usr/libexec/ld-elf.so.1 /usr/lib/libc.so.4 /usr/lib/libfetch.so.3 /usr/lib/libmd.so.2
COMMANDS=/sbin/nologin /bin/sh /bin/[ /bin/echo /usr/bin/basename /bin/expr /usr/bin/limits /bin/cat /bin/kill /bin/rm
MKENVTOOLS=/dev/MAKEDEV /usr/sbin/pwd_mkdb /usr/sbin/pkg_add /usr/sbin/pkg_info /bin/cp /bin/ls /bin/rmdir /bin/mkdir /bin/ln /bin/mv /bin/chmod /usr/bin/chgrp /usr/sbin/chown /usr/sbin/mtree /usr/bin/tar /usr/bin/gzip /usr/bin/chflags
COPYFILES=$(ETCFILES) $(COMMANDS) $(LIBFILES) $(MKENVTOOLS)

# extra files
EXTRAFILES=
PKGFILES=

all: step1 step2 step3 step4 step5

# create initial directories and copy files
step1:
        -[ ! -d $(ROOTDIR) ] && mkdir $(ROOTDIR)
        -for f in $(INITDIRS); do [ ! -d $(ROOTDIR)$$f ] && mkdir $(ROOTDIR)$$f ; done
        chmod 777 $(ROOTDIR)/tmp
        -for f in $(COPYFILES); do (cd / ; tar cpf - `echo $$f | sed -e 's,^/,/,'` ) | tar xpvf - -C $(ROOTDIR) ; done

# create passwd database
step2:
        cp $(TEMPLATEDIR)/master.passwd.template $(ROOTDIR)/etc/master.passwd
        chmod 600 $(ROOTDIR)/etc/master.passwd
        chroot $(ROOTDIR) /usr/sbin/pwd_mkdb /etc/master.passwd
        cp $(TEMPLATEDIR)/group.template $(ROOTDIR)/etc/group
        chmod 644 $(ROOTDIR)/etc/group

# create minimum device files
step3:
        cd $(ROOTDIR)/dev ; sh MAKEDEV jail

# copy EXTRAFILES
step4:
        -for f in $(EXTRAFILES); do (cd / ; tar cpf - `echo $$f | sed -e 's,^/,/,'` ) | tar xpvf - -C $(ROOTDIR) ; done

# copy packages
step5:
        -for f in $(PKGFILES); do cp $(PKGDIR)/$$f $(ROOTDIR)/tmp/$$f ; done

# remove tools
stepx:
        -for f in $(MKENVTOOLS); do rm -f $(ROOTDIR)$$f ; done

do-chroot:
        chroot $(ROOTDIR) /bin/sh

do-jail:
        jail $(ROOTDIR) $(JAILHOSTNAME) $(JAILIP) /bin/sh

clean:
        rm -rf $(ROOTDIR)
