Annotation of dgamelaunch-openbsd/dgl-create-chroot, Revision 1.1
1.1 ! rubenllo 1: #!/bin/sh
! 2:
! 3: # Ideas and some parts from the original dgl-create-chroot (by joshk@triplehelix.org, modifications by jilles@stack.nl)
! 4: # This one by paxed@alt.org
! 5:
! 6:
! 7: #
! 8: # configure dgl with --with-config-file=/path_to_chroot/etc/dgamelaunch.conf, if you want the conf file inside the chroot.
! 9: #
! 10:
! 11:
! 12: # Same as chroot_path in dgl config file
! 13: CHROOT="/opt/nethack/nethack.alt.org/"
! 14: # the user & group from dgamelaunch config file.
! 15: USRGRP="games:games"
! 16: # COMPRESS from include/config.h; the compression binary to copy. leave blank to skip.
! 17: COMPRESSBIN="/bin/gzip"
! 18: # nethack binary to copy into chroot (leave blank to skip)
! 19: #NETHACKBIN="/home/paxed/hacking/coding/nethacksource/nethack-3.4.3-nao/nh343/nethack.343-nao"
! 20: # fixed data to copy (leave blank to skip)
! 21: #NH_PLAYGROUND_FIXED="/home/paxed/hacking/coding/nethacksource/nethack-3.4.3-nao/nh343/"
! 22: # HACKDIR from include/config.h; aka nethack subdir inside chroot
! 23: NHSUBDIR="/nh343/"
! 24: # VAR_PLAYGROUND from include/unixconf.h
! 25: NH_VAR_PLAYGROUND="/nh343/var/"
! 26:
! 27: # only define this if dgl was configured with --enable-sqlite
! 28: SQLITE_DBFILE="/dgldir/dgamelaunch.db"
! 29:
! 30: # END OF CONFIG
! 31: ##############################################################################
! 32:
! 33: errorexit()
! 34: {
! 35: echo "Error: $@" >&2
! 36: exit 1
! 37: }
! 38:
! 39: findlibs()
! 40: {
! 41: for i in "$@"; do
! 42: if [ -z "`ldd "$i" | grep 'not a dynamic executable'`" ]; then
! 43: echo $(ldd "$i" | awk '{ print $3 }' | egrep -v ^'\(')
! 44: echo $(ldd "$i" | grep 'ld-linux' | awk '{ print $1 }')
! 45: fi
! 46: done
! 47: }
! 48:
! 49: ##############################################################################
! 50:
! 51: if [ -z "$TERMDATA" ]; then
! 52: SEARCHTERMDATA="/etc/terminfo /usr/share/lib/terminfo /usr/share/terminfo /lib/terminfo"
! 53: for dir in $SEARCHTERMDATA; do
! 54: if [ -e "$dir/x/xterm" ]; then
! 55: TERMDATA="$TERMDATA $dir"
! 56: fi
! 57: done
! 58: if [ -z "$TERMDATA" ]; then
! 59: errorexit "Couldn't find terminfo definitions. Please specify in 'TERMDATA' variable."
! 60: fi
! 61: fi
! 62:
! 63:
! 64:
! 65: # remove trailing slash, if any
! 66: CHROOT="`echo ${CHROOT%/}`"
! 67:
! 68: set -e
! 69: umask 022
! 70:
! 71: if [ -e "$CHROOT" ]; then
! 72: errorexit "Chroot $CHROOT already exists."
! 73: fi
! 74:
! 75: CURDIR="`pwd`"
! 76:
! 77: if [ ! -e "$CURDIR/dgamelaunch" ]; then
! 78: errorexit "Cannot find dgamelaunch in $CURDIR"
! 79: fi
! 80:
! 81: DGLFILE="dgamelaunch.`date +%Y%m%d`"
! 82:
! 83: echo "Setting up chroot in $CHROOT"
! 84:
! 85: LIBS="`findlibs dgamelaunch`"
! 86:
! 87: mkdir -p "$CHROOT" || errorexit "Cannot create chroot"
! 88: cd "$CHROOT"
! 89: mkdir dgldir etc lib mail usr bin
! 90: chown "$USRGRP" dgldir mail
! 91: cp "$CURDIR/dgamelaunch" "$DGLFILE"
! 92: ln -s "$DGLFILE" dgamelaunch
! 93:
! 94: mkdir -p "$CHROOT/dgldir/inprogress-nh343"
! 95: mkdir -p "$CHROOT/dgldir/userdata"
! 96: chown "$USRGRP" "$CHROOT/dgldir/inprogress-nh343"
! 97: chown "$USRGRP" "$CHROOT/dgldir/userdata"
! 98:
! 99:
! 100: if [ -n "$SQLITE_DBFILE" ]; then
! 101: if [ "x`which sqlite3`" = "x" ]; then
! 102: errorexit "No sqlite3 found."
! 103: else
! 104: echo "Creating SQLite database at $SQLITE_DBFILE"
! 105: SQLITE_DBFILE="`echo ${SQLITE_DBFILE%/}`"
! 106: SQLITE_DBFILE="`echo ${SQLITE_DBFILE#/}`"
! 107: sqlite3 "$CHROOT/$SQLITE_DBFILE" "create table dglusers (id integer primary key, username text, email text, env text, password text, flags integer);"
! 108: chown "$USRGRP" "$CHROOT/$SQLITE_DBFILE"
! 109: fi
! 110: fi
! 111:
! 112:
! 113: if [ -n "$COMPRESSBIN" -a -e "`which $COMPRESSBIN`" ]; then
! 114: COMPRESSDIR="`dirname $COMPRESSBIN`"
! 115: COMPRESSDIR="`echo ${COMPRESSDIR%/}`"
! 116: COMPRESSDIR="`echo ${COMPRESSDIR#/}`"
! 117: echo "Copying $COMPRESSBIN to $COMPRESSDIR"
! 118: mkdir -p "$COMPRESSDIR"
! 119: cp "`which $COMPRESSBIN`" "$COMPRESSDIR/"
! 120: LIBS="$LIBS `findlibs $COMPRESSBIN`"
! 121: fi
! 122:
! 123:
! 124: mkdir -p dev
! 125: cd dev
! 126: mknod urandom c 1 9
! 127: cd ..
! 128:
! 129:
! 130: cd etc
! 131: cp "$CURDIR/examples/dgamelaunch.conf" .
! 132: echo "Edit $CHROOT/etc/dgamelaunch.conf to suit your needs."
! 133: [ -f /etc/localtime ] && cp /etc/localtime .
! 134: cd ..
! 135:
! 136:
! 137: cd bin
! 138: cp "$CURDIR/ee" .
! 139: cp "$CURDIR/virus" .
! 140: echo "Copied text editors 'ee' and 'virus' to chroot."
! 141: cd ..
! 142:
! 143:
! 144: cp "$CURDIR/examples/dgl_menu_main_anon.txt" .
! 145: cp "$CURDIR/examples/dgl_menu_main_user.txt" .
! 146: cp "$CURDIR/examples/dgl_menu_watchmenu_help.txt" .
! 147: cp "$CURDIR/examples/dgl-banner" .
! 148: cp "$CURDIR/dgl-default-rcfile" "dgl-default-rcfile.nh343"
! 149: chmod go+r dgl_menu_main_anon.txt dgl_menu_main_user.txt dgl-banner dgl-default-rcfile.nh343
! 150:
! 151: NHSUBDIR="`echo ${NHSUBDIR%/}`"
! 152: NHSUBDIR="`echo ${NHSUBDIR#/}`"
! 153:
! 154: mkdir "$CHROOT/$NHSUBDIR"
! 155:
! 156: if [ -n "$NETHACKBIN" -a ! -e "$NETHACKBIN" ]; then
! 157: errorexit "Cannot find NetHack binary $NETHACKBIN"
! 158: fi
! 159:
! 160: if [ -n "$NETHACKBIN" -a -e "$NETHACKBIN" ]; then
! 161: echo "Copying $NETHACKBIN"
! 162: cd "$NHSUBDIR"
! 163: NHBINFILE="`basename $NETHACKBIN`.`date +%Y%m%d`"
! 164: cp "$NETHACKBIN" "$NHBINFILE"
! 165: ln -s "$NHBINFILE" nethack
! 166: LIBS="$LIBS `findlibs $NETHACKBIN`"
! 167: cd "$CHROOT"
! 168: fi
! 169:
! 170:
! 171: NH_PLAYGROUND_FIXED="`echo ${NH_PLAYGROUND_FIXED%/}`"
! 172:
! 173: if [ -n "$NH_PLAYGROUND_FIXED" -a -d "$NH_PLAYGROUND_FIXED" ]; then
! 174: echo "Copying NetHack playground stuff."
! 175: NHFILES="*.lev *.dat cmdhelp data dungeon help hh history license opthelp options oracles recover rumors wizhelp"
! 176: for fil in $NHFILES; do
! 177: cp $NH_PLAYGROUND_FIXED/$fil "$CHROOT/$NHSUBDIR/"
! 178: done
! 179: fi
! 180:
! 181:
! 182: NH_VAR_PLAYGROUND="`echo ${NH_VAR_PLAYGROUND%/}`"
! 183: NH_VAR_PLAYGROUND="`echo ${NH_VAR_PLAYGROUND#/}`"
! 184:
! 185: echo "Creating NetHack variable dir stuff."
! 186: if [ -n "$NH_VAR_PLAYGROUND" ]; then
! 187: mkdir -p "$CHROOT/$NH_VAR_PLAYGROUND"
! 188: chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND"
! 189: fi
! 190: mkdir -p "$CHROOT/$NH_VAR_PLAYGROUND/save"
! 191: chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND/save"
! 192: touch "$CHROOT/$NH_VAR_PLAYGROUND/logfile"
! 193: touch "$CHROOT/$NH_VAR_PLAYGROUND/perm"
! 194: touch "$CHROOT/$NH_VAR_PLAYGROUND/record"
! 195: touch "$CHROOT/$NH_VAR_PLAYGROUND/xlogfile"
! 196:
! 197: chown -R "$USRGRP" "$CHROOT/$NHSUBDIR"
! 198: chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND"
! 199:
! 200:
! 201:
! 202: # Curses junk
! 203: if [ -n "$TERMDATA" ]; then
! 204: echo "Copying termdata files from $TERMDATA"
! 205: for termdat in $TERMDATA; do
! 206: mkdir -p "$CHROOT`dirname $termdat`"
! 207: if [ -d $termdat/. ]; then
! 208: cp -LR $termdat/. $CHROOT$termdat
! 209: else
! 210: cp $termdat $CHROOT`dirname $termdat`
! 211: fi
! 212: done
! 213: fi
! 214:
! 215:
! 216: LIBS=`for lib in $LIBS; do echo $lib; done | sort | uniq`
! 217: echo "Copying libraries:" $LIBS
! 218: for lib in $LIBS; do
! 219: mkdir -p "$CHROOT`dirname $lib`"
! 220: cp $lib "$CHROOT$lib"
! 221: done
! 222:
! 223:
! 224: echo "Finished."
! 225:
! 226:
CVSweb