[BACK]Return to dgl-create-chroot CVS log [TXT][DIR] Up to [contributed] / dgamelaunch-openbsd

Annotation of dgamelaunch-openbsd/dgl-create-chroot, Revision 1.9

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)
1.8       rubenllo    4: # This one by paxed@alt.org, modified by porting@use.startmail.com
1.1       rubenllo    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.
1.4       rubenllo   17: COMPRESSBIN="/usr/bin/gzip"
1.1       rubenllo   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:
1.6       rubenllo   30: # only define this is dgl was configured without --enable-sqlite
                     31: #PASSWD_FILE="/dgldir/dgl-login"
1.9     ! rubenllo   32: #LOCK-FILE="/dgldir/dgl-lock"
1.6       rubenllo   33:
1.7       rubenllo   34: # only define this is dgl was configured without --enable-debugfile
                     35: #DEBUGFILE="/dgldebug.log"
                     36:
1.1       rubenllo   37: # END OF CONFIG
                     38: ##############################################################################
                     39:
                     40: errorexit()
                     41: {
                     42:     echo "Error: $@" >&2
                     43:     exit 1
                     44: }
                     45:
                     46: findlibs()
                     47: {
                     48:   for i in "$@"; do
1.2       rubenllo   49:       if [ -z "`ldd "$i" | grep 'not a'`" ]; then
                     50:         if test $(uname -s) == OpenBSD; then
                     51:           echo $(ldd "$i" | awk '{ print $7 }' | egrep -v ^'\(') | cut -d ' ' -f 3-
                     52:        else
                     53:         echo $(ldd "$i" | awk '{ print $3 }' | egrep -v ^'\(')
1.1       rubenllo   54:          echo $(ldd "$i" | grep 'ld-linux' | awk '{ print $1 }')
1.2       rubenllo   55:        fi
1.1       rubenllo   56:       fi
                     57:   done
                     58: }
                     59:
                     60: ##############################################################################
                     61:
                     62: if [ -z "$TERMDATA" ]; then
                     63:     SEARCHTERMDATA="/etc/terminfo /usr/share/lib/terminfo /usr/share/terminfo /lib/terminfo"
                     64:     for dir in $SEARCHTERMDATA; do
                     65:        if [ -e "$dir/x/xterm" ]; then
                     66:            TERMDATA="$TERMDATA $dir"
                     67:        fi
                     68:     done
                     69:     if [ -z "$TERMDATA" ]; then
                     70:        errorexit "Couldn't find terminfo definitions. Please specify in 'TERMDATA' variable."
                     71:     fi
                     72: fi
                     73:
                     74:
                     75:
                     76: # remove trailing slash, if any
                     77: CHROOT="`echo ${CHROOT%/}`"
                     78:
                     79: set -e
                     80: umask 022
                     81:
                     82: if [ -e "$CHROOT" ]; then
                     83:    errorexit "Chroot $CHROOT already exists."
                     84: fi
                     85:
                     86: CURDIR="`pwd`"
                     87:
1.4       rubenllo   88: if [ ! -e "$CURDIR/dgamelaunch-openbsd" ]; then
                     89:    errorexit "Cannot find dgamelaunch-openbsd in $CURDIR"
1.1       rubenllo   90: fi
                     91:
                     92: DGLFILE="dgamelaunch.`date +%Y%m%d`"
                     93:
                     94: echo "Setting up chroot in $CHROOT"
                     95:
1.4       rubenllo   96: LIBS="`findlibs dgamelaunch-openbsd`"
1.1       rubenllo   97:
                     98: mkdir -p "$CHROOT" || errorexit "Cannot create chroot"
                     99: cd "$CHROOT"
                    100: mkdir dgldir etc lib mail usr bin
                    101: chown "$USRGRP" dgldir mail
1.4       rubenllo  102: cp "$CURDIR/dgamelaunch-openbsd" "$DGLFILE"
1.1       rubenllo  103: ln -s "$DGLFILE" dgamelaunch
                    104:
                    105: mkdir -p "$CHROOT/dgldir/inprogress-nh343"
                    106: mkdir -p "$CHROOT/dgldir/userdata"
                    107: chown "$USRGRP" "$CHROOT/dgldir/inprogress-nh343"
                    108: chown "$USRGRP" "$CHROOT/dgldir/userdata"
                    109:
                    110:
                    111: if [ -n "$SQLITE_DBFILE" ]; then
                    112:   if [ "x`which sqlite3`" = "x" ]; then
                    113:       errorexit "No sqlite3 found."
                    114:   else
                    115:       echo "Creating SQLite database at $SQLITE_DBFILE"
                    116:       SQLITE_DBFILE="`echo ${SQLITE_DBFILE%/}`"
                    117:       SQLITE_DBFILE="`echo ${SQLITE_DBFILE#/}`"
                    118:       sqlite3 "$CHROOT/$SQLITE_DBFILE" "create table dglusers (id integer primary key, username text, email text, env text, password text, flags integer);"
                    119:       chown "$USRGRP" "$CHROOT/$SQLITE_DBFILE"
1.5       rubenllo  120:       chmod 0700 "$CHROOT/$SQLITE_DBFILE"
1.1       rubenllo  121:   fi
                    122: fi
                    123:
1.9     ! rubenllo  124: if [ -n "$PASSWD_FILE" ]; then
1.6       rubenllo  125:       echo "Creating password file at $PASSWD_FILE"
                    126:       touch "$CHROOT/$PASSWD_FILE"
1.7       rubenllo  127:       chown "$USRGRP" "$CHROOT/$PASSWD_FILE"
1.6       rubenllo  128:       chmod 0700 "$CHROOT/$PASSWD_FILE"
1.7       rubenllo  129: fi
                    130:
1.9     ! rubenllo  131: if [ -n "$LOCK_FILE" ]; then
        !           132:       echo "Creating lockfile at $LOCK_FILE"
        !           133:       touch "$CHROOT/$LOCK_FILE"
        !           134:       chown "$USRGRP" "$CHROOT/$LOCK_FILE"
        !           135:       chmod 0700 "$CHROOT/$LOCK_FILE"
        !           136: fi
        !           137:
        !           138: if [ -n "$DEBUGFILE" ]; then
1.7       rubenllo  139:       echo "Creating debugfile at $DEBUGFILE"
                    140:       touch "$CHROOT/$DEBUGFILE"
                    141:       chown "$USRGRP" "$CHROOT/$DEBUGFILE"
                    142:       chmod 0700 "$CHROOT/$DEBUGFILE"
1.6       rubenllo  143: fi
1.1       rubenllo  144:
                    145: if [ -n "$COMPRESSBIN" -a -e "`which $COMPRESSBIN`" ]; then
                    146:   COMPRESSDIR="`dirname $COMPRESSBIN`"
                    147:   COMPRESSDIR="`echo ${COMPRESSDIR%/}`"
                    148:   COMPRESSDIR="`echo ${COMPRESSDIR#/}`"
                    149:   echo "Copying $COMPRESSBIN to $COMPRESSDIR"
                    150:   mkdir -p "$COMPRESSDIR"
                    151:   cp "`which $COMPRESSBIN`" "$COMPRESSDIR/"
                    152:   LIBS="$LIBS `findlibs $COMPRESSBIN`"
                    153: fi
                    154:
                    155:
                    156: mkdir -p dev
                    157: cd dev
1.3       rubenllo  158: if test $(uname -s) == OpenBSD; then
                    159:   mknod urandom c 45 0
                    160: else
                    161:   mknod urandom c 1 9
                    162: fi
1.1       rubenllo  163: cd ..
                    164:
                    165:
                    166: cd etc
                    167: cp "$CURDIR/examples/dgamelaunch.conf" .
                    168: echo "Edit $CHROOT/etc/dgamelaunch.conf to suit your needs."
                    169: [ -f /etc/localtime ] && cp /etc/localtime .
                    170: cd ..
                    171:
                    172:
                    173: cd bin
                    174: cp "$CURDIR/ee" .
                    175: cp "$CURDIR/virus" .
                    176: echo "Copied text editors 'ee' and 'virus' to chroot."
                    177: cd ..
                    178:
                    179:
                    180: cp "$CURDIR/examples/dgl_menu_main_anon.txt" .
                    181: cp "$CURDIR/examples/dgl_menu_main_user.txt" .
                    182: cp "$CURDIR/examples/dgl_menu_watchmenu_help.txt" .
                    183: cp "$CURDIR/examples/dgl-banner" .
                    184: cp "$CURDIR/dgl-default-rcfile" "dgl-default-rcfile.nh343"
                    185: chmod go+r dgl_menu_main_anon.txt dgl_menu_main_user.txt dgl-banner dgl-default-rcfile.nh343
                    186:
                    187: NHSUBDIR="`echo ${NHSUBDIR%/}`"
                    188: NHSUBDIR="`echo ${NHSUBDIR#/}`"
                    189:
                    190: mkdir "$CHROOT/$NHSUBDIR"
                    191:
                    192: if [ -n "$NETHACKBIN" -a ! -e "$NETHACKBIN" ]; then
                    193:   errorexit "Cannot find NetHack binary $NETHACKBIN"
                    194: fi
                    195:
                    196: if [ -n "$NETHACKBIN" -a -e "$NETHACKBIN" ]; then
                    197:   echo "Copying $NETHACKBIN"
                    198:   cd "$NHSUBDIR"
                    199:   NHBINFILE="`basename $NETHACKBIN`.`date +%Y%m%d`"
                    200:   cp "$NETHACKBIN" "$NHBINFILE"
                    201:   ln -s "$NHBINFILE" nethack
                    202:   LIBS="$LIBS `findlibs $NETHACKBIN`"
                    203:   cd "$CHROOT"
                    204: fi
                    205:
                    206:
                    207: NH_PLAYGROUND_FIXED="`echo ${NH_PLAYGROUND_FIXED%/}`"
                    208:
                    209: if [ -n "$NH_PLAYGROUND_FIXED" -a -d "$NH_PLAYGROUND_FIXED" ]; then
                    210:   echo "Copying NetHack playground stuff."
                    211:   NHFILES="*.lev *.dat cmdhelp data dungeon help hh history license opthelp options oracles recover rumors wizhelp"
                    212:   for fil in $NHFILES; do
                    213:     cp $NH_PLAYGROUND_FIXED/$fil "$CHROOT/$NHSUBDIR/"
                    214:   done
                    215: fi
                    216:
                    217:
                    218: NH_VAR_PLAYGROUND="`echo ${NH_VAR_PLAYGROUND%/}`"
                    219: NH_VAR_PLAYGROUND="`echo ${NH_VAR_PLAYGROUND#/}`"
                    220:
                    221: echo "Creating NetHack variable dir stuff."
                    222: if [ -n "$NH_VAR_PLAYGROUND" ]; then
                    223:   mkdir -p "$CHROOT/$NH_VAR_PLAYGROUND"
                    224:   chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND"
                    225: fi
                    226: mkdir -p "$CHROOT/$NH_VAR_PLAYGROUND/save"
                    227: chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND/save"
                    228: touch "$CHROOT/$NH_VAR_PLAYGROUND/logfile"
                    229: touch "$CHROOT/$NH_VAR_PLAYGROUND/perm"
                    230: touch "$CHROOT/$NH_VAR_PLAYGROUND/record"
                    231: touch "$CHROOT/$NH_VAR_PLAYGROUND/xlogfile"
                    232:
                    233: chown -R "$USRGRP" "$CHROOT/$NHSUBDIR"
                    234: chown -R "$USRGRP" "$CHROOT/$NH_VAR_PLAYGROUND"
                    235:
                    236:
                    237:
                    238: # Curses junk
                    239: if [ -n "$TERMDATA" ]; then
                    240:     echo "Copying termdata files from $TERMDATA"
                    241:     for termdat in $TERMDATA; do
                    242:        mkdir -p "$CHROOT`dirname $termdat`"
                    243:        if [ -d $termdat/. ]; then
                    244:                cp -LR $termdat/. $CHROOT$termdat
                    245:        else
                    246:                cp $termdat $CHROOT`dirname $termdat`
                    247:        fi
                    248:     done
                    249: fi
                    250:
                    251:
                    252: LIBS=`for lib in $LIBS; do echo $lib; done | sort | uniq`
                    253: echo "Copying libraries:" $LIBS
                    254: for lib in $LIBS; do
                    255:         mkdir -p "$CHROOT`dirname $lib`"
                    256:         cp $lib "$CHROOT$lib"
                    257: done
                    258:
                    259:
                    260: echo "Finished."
                    261:
                    262:

CVSweb