aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCRTS <crts [at] gmx [dot] net>2019-09-21 15:59:25 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2019-09-21 15:59:25 +0700
commit7dd6c37a54452fa8873db62f1e645dea3374af45 (patch)
tree7e12c77c87064071fa8a59b7374ad18e5c2d32ac
parentf33fbacf033dbccf58778daf8ce8f7946ecb1458 (diff)
games/vegastrike: Added (free, Elite-like space simulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
-rw-r--r--games/vegastrike/README41
-rw-r--r--games/vegastrike/patch-0.5.1.r1326
-rw-r--r--games/vegastrike/slack-desc19
-rw-r--r--games/vegastrike/vegastrike.SlackBuild175
-rw-r--r--games/vegastrike/vegastrike.info18
5 files changed, 579 insertions, 0 deletions
diff --git a/games/vegastrike/README b/games/vegastrike/README
new file mode 100644
index 0000000000000..23222eefc5333
--- /dev/null
+++ b/games/vegastrike/README
@@ -0,0 +1,41 @@
+Welcome to Vega Strike, a 3d OpenGL spaceflight simulator being developed
+for multi-platform play.
+
+Vega Strike allows players to explore a vastly dynamic universe where
+frontiers collide and you're just a pilot trying to make ends meet. How?
+That's your decision. Vega Strike is designed as a non-linear gaming
+experience, where you choose what action you want to take.
+
+Vega Strike features a dynamic trading economy, allowing your character to
+operate as a merchant. Discover what trade routes bring in the most profit,
+what commodities make you the most money given your ship's cargo space
+limitations, accept cargo missions and learn to avoid areas of danger
+(repairs eat into your profits!).
+
+If you are tired of making money on milk runs, or want to try something
+different, then there are other paths to success. Vega Strike features a
+mission generator, providing multiple missions to the experienced
+(and not so experienced) pilots. Engage in bounty hunting, patrols,
+battles and escort missions. Feel like traveling? Explore the dynamic
+universe and see the farthest reaches of known space.
+Want a walk on the wild side? You could always turn pirate! Just be
+prepared for the consequences.
+
+Your ship just not doing the job you want it to? Vega Strike gives you the
+ability to purchase from a wide variety of ships capable of doing different
+jobs. Want to haul cargo? Fight battles? There's a ship for you. Your ship
+is fully customizable, so if you've got the credit, outfit your craft
+with the right tools for the job at hand.
+
+Have a chat with the bartender or view the news broadcasts to find out
+what's going on in the universe. While you're there, talk to the fixers,
+they may have a job that only you can do. But be warned, you never know
+where it may lead ...
+
+HINTS:
+
+ - After installation run 'vssetup' and adjust the settings
+ before you launch 'vegastrike'.
+ - You can quit the game either by pressing ESC and then 'q'
+ during flight or by clicking 'Quit Game' on a save screen.
+
diff --git a/games/vegastrike/patch-0.5.1.r1 b/games/vegastrike/patch-0.5.1.r1
new file mode 100644
index 0000000000000..4077324d4c9b5
--- /dev/null
+++ b/games/vegastrike/patch-0.5.1.r1
@@ -0,0 +1,326 @@
+diff -ruN ./CMakeLists.txt ../b/CMakeLists.txt
+--- ./CMakeLists.txt 2012-03-26 02:50:49.000000000 +0200
++++ ../b/CMakeLists.txt 2019-09-20 14:45:44.171890881 +0200
+@@ -10,7 +10,7 @@
+
+ project (vsUTCS)
+
+-
++include(GNUInstallDirs)
+
+ include_directories(${vsUTCS_SOURCE_DIR}/src
+ ${vsUTCS_SOURCE_DIR}/src/cmd
+@@ -828,33 +828,33 @@
+
+ #Find FFMpeg
+
+-find_package(FFMPEG)
+-IF(FFMPEG_FOUND)
+- SET(TST_INCLUDES ${TST_INCLUDES} ${FFMPEG_INCLUDE_DIRS})
+- SET(TST_LIBS ${TST_LIBS} ${FFMPEG_LIBRARIES})
+- add_definitions(${FFMPEG_DEFINITIONS})
+- SET(HAVE_FFMPEG 1 )
+- IF(swscale1_FOUND)
+- message("++ FFmpeg's libswscale found.")
+- ELSE(swscale1_FOUND)
+- message("-- FFMpeg's libswscale not found... depending on your ffmpeg version, VS might not build.")
+- ENDIF(swscale1_FOUND)
+-ELSE(FFMPEG_FOUND)
+- message("-- FFMPEG Not Found")
+-ENDIF(FFMPEG_FOUND)
++#find_package(FFMPEG)
++#IF(FFMPEG_FOUND)
++# SET(TST_INCLUDES ${TST_INCLUDES} ${FFMPEG_INCLUDE_DIRS})
++# SET(TST_LIBS ${TST_LIBS} ${FFMPEG_LIBRARIES})
++# add_definitions(${FFMPEG_DEFINITIONS})
++# SET(HAVE_FFMPEG 1 )
++# IF(swscale1_FOUND)
++# message("++ FFmpeg's libswscale found.")
++# ELSE(swscale1_FOUND)
++# message("-- FFMpeg's libswscale not found... depending on your ffmpeg version, VS might not build.")
++# ENDIF(swscale1_FOUND)
++#ELSE(FFMPEG_FOUND)
++# message("-- FFMPEG Not Found")
++#ENDIF(FFMPEG_FOUND)
+
+ #Find Ogre
+
+-find_package(OGRE)
+-IF(OGRE_FOUND)
+- SET(TST_INCLUDES ${TST_INCLUDES} ${OGRE_INCLUDE_DIR})
+- SET(TST_LIBS ${TST_LIBS} ${OGRE_LIBRARY})
+- add_definitions(${OGRE_DEFINITIONS})
+- SET(HAVE_OGRE 1)
+- message("++ Found Ogre: ${OGRE_VERSION}")
+-ELSE(OGRE_FOUND)
+- message("-- Ogre Not Found: compiling without")
+-ENDIF(OGRE_FOUND)
++#find_package(OGRE)
++#IF(OGRE_FOUND)
++# SET(TST_INCLUDES ${TST_INCLUDES} ${OGRE_INCLUDE_DIR})
++# SET(TST_LIBS ${TST_LIBS} ${OGRE_LIBRARY})
++# add_definitions(${OGRE_DEFINITIONS})
++# SET(HAVE_OGRE 1)
++# message("++ Found Ogre: ${OGRE_VERSION}")
++#ELSE(OGRE_FOUND)
++# message("-- Ogre Not Found: compiling without")
++#ENDIF(OGRE_FOUND)
+
+ IF(NOT BEOS)
+ FIND_LIBRARY(UTIL_LIB util)
+@@ -977,12 +977,12 @@
+ HAVE_AVFORMAT_H
+ HAVE_AVCODEC_H
+ HAVE_AVIO_H
+- HAVE_FFMPEG_SWSCALE_H
++# HAVE_FFMPEG_SWSCALE_H
+ CMAKE_BACKWARDS_COMPATIBILITY
+- FFMPEG_INCLUDE_DIR
+- FFMPEG_FOUND
+- FFMPEG_LIBRARIES
+- FFMPEG_DEFINITIONS
++# FFMPEG_INCLUDE_DIR
++# FFMPEG_FOUND
++# FFMPEG_LIBRARIES
++# FFMPEG_DEFINITIONS
+ GTK2_ATK_INCLUDE_DIR
+ GTK2_ATK_LIBRARY
+ GTK2_CAIRO_INCLUDE_DIR
+diff -ruN ./objconv/basemaker/base_maker_texture.cpp ../b/objconv/basemaker/base_maker_texture.cpp
+--- ./objconv/basemaker/base_maker_texture.cpp 2010-03-10 03:56:23.000000000 +0100
++++ ../b/objconv/basemaker/base_maker_texture.cpp 2019-09-20 14:45:44.174891262 +0200
+@@ -6,9 +6,12 @@
+ #define XMD_H
+ #define HAVE_BOOLEAN
+ #endif
++
+ extern "C" {
+ //YUCK it doesn't even have extern c in the headers!
+ #include <jpeglib.h>
++#include <string.h>
++
+ }
+
+ #define strip_16 true
+diff -ruN ./objconv/mesher/to_OgreMesh.cpp ../b/objconv/mesher/to_OgreMesh.cpp
+--- ./objconv/mesher/to_OgreMesh.cpp 2011-06-02 01:47:36.000000000 +0200
++++ ../b/objconv/mesher/to_OgreMesh.cpp 2019-09-20 14:45:44.176891516 +0200
+@@ -1078,10 +1078,15 @@
+ Ogre::VertexDeclaration *newDcl =
+ data->vertexDeclaration->getAutoOrganisedDeclaration(
+ mesh->hasSkeleton() );
+-#else
++#elif (OGRE_VERSION_MAJOR == 1) && (OGRE_VERSION_MINOR < 8)
+ Ogre::VertexDeclaration *newDcl =
+ data->vertexDeclaration->getAutoOrganisedDeclaration(
+ mesh->hasSkeleton(), mesh->hasVertexAnimation() || (mesh->getPoseCount() > 0) );
++#else
++ Ogre::VertexDeclaration *newDcl =
++ data->vertexDeclaration->getAutoOrganisedDeclaration(
++ mesh->hasSkeleton(), mesh->hasVertexAnimation() || (mesh->getPoseCount() > 0),
++ mesh->getSharedVertexDataAnimationIncludesNormals()); // what about Pose objects?
+ #endif
+ if ( *newDcl != *(data->vertexDeclaration) ) {
+ //Usages don't matter here since we're onlly exporting
+@@ -1109,35 +1114,35 @@
+ }
+ }
+
+-void AutoLOD( void *outputcontext, bool force, int numLod, float reductionFactor, float refDistance )
+-{
+- struct outputContext *ctxt = (struct outputContext*) outputcontext;
+- MeshPtr newMesh = ctxt->top;
+- if ( force || (newMesh->getNumLodLevels() <= 1) ) {
+- if (newMesh->getNumLodLevels() <= 1)
+- newMesh->removeLodLevels();
+- const Ogre::ProgressiveMesh::VertexReductionQuota quota = Ogre::ProgressiveMesh::VRQ_PROPORTIONAL;
+- const Real reduction = Real( 1-reductionFactor );
+-
+- Real currDist = refDistance;
+-
+- #if (OGRE_VERSION >= 0x010700)
+- Ogre::Mesh::LodValueList distanceList;
+-
+- // pixel area is squared length, and length is proportional to triangle count
+- const Real distFactor = reductionFactor * reductionFactor;
+- newMesh->setLodStrategy(Ogre::LodStrategyManager::getSingletonPtr()->
+- getStrategy( "PixelCount" ) );
+- #else
+- Ogre::Mesh::LodDistanceList distanceList;
+- const Real distFactor = ( (reduction > 0.00001) ? 1/reduction : 1 );
+- #endif
+-
+- for (int iLod = 0; iLod < numLod; ++iLod, currDist *= distFactor)
+- distanceList.push_back( currDist );
+- newMesh->generateLodLevels( distanceList, quota, reduction );
+- }
+-}
++//void AutoLOD( void *outputcontext, bool force, int numLod, float reductionFactor, float refDistance )
++//{
++// struct outputContext *ctxt = (struct outputContext*) outputcontext;
++// MeshPtr newMesh = ctxt->top;
++// if ( force || (newMesh->getNumLodLevels() <= 1) ) {
++// if (newMesh->getNumLodLevels() <= 1)
++// newMesh->removeLodLevels();
++// const Ogre::ProgressiveMesh::VertexReductionQuota quota = Ogre::ProgressiveMesh::VRQ_PROPORTIONAL;
++// const Real reduction = Real( 1-reductionFactor );
++//
++// Real currDist = refDistance;
++//
++// #if (OGRE_VERSION >= 0x010700)
++// Ogre::Mesh::LodValueList distanceList;
++//
++// // pixel area is squared length, and length is proportional to triangle count
++// const Real distFactor = reductionFactor * reductionFactor;
++// newMesh->setLodStrategy(Ogre::LodStrategyManager::getSingletonPtr()->
++// getStrategy( "PixelCount" ) );
++// #else
++// Ogre::Mesh::LodDistanceList distanceList;
++// const Real distFactor = ( (reduction > 0.00001) ? 1/reduction : 1 );
++// #endif
++//
++// for (int iLod = 0; iLod < numLod; ++iLod, currDist *= distFactor)
++// distanceList.push_back( currDist );
++// newMesh->generateLodLevels( distanceList, quota, reduction );
++// }
++//}
+
+ void DoneMeshes( void *outputcontext )
+ {
+diff -ruN ./objconv/mesher/to_OgreMesh.h ../b/objconv/mesher/to_OgreMesh.h
+--- ./objconv/mesher/to_OgreMesh.h 2010-02-25 16:22:25.000000000 +0100
++++ ../b/objconv/mesher/to_OgreMesh.h 2019-09-20 14:45:44.179891897 +0200
+@@ -20,7 +20,7 @@
+ float RadialSize( void *outputcontext ); //returns the size of the resulting mesh (it's maximum distance from 0,0,0). Useful for LODding.
+
+ void Optimize( void *outputcontext ); //a good idea - reorganizes internal buffers so that the output mesh is more efficient
+-void AutoLOD( void *outputcontext, bool force, int numLod, float reductionFactor, float refDistance ); //autogenerates LOD levels - if force==true, will discard current LOD data
++//void AutoLOD( void *outputcontext, bool force, int numLod, float reductionFactor, float refDistance ); //autogenerates LOD levels - if force==true, will discard current LOD data
+ void AutoEdgeList( void *outputcontext ); //a good idea - prepares the mesh for stencil shadows
+ void AutoTangents( void *outputcontext ); //prepares the mesh for normal mapping (only needed if the material uses normal mapping)
+ }
+diff -ruN ./setup/src/c/setup.cpp ../b/setup/src/c/setup.cpp
+--- ./setup/src/c/setup.cpp 2011-03-15 01:28:47.000000000 +0100
++++ ../b/setup/src/c/setup.cpp 2019-09-20 14:45:44.180892025 +0200
+@@ -110,10 +110,22 @@
+ return 1;
+ }
+ }
+-
++
+ #ifdef DATA_DIR
+ data_paths.push_back( DATA_DIR );
+ #endif
++ /* whatever the plan was, it does not work on Linux - at least
++ * not at this stage. Hence, use fixed absolute paths to
++ * find data directory
++ */
++ data_paths.push_back( "/usr/share/games/vegastrike/data");
++ data_paths.push_back( "/usr/share/vegastrike/data");
++ data_paths.push_back( "/usr/games/vegastrike/data");
++ data_paths.push_back( "/usr/local/share/games/vegastrike/data");
++ data_paths.push_back( "/usr/local/share/vegastrike/data");
++ data_paths.push_back( "/usr/local/games/vegastrike/data");
++ data_paths.push_back( "/opt/vegastrike/data");
++
+ data_paths.push_back( origpath );
+ data_paths.push_back( string( origpath )+"/.." );
+ data_paths.push_back( string( origpath )+"/../data4.x" );
+@@ -133,22 +145,7 @@
+ data_paths.push_back( "../Resources" );
+ data_paths.push_back( "../Resources/data" );
+ data_paths.push_back( "../Resources/data4.x" );
+-/*
+- * data_paths.push_back( "/usr/share/local/vegastrike/data");
+- * data_paths.push_back( "/usr/local/share/vegastrike/data");
+- * data_paths.push_back( "/usr/local/vegastrike/data");
+- * data_paths.push_back( "/usr/share/vegastrike/data");
+- * data_paths.push_back( "/usr/local/games/vegastrike/data");
+- * data_paths.push_back( "/usr/games/vegastrike/data");
+- * data_paths.push_back( "/opt/share/vegastrike/data");
+- * data_paths.push_back( "/usr/share/local/vegastrike/data4.x");
+- * data_paths.push_back( "/usr/local/share/vegastrike/data4.x");
+- * data_paths.push_back( "/usr/local/vegastrike/data4.x");
+- * data_paths.push_back( "/usr/share/vegastrike/data4.x");
+- * data_paths.push_back( "/usr/local/games/vegastrike/data4.x");
+- * data_paths.push_back( "/usr/games/vegastrike/data4.x");
+- * data_paths.push_back( "/opt/share/vegastrike/data4.x");
+- */
++
+ //Win32 data should be "."
+ char tmppath[16384];
+ for (vector< string >::iterator vsit = data_paths.begin(); vsit != data_paths.end(); vsit++) {
+diff -ruN ./src/cmd/music.cpp ../b/src/cmd/music.cpp
+--- ./src/cmd/music.cpp 2012-03-19 09:20:14.000000000 +0100
++++ ../b/src/cmd/music.cpp 2019-09-20 14:45:44.182892279 +0200
+@@ -448,7 +448,9 @@
+ if (foundcache) {
+ *me->music_load_info = wherecache->second;
+ me->freeWav = false;
+- }
++ } else if ( ! AUDLoadSoundFile(songname, me->music_load_info, true)) {
++ VSFileSystem::vs_dprintf(1, "Failed to load music file \"%s\"", songname);
++ }
+ }
+ if (me->freeWav && docacheme) {
+ me->freeWav = false;
+diff -ruN ./src/cmd/unit_jump.h ../b/src/cmd/unit_jump.h
+--- ./src/cmd/unit_jump.h 2012-03-19 09:20:14.000000000 +0100
++++ ../b/src/cmd/unit_jump.h 2019-09-20 14:45:44.184892533 +0200
+@@ -108,7 +108,7 @@
+ (tester = *i) != NULL; ++i)
+ if (tester->isUnit() == UNITPTR && tester != this)
+ if ( ( this->LocalPosition()-tester->LocalPosition() ).Magnitude() < this->rSize()+tester->rSize() )
+- SetCurPosition( this->LocalPosition()+this->cumulative_transformation_matrix.getR()
++ this->SetCurPosition( this->LocalPosition()+this->cumulative_transformation_matrix.getR()
+ *( 4*( this->rSize()+tester->rSize() ) ) );
+ DealPossibleJumpDamage( this );
+ static int jumparrive = AUDCreateSound( vs_config->getVariable( "unitaudio", "jumparrive", "sfx43.wav" ), false );
+diff -ruN ./src/gfx/quadsquare.cpp ../b/src/gfx/quadsquare.cpp
+--- ./src/gfx/quadsquare.cpp 2010-03-10 06:27:01.000000000 +0100
++++ ../b/src/gfx/quadsquare.cpp 2019-09-20 14:45:44.186892787 +0200
+@@ -13,9 +13,9 @@
+ #include <float.h>
+ #include <math.h>
+ #include <assert.h>
+-#include "quadsquare.h"
+ #include "gfxlib.h"
+ #include "aux_texture.h"
++#include "quadsquare.h"
+ using std::vector;
+
+ unsigned int*quadsquare::VertexAllocated;
+diff -ruN ./src/networking/lowlevel/packetmem.cpp ../b/src/networking/lowlevel/packetmem.cpp
+--- ./src/networking/lowlevel/packetmem.cpp 2008-03-31 10:20:19.000000000 +0200
++++ ../b/src/networking/lowlevel/packetmem.cpp 2019-09-20 14:45:44.187892914 +0200
+@@ -102,7 +102,7 @@
+ }
+ else
+ {
+- _buffer.reset( 0 );
++ _buffer.reset();
+ _len = 0;
+ }
+ }
+diff -ruN ./src/vsfilesystem.cpp ../b/src/vsfilesystem.cpp
+--- ./src/vsfilesystem.cpp 2012-03-19 09:20:14.000000000 +0100
++++ ../b/src/vsfilesystem.cpp 2019-09-20 14:45:44.190893296 +0200
+@@ -563,6 +563,18 @@
+ data_paths.push_back( DATA_DIR );
+ #endif
+ if ( !vegastrike_cwd.empty() ) {
++ /* whatever the plan was, it does not work on Linux - at least
++ * not at this stage. Hence, use fixed absolute paths to
++ * find data directory
++ */
++ data_paths.push_back( "/usr/share/games/vegastrike/data");
++ data_paths.push_back( "/usr/share/vegastrike/data");
++ data_paths.push_back( "/usr/games/vegastrike/data");
++ data_paths.push_back( "/usr/local/share/games/vegastrike/data");
++ data_paths.push_back( "/usr/local/share/vegastrike/data");
++ data_paths.push_back( "/usr/local/games/vegastrike/data");
++ data_paths.push_back( "/opt/vegastrike/data");
++
+ data_paths.push_back( vegastrike_cwd );
+ data_paths.push_back( vegastrike_cwd+"/.." );
+ data_paths.push_back( vegastrike_cwd+"/../data4.x" );
diff --git a/games/vegastrike/slack-desc b/games/vegastrike/slack-desc
new file mode 100644
index 0000000000000..3e5629d092d39
--- /dev/null
+++ b/games/vegastrike/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+vegastrike: vegastrike (free, Elite-like space simulator)
+vegastrike:
+vegastrike: Vegastrike is an Open Source 3D Action-Space-Sim that
+vegastrike: lets you trade, fight, and explore in a vast universe.
+vegastrike:
+vegastrike:
+vegastrike:
+vegastrike: Homepage: http://vegastrike.sourceforge.net
+vegastrike:
+vegastrike:
+vegastrike:
diff --git a/games/vegastrike/vegastrike.SlackBuild b/games/vegastrike/vegastrike.SlackBuild
new file mode 100644
index 0000000000000..dcf0e2f93628e
--- /dev/null
+++ b/games/vegastrike/vegastrike.SlackBuild
@@ -0,0 +1,175 @@
+#!/bin/sh
+
+# Slackware build script for vegastrike
+
+# Copyright 2019- CRTS
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=vegastrike
+
+PRGSRCSUF=${PRGSRCSUF:-.tar.bz2}
+PRGSRCNAME=${PRGSRCNAME:-$PRGNAM-src-*}
+PRGSRCNAME=${PRGSRCNAME%$PRGSRCSUF}
+
+PRGDATASUF=${PRGDATASUF:-.tar.bz2}
+PRGDATANAME=${PRGDATANAME:-$PRGNAM-data-*}
+PRGDATANAME=${PRGDATANAME%$PRGDATASUF}
+
+PRGEXTRASUF=${PRGEXTRASUF%.tar.bz2}
+PRGEXTRANAME=${PRGEXTRANAME:-$PRGNAM-extra-*}
+PRGEXTRANAME=${PRGEXTRANAME%$PRGEXTRASUF}
+
+PRGMUSICSUF=${PRGMUSICSUF%.tar}
+PRGMUSICNAME=${PRGMUSICNAME:-$PRGNAM-music-*}
+PRGMUSICNAME=${PRGMUSICNAME%$PRGMUSICSUF}
+
+PRGSPEECHSUF=${PRGSPEECHSUF%.tar}
+PRGSPEECHNAME=${PRGSPEECHNAME:-$PRGNAM-speech-*}
+PRGSPEECHNAME=${PRGSPEECHNAME%$PRGSPEECHSUF}
+
+VERSION=${VERSION:-0.5.1.r1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGSRCNAME
+tar xvf $CWD/$PRGSRCNAME$PRGSRCSUF
+
+cd $PRGSRCNAME
+
+patch -p0 < $CWD/patch-$VERSION
+
+BUILDDIR=build
+mkdir -p $BUILDDIR
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+cd $BUILDDIR
+
+# ATTENTION: The settings currently do NOT affect the installation
+# destinations!
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+ -DCMAKE_INSTALL_LOCALSTATEDIR=/var \
+ -DCMAKE_INSTALL_MANDIR=/usr/man \
+ -DCMAKE_INSTALL_DOCDIR=/usr/doc/$PRGNAM-$VERSION \
+ -DCMAKE_SYSTEM_PROCESSOR=$ARCH \
+ ..
+
+make
+
+# auto install is not working, so we have to do it
+# manually like a peasant.
+
+#make install DESTDIR=$PKG
+
+cd $TMP/$PRGSRCNAME
+
+bindir=$PKG/usr/bin
+vsbasedir=$PKG/usr/share/games/vegastrike
+vsdatadir=$vsbasedir/data
+objconvdir=$vsbasedir/objconv
+
+mkdir -p $vsbasedir $bindir $objconvdir
+
+for f in ./build/objconv/asteroidgen ./build/objconv/replace ./build/objconv/trisort ./build/vegaserver ./build/vegastrike ./build/setup/vssetup;do
+ cp $f $bindir
+done
+
+for f in ./objconv/3ds2xml ./objconv/obj2xml ./objconv/wcp2xml;do
+ chmod -x $f
+ cp $f $objconvdir
+done
+
+tar xvf $CWD/$PRGDATANAME$PRGDATASUF
+mv $PRGDATANAME $vsdatadir
+
+tar xvf $CWD/$PRGEXTRANAME$PRGEXTRASUF
+tar xvf $CWD/$PRGMUSICNAME$PRGMUSICSUF
+tar xvf $CWD/$PRGSPEECHNAME$PRGSPEECHSUF
+
+mv $PRGMUSICNAME/* $vsdatadir
+
+for d in $PRGEXTRANAME $PRGSPEECHNAME;do
+ echo "copying: $d"
+ find "$d" -type f -printf '%P\n' |
+ while read f;do
+ # all paths will contain at least one '/' in this case
+ mkdir -p "$vsdatadir/${f%/*}"
+ mv "$d/$f" "$vsdatadir/$f"
+ done
+done
+
+echo "stripping libraries"
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp AUTHORS COPYING CYGWIN.NOTES ChangeLog DOCUMENTATION INSTALL NEWS README README.MACOSX.rtf README.sgi $PKG/usr/doc/$PRGNAM-$VERSION
+
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/games/vegastrike/vegastrike.info b/games/vegastrike/vegastrike.info
new file mode 100644
index 0000000000000..e37e9f2c5a82d
--- /dev/null
+++ b/games/vegastrike/vegastrike.info
@@ -0,0 +1,18 @@
+PRGNAM="vegastrike"
+VERSION="0.5.1.r1"
+HOMEPAGE="http://vegastrike.sourceforge.net"
+DOWNLOAD="http://downloads.sourceforge.net/vegastrike/vegastrike-src-0.5.1.r1.tar.bz2 \
+ http://downloads.sourceforge.net/vegastrike/vegastrike-data-0.5.1.r1.tar.bz2 \
+ http://downloads.sourceforge.net/vegastrike/vegastrike-speech-0.5.1.r1.tar \
+ http://downloads.sourceforge.net/vegastrike/vegastrike-extra-0.5.1.r1.tar.bz2 \
+ http://downloads.sourceforge.net/vegastrike/vegastrike-music-0.5.1.r1.tar"
+MD5SUM="6f3f2f1ff56a29710b7d0fdd8c3a255f \
+ 9ee86998f3611fcf9f94380b6be24e10 \
+ e5697fb4d08491ea45f2ef0c1e7602af \
+ 909e08838e41740642be121453192342 \
+ 66eb03b08504cd51a12c9bd919fa78a0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="OpenAL"
+MAINTAINER="CRTS"
+EMAIL="crts [at] gmx [dot] net"