File make-ppsspp-from-git.sh of Package ppsspp

#Script to generate git snapshot of ppsspp SRPM and RPM for fedora 18/19/20
#(C) GPLv2+ Asif Ali Rizvan <fast.rizwaan@gmail.com>
# This script will generate a new checkout version RPM on every launch

#Required files to Build an rpm:

#Generated by this script:
#1. SOURCE.tar.xz
#2. ppsspp (bash script)
#3. ppsspp.desktop
#4. disable-buildtime-git-version-creation.patch
#5. ppsspp.spec
#6. ppsspp.png (icon) copied from git assets to $SOURCES
#7. include this script into src rpm and binary rpm 


#Variables
NAME="ppsspp"
PPSSPP_DIR="ppsspp-git"
SOURCES=$HOME/rpmbuild/SOURCES
SPECS=$HOME/rpmbuild/SPECS
SRPMS=$HOME/rpmbuild/SRPMS
RPMS=$HOME/rpmbuild/RPMS

PPSSPP_GIT_DIR=$SOURCES/$PPSSPP_DIR

#Create directory for git download
mkdir -p $SOURCES $SPECS $RPMS $SRPMS


# include this script file for rpm and srpm inclusion
cp $0 $SOURCES/make-$NAME-from-git.sh

#clone the git repo
cd $SOURCES

#If git sources not there, then clone
if [ ! -d $PPSSPP_GIT_DIR ]; then
   git clone https://github.com/hrydgard/ppsspp.git "$PPSSPP_DIR"
   cd $PPSSPP_GIT_DIR
   git submodule update --init
fi

#else Update git checkout
cd $PPSSPP_GIT_DIR 
git reset --hard
git pull
git submodule update

#Get version numbers
FULL_VERSION=$(git describe --always)
VERSION=$(echo $FULL_VERSION |cut -f1-2 -d '-'|sed 's/-/_/g')
GITREV=$(echo $FULL_VERSION |cut -f3 -d '-')

#Variables needed after git describe
PPSSPP_NAME_VERSION=$NAME-$VERSION
PPSSPP_GIT_COPY_DIR=$SOURCES/$PPSSPP_NAME_VERSION/ 

#if already existing version of tar.xz is present 
#then skip copying and making a tar, use existing one
if [ ! -f $PPSSPP_NAME_VERSION.tar.xz ]; then 
   #make a .git free copy 
   cd       $SOURCES
   mkdir -p $PPSSPP_GIT_COPY_DIR/
   cp   -Rf $PPSSPP_GIT_DIR/* $PPSSPP_GIT_COPY_DIR/

   #delete all unneeded folders
   rm -rf $PPSSPP_GIT_COPY_DIR/Windows/           \
          $PPSSPP_GIT_COPY_DIR/redist/            \
          $PPSSPP_GIT_COPY_DIR/ios/               \
          $PPSSPP_GIT_COPY_DIR/Blackberry/        \
          $PPSSPP_GIT_COPY_DIR/dx9sdk/            \
          $PPSSPP_GIT_COPY_DIR/headless/          \

   rm -rf $PPSSPP_GIT_COPY_DIR/ffmpeg/ios*        \
          $PPSSPP_GIT_COPY_DIR/ffmpeg/mac*        \
          $PPSSPP_GIT_COPY_DIR/ffmpeg/symbian*    \
          $PPSSPP_GIT_COPY_DIR/ffmpeg/windows*    \
          $PPSSPP_GIT_COPY_DIR/ffmpeg/blackberry* \
          $PPSSPP_GIT_COPY_DIR/ffmpeg/Windows*

#create file: git-verion.cpp need for build
echo "// This is a generated file.

const char *PPSSPP_GIT_VERSION = \"$FULL_VERSION\";

// If you don't want this file to update/recompile, change to 1.
#define PPSSPP_GIT_VERSION_NO_UPDATE 1" > $PPSSPP_GIT_COPY_DIR/git-version.cpp

   #make source tar.xz file
   cd $SOURCES
   tar -Jcf  $PPSSPP_NAME_VERSION.tar.xz  $PPSSPP_NAME_VERSION/

fi #endif

#remove the copy directory after archiving
rm -rf $PPSSPP_GIT_COPY_DIR

#Copy the icon
cp $PPSSPP_GIT_DIR/assets/icon-114.png $SOURCES/$NAME.png


#create bash script to launch ppsspp from /usr/share/ppsspp directory
echo '
#/bin/bash

cd /usr/share/ppsspp/
/usr/share/ppsspp/PPSSPPSDL "$@" --fullscreen
' > $SOURCES/$NAME

#create desktop file
echo "[Desktop Entry]
Name=$NAME
Exec=$NAME
Icon=$NAME
Type=Application
Comment=PSP Emulator
StartupNotify=true
" > $SOURCES/$NAME.desktop


#make patch: will work as long as CMakeLists.txt is not changed upstream
echo '*** old/CMakeLists.txt	2014-01-08 14:10:40.035843263 +0530
--- new/CMakeLists.txt	2014-01-08 14:11:30.987970363 +0530
*************** setup_target_project(${CoreLibName} Core
*** 1169,1175 ****
  
  # Generate git-version.cpp at build time.
  add_custom_target(GitVersion ALL
! 	DEPENDS something_that_never_exists)
  add_custom_command(OUTPUT something_that_never_exists
  	COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
  		-P ${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake)
--- 1169,1175 ----
  
  # Generate git-version.cpp at build time.
  add_custom_target(GitVersion ALL
! ) #	DEPENDS something_that_never_exists)
  add_custom_command(OUTPUT something_that_never_exists
  	COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
  		-P ${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake)' > $SOURCES/disable-buildtime-git-version-creation.patch

# Create SPEC file for the latest git snapshot
echo "
%global gitrev $GITREV
%global chkoutversion $FULL_VERSION
Name:          ppsspp
License:       GPLv2
Summary:       Playstation Portable Emulator 
Url:           ppsspp.org
Version:       $VERSION
Release:       1.git%{gitrev}%{?dist}
Group:         Applications/Games
AutoReqProv:   yes

Source0: %{name}-%{version}.tar.xz
# git clone git clone https://github.com/hrydgard/ppsspp.git  %{name}-%{version}
# cd  ppsspp-%{version}
# git submodule update --init
# git checkout %{chkoutversion}
# git submodule update
# cd  ..
# tar -Jcf ppsspp-%{version}.tar.xz ppsspp-%{version}/

Source1: ppsspp
Source2: ppsspp.desktop
Source3: ppsspp.png
Source4: make-%{name}-from-git.sh

Patch0:  disable-buildtime-git-version-creation.patch

Requires: SDL

BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: SDL-devel
BuildRequires: cmake
BuildRequires: zlib-devel
BuildRequires: glibc-devel
BuildRequires: libICE-devel
BuildRequires: libpng-devel
BuildRequires: libX11-devel
BuildRequires: libXext-devel
BuildRequires: libSM-devel
BuildRequires: alsa-lib-devel
BuildRequires: mesa-libEGL-devel
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libGLU-devel

Buildroot:     %{_builddir}

%description
PPSSPP is a Playstation PSP emulator.

%prep
rm -rf            %{_builddir}/%{name}-%{version}

%setup

%patch0 -p1

%build

#  build in the same src directory
   cd     %{_builddir}/%{name}-%{version}
   cmake .
   make   %{?_smp_mflags}

%install

   mkdir -p %{buildroot}/usr/bin
   mkdir -p %{buildroot}/usr/share/applications
   mkdir -p %{buildroot}/usr/share/pixmaps
   mkdir -p %{buildroot}/usr/share/ppsspp
   mkdir -p %{buildroot}/usr/share/ppsspp/assets

   install -m 755 -D %{SOURCE1}   %{buildroot}/usr/bin
   install -m 444 -D %{SOURCE2}   %{buildroot}/usr/share/applications
   install -m 444 -D %{SOURCE3}   %{buildroot}/usr/share/pixmaps
   install -m 755 -D %{SOURCE4}   %{buildroot}/usr/share/ppsspp/
   install -m 755 -D %{_builddir}/%{name}-%{version}/PPSSPPSDL \\
                     %{buildroot}/usr/share/ppsspp/
   
   cp -r %{_builddir}/%{name}-%{version}/assets/* \\
         %{buildroot}/usr/share/ppsspp/assets/

%clean
   %{?buildroot:%__rm -rf %{buildroot}}

%files
 %attr(755,root,root)
    %{_bindir}/ppsspp
 %attr(644,root,root)
    %{_datadir}/ppsspp/
    %{_datadir}/pixmaps/ppsspp.png
    %{_datadir}/applications/ppsspp.desktop


%changelog
* Wed Jan 8 2014 Asif Ali Rizvan <fast.rizwaan@gmail.com>
- PPSSPPSDL only package, better sound and Qt free
- run in fullscreen
* Tue Dec 17 2013 Asif ali Rizvan <fast.rizwaan@gmail.com>
- includes .git free sources only 28M instead of 218M :D 

" > $SPECS/ppsspp.spec


#build rpm
cd $SPECS
rpmbuild -ba ppsspp.spec
sudo rpm -Uvh $RPMS/$(arch)/$PPSSPP_NAME_VERSION*.rpm --force

openSUSE Build Service is sponsored by