123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #!/bin/bash
- # Build various setups..
- # inputs:
- # directory with the common media
- Q3SETUPMEDIA=/home/timo/Id/Q3SetupMedia/quake3
- # directory with binaries tree
- Q3BINARIES=../install
- # version: $1
- VERSION=$1
- # temporary directory used to prepare the files
- # NOTE: this dir is erased before a new setup is built
- TMPDIR=setup.tmp
- # location of the setup dir (for graphical installer and makeself)
- SETUPDIR=setup
- # cp setup phase
- # we need to copy the symlinked files, and not the symlinks themselves
- # on antares this is forced with a cp -L
- # on spoutnik, -L is not recognized, and dereference is the default behaviour
- # we need a robust way of checking
- TESTFILE=/tmp/foo$$
- touch $TESTFILE
- # see if option is supported
- cp -L $TESTFILE $TESTFILE.cp 2>/dev/null
- if [ $? -eq 1 ]
- then
- # option not supported, should be on by default
- echo "cp doesn't have -L option"
- unset CPOPT
- else
- # option supported, use it
- echo "cp supports -L option"
- CPOPT="-L"
- fi
- rm $TESTFILE
- # graphical installer (based on Loki Software's Setup tool)
- build_installer ()
- {
- TMPDIR=setup.tmp
- rm -rf $TMPDIR
- mkdir $TMPDIR
- # copy base setup files
- cp $CPOPT -R $SETUPDIR/setup.sh $SETUPDIR/setup.data $TMPDIR
- # copy media files
- cp $CPOPT -R $Q3SETUPMEDIA/* $TMPDIR
- # remove CVS entries
- find $TMPDIR -name CVS | xargs rm -rf
- # copy binaries
- mkdir -p $TMPDIR/bin/x86
- # smp
- cp $CPOPT $Q3BINARIES/linuxquake3-smp $TMPDIR/bin/x86/quake3-smp.x86
- strip $TMPDIR/bin/x86/quake3-smp.x86
- brandelf -t Linux $TMPDIR/bin/x86/quake3-smp.x86
- # old school
- cp $CPOPT $Q3BINARIES/linuxquake3 $TMPDIR/bin/x86/quake3.x86
- strip $TMPDIR/bin/x86/quake3.x86
- brandelf -t Linux $TMPDIR/bin/x86/quake3.x86
- # ded
- cp $CPOPT $Q3BINARIES/linuxq3ded $TMPDIR/bin/x86/q3ded
- strip $TMPDIR/bin/x86/q3ded
- brandelf -t Linux $TMPDIR/bin/x86/q3ded
- # PB files
- mkdir -p $TMPDIR/pb/htm
- cp $CPOPT ../pb/linux/*.so $TMPDIR/pb
- cp $CPOPT ../pb/htm/*.htm $TMPDIR/pb/htm
- # Linux FAQ
- mkdir -p $TMPDIR/Docs/LinuxFAQ
- cp $CPOPT LinuxSupport/* $TMPDIR/Docs/LinuxFAQ
- # generated .qvm pk3 files
- mkdir -p $TMPDIR/baseq3
- mkdir -p $TMPDIR/missionpack
- # not needed now
- #cp $CPOPT $Q3BINARIES/baseq3/pak8.pk3 $TMPDIR/baseq3/
- #cp $CPOPT $Q3BINARIES/missionpack/pak3.pk3 $TMPDIR/missionpack/
- # menu shortcut to the game
- # FIXME current setup doesn't have a way to set symlinks on arbitrary things
- # so we use a dummy quake3 script (which will be overwritten by postinstall.sh)
- echo -e "#!/bin/sh\necho \"If you read this, then the setup script failed miserably.\nPlease report to ttimo@idsoftware.com\n\"" > $TMPDIR/bin/x86/quake3
- echo -e "#!/bin/sh\necho \"If you read this, then the setup script failed miserably.\nPlease report to ttimo@idsoftware.com\n\"" > $TMPDIR/bin/x86/quake3-smp
- # create the auto-extractible archive
- # first step: on FreeBSD we would default to Linux binaries .. use a symlink
- (
- cd $TMPDIR/setup.data/bin
- ln -s Linux FreeBSD
- ln -s Linux NetBSD
- ln -s Linux OpenBSD
- )
- # NOTE: we used to pass the $VERSION, but it doesn't seem very usefull
- ./$SETUPDIR/makeself/makeself.sh $TMPDIR linuxq3apoint-$VERSION.x86.run "Quake III Arena Point Release $VERSION " ./setup.sh
- chmod a+rx linuxq3apoint-$VERSION.x86.run
- #rm -rf $TMPDIR
- }
- check_brandelf()
- {
- # make sure brandelf is installed to avoid any problem when building the setups
- BRAND=`which brandelf`;
- if [ -n "$BRAND" ] && [ -x "$BRAND" ]
- then
- echo "brandelf is present: $BRAND"
- else
- echo "brandelf not found"
- exit
- fi
- }
- # safe checks
- check_brandelf
- build_installer
|