From da4a785fae525e1f20fad2f6cb7db727a85e16ad Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Sun, 13 Apr 2014 10:48:37 +0200 Subject: [PATCH] debian: make create tarball script compatible with git --- ...reate_pcsx2_tarball_from_svn_repository.sh | 186 ++++++++---------- 1 file changed, 87 insertions(+), 99 deletions(-) diff --git a/debian-unstable-upstream/create_pcsx2_tarball_from_svn_repository.sh b/debian-unstable-upstream/create_pcsx2_tarball_from_svn_repository.sh index a8ff1611c5..c364fd8d38 100755 --- a/debian-unstable-upstream/create_pcsx2_tarball_from_svn_repository.sh +++ b/debian-unstable-upstream/create_pcsx2_tarball_from_svn_repository.sh @@ -1,5 +1,5 @@ #!/bin/sh -# copyright (c) 2011 Gregory Hainaut +# copyright (c) 2011-2014 Gregory Hainaut # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -24,140 +24,128 @@ help() Help: -rev : revision number -branch : branch name, take trunk otherwise - -local : download the svn repository into $HOME/.cache (not deleted by the script) EOF exit 0 } # Default value -SVN_CO_VERSION=0; -BRANCH="trunk" -LOCAL=0 +GIT_SHA1=0; +BRANCH="master" while [ -n "$1" ]; do case $1 in - -help|-h) help;shift 1;; - -rev|-r) SVN_CO_VERSION=$2; shift 2;; - -branch|-b) BRANCH=$2; shift 2;; - -local|-l) LOCAL=1;shift 1;; + -help|-h ) help;shift 1;; + -rev|-r ) GIT_SHA1=$2; shift 2;; + -branch|-b ) BRANCH=$2; shift 2;; --) shift;break;; -*) echo "ERROR: $1 option does not exists. Use -h for help";exit 1;; *) break;; esac done -if [ "$SVN_CO_VERSION" = "0" ] ; then - help -fi - -if [ "$BRANCH" = "trunk" ] ; then - SVN_TRUNK="http://pcsx2.googlecode.com/svn/trunk" -else - SVN_TRUNK="http://pcsx2.googlecode.com/svn/branches/$BRANCH" -fi - -# Debian name of package and tarball -PKG_NAME="pcsx2.snapshot-${SVN_CO_VERSION}" -TAR_NAME="pcsx2.snapshot_${SVN_CO_VERSION}.orig.tar" - # Directory -TMP_DIR=/tmp -if [ "$LOCAL" = 1 ] ; then - ROOT_DIR=${HOME}/.cache/svn_pcsx2__${BRANCH} -else - ROOT_DIR=${TMP_DIR}/subversion_pcsx2_${SVN_CO_VERSION} -fi -NEW_DIR=${TMP_DIR}/$PKG_NAME +TMP_DIR=/tmp/pcsx2_git +mkdir -p $TMP_DIR + +REMOTE_REPO="https://github.com/PCSX2/pcsx2.git" +LOCAL_REPO="$TMP_DIR/pcsx2" ###################################################################### # Basic functions ###################################################################### -get_svn_dir() +date= +version= +release= +get_pcsx2_version() { - for directory in $* ; do - # Print the directory without / - echo " $directory" | sed -e 's/\//\ /g' - if [ -e `basename ${directory}` ] ; then - # Directory already exist so only update - svn up --quiet `basename ${directory}` -r $SVN_CO_VERSION; - else - svn co --quiet ${SVN_TRUNK}/${directory} -r $SVN_CO_VERSION; - fi + local major=`grep -o "VersionHi.*" $LOCAL_REPO/pcsx2/SysForwardDefs.h | grep -o "[0-9]*"` + local mid=`grep -o "VersionMid.*" $LOCAL_REPO/pcsx2/SysForwardDefs.h | grep -o "[0-9]*"` + local minor=`grep -o "VersionLo.*" $LOCAL_REPO/pcsx2/SysForwardDefs.h | grep -o "[0-9]*"` + release=`grep -o "isReleaseVersion.*" $LOCAL_REPO/pcsx2/SysForwardDefs.h | grep -o "[0-9]*"` + version="$major.$mid.$minor" +} + +get_git_version() +{ + date=`git -C $LOCAL_REPO show -s --format=%ci HEAD | sed -e 's/[\:\-]//g' -e 's/ /./' -e 's/ .*//'` +} + +download_orig() +{ + (cd $TMP_DIR && git clone --branch $1 $REMOTE_REPO pcsx2) + if [ "$SVN_CO_VERSION" = "1" ] ; then + (cd $TMP_DIR/pcsx2 && git checkout $GIT_SHA1) + fi +} + +remove_3rdparty() +{ + echo "Remove 3rdparty code" + rm -fr $LOCAL_REPO/3rdparty + rm -fr $LOCAL_REPO/fps2bios + rm -fr $LOCAL_REPO/tools +} + +remove_not_yet_free_plugin() +{ + echo "Remove non free plugins" + # remove also deprecated plugins + for plugin in CDVDiso CDVDisoEFP CDVDlinuz CDVDolio CDVDpeops dev9ghzdrk PeopsSPU2 SSSPSXPAD USBqemu xpad zerogs zerospu2 zzogl-pg-cg + do + rm -fr $LOCAL_REPO/plugins/$plugin done } -get_svn_file() +remove_remaining_non_free_file() { - for file in $* ; do - # Versioning information is not supported for a single file - # therefore you can't use svn co - svn export --quiet ${SVN_TRUNK}/${file} --force -r $SVN_CO_VERSION; - done + echo "Remove remaining non free file. TODO UPSTREAM" + rm -fr $LOCAL_REPO/plugins/GSdx/baseclasses + rm -f $LOCAL_REPO/plugins/zzogl-pg/opengl/Win32/aviUtil.h + rm -f $LOCAL_REPO/plugins/spu2-x/src/Windows/Hyperlinks.h + rm -f $LOCAL_REPO/plugins/spu2-x/src/Windows/Hyperlinks.cpp + rm -f $LOCAL_REPO/common/src/Utilities/x86/MemcpyFast.cpp + rm -f $LOCAL_REPO/common/include/comptr.h +} +remove_dot_git() +{ + # To save 66% of the package size + rm -fr $LOCAL_REPO/.git } ###################################################################### # Main script ###################################################################### +download_orig $BRANCH +remove_3rdparty +remove_not_yet_free_plugin +remove_remaining_non_free_file -## Download the svn repository (only the useful things) -echo "Downloading pcsx2 source revision ${SVN_CO_VERSION}" -mkdir -p $ROOT_DIR; -(cd $ROOT_DIR; - get_svn_file CMakeLists.txt; - get_svn_dir common cmake locales pcsx2; - get_svn_dir debian-unstable-upstream linux_various; -echo "Done") +get_git_version +get_pcsx2_version -# separate bin to avoid downloading the .mo file -mkdir -p $ROOT_DIR/bin; -(cd $ROOT_DIR/bin; - get_svn_file bin/GameIndex.dbf; - get_svn_file bin/cheats_ws.zip; - get_svn_dir bin/cheats; - get_svn_dir bin/docs;) +# must be done after getting the git version +remove_dot_git -echo "Downloading Linux compatible plugins for revision ${SVN_CO_VERSION}" -# Note: Other plugins exist but they are not 100% copyright free. -mkdir -p $ROOT_DIR/plugins -(cd $ROOT_DIR/plugins; - get_svn_file plugins/CMakeLists.txt; - get_svn_dir plugins/CDVDnull; - # Potential copyright issue. Optional anyway - # get_svn_dir plugins/CDVDnull plugins/CDVDiso; - get_svn_dir plugins/onepad; - get_svn_dir plugins/spu2-x; - get_svn_dir plugins/zzogl-pg plugins/zzogl-pg-cg plugins/GSdx; - get_svn_dir plugins/dev9null plugins/FWnull plugins/USBnull; -echo "Note: some plugins are more or less deprecated CDVDisoEFP, CDVDlinuz, Zerogs, Zeropad ..."; -echo "Done") +# Debian name of package and tarball +if [ $release -eq 1 ] +then + PKG_NAME="pcsx2-${version}" + TAR_NAME="pcsx2_${version}.orig.tar" +else + PKG_NAME="pcsx2.snapshot-${version}~git${date}" + TAR_NAME="pcsx2.snapshot_${version}~git${date}.orig.tar" +fi -## Installation -echo "Copy the subversion repository to a temporary directory" -# Copy the dir + +NEW_DIR=${TMP_DIR}/$PKG_NAME rm -fr $NEW_DIR -cp -r $ROOT_DIR $NEW_DIR +mv $LOCAL_REPO $NEW_DIR -echo "Remove .svn directories" -find $NEW_DIR -name ".svn" -type d -exec rm -fr {} \; 2> /dev/null -echo "Remove windows files (useless & potential copyright issues)" -# => pcsx2/windows -# Copyright header must be updated -find $NEW_DIR -iname "windows" -type d -exec rm -fr {} \; 2> /dev/null -# => ./plugins/zzogl-pg*/opengl/Win32 (reduced to the current linux plugins) -find $NEW_DIR -name "Win32" -type d -exec rm -fr {} \; 2> /dev/null - -echo "Remove useless files (copyright issues)" -rm -fr "${NEW_DIR}/plugins/zzogl-pg/opengl/ZeroGSShaders" -rm -fr "${NEW_DIR}/common/src/Utilities/x86/MemcpyFast.cpp" -rm -fr "${NEW_DIR}/plugins/GSdx/baseclasses" - -## BUILD echo "Build the tar.gz file" -tar -C $TMP_DIR -czf ${TAR_NAME}.gz $PKG_NAME +tar -C $TMP_DIR -cJf ${TAR_NAME}.xz $PKG_NAME ## Clean -rm -fr $NEW_DIR -if [ "$LOCAL" = 0 ] ; then - rm -fr $ROOT_DIR -fi +rm -fr $TMP_DIR + +exit 0