mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-31 16:26:03 +03:00 
			
		
		
		
	 706c8903a1
			
		
	
	
		706c8903a1
		
			
		
	
	
	
	
		
			
			* chore(build): add vendored SDL 3.0.0 library * chore(build): add vendored glew-cmake-2.2.0 library * feat(console): in the presence of -opengl launch flag, change GxApi to OpenGl * feat(gx): add uncompleted CGxDeviceGLSDL targeting Windows and Linux * chore(build): change SDL3 linkage from shared (bad) to to static (good)
		
			
				
	
	
		
			240 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| #
 | |
| # This script is used for auto maintaining
 | |
| # - merging with original repo
 | |
| # - regenerating sources and headers
 | |
| # - push changes to repository
 | |
| #
 | |
| set -euxo pipefail
 | |
| 
 | |
| ORIGINAL_REPO_URL=https://github.com/nigels-com/glew.git
 | |
| absolute_path () {
 | |
|   local TARGET_FILE=$1
 | |
|   shift
 | |
|   local OUT=$1
 | |
|   shift
 | |
|   pushd `dirname $TARGET_FILE`
 | |
|   TARGET_FILE=`basename $TARGET_FILE`
 | |
| 
 | |
|   # Iterate down a (possible) chain of symlinks
 | |
|   while [ -L "$TARGET_FILE" ]
 | |
|   do
 | |
|     TARGET_FILE=`readlink $TARGET_FILE`
 | |
|     cd `dirname $TARGET_FILE`
 | |
|     TARGET_FILE=`basename $TARGET_FILE`
 | |
|   done
 | |
| 
 | |
|   # Compute the canonicalized name by finding the physical path 
 | |
|   # for the directory we're in and appending the target file.
 | |
|   PHYS_DIR=`pwd -P`
 | |
|   RESULT=$PHYS_DIR/$TARGET_FILE
 | |
|   eval "$OUT=\"${RESULT}\""
 | |
|   popd
 | |
| }
 | |
| 
 | |
| if [ -z "${WORKSPACE:-}" ]; then
 | |
|   echo "Set WORKSPACE as default value"
 | |
|   absolute_path "$0" SCRIPT_PATH
 | |
|   WORKSPACE=$(dirname "$SCRIPT_PATH")
 | |
|   WORKSPACE=$(dirname "$WORKSPACE")
 | |
|   echo "WORKSPACE=$WORKSPACE"
 | |
| fi
 | |
| 
 | |
| if [ -z "${TEST_MODE:-}" -o "${TEST_MODE:-}" != "false" ]; then
 | |
|   PUSH_ARG="--dry-run"
 | |
| else
 | |
|   PUSH_ARG=""
 | |
| fi
 | |
| 
 | |
| source_update () {
 | |
|   GIT_BRANCH_NAME=$1
 | |
|   # for recovery when test mode.
 | |
|   PUSH_COUNT=0
 | |
| 
 | |
|   echo "Checkout branch ${GIT_BRANCH_NAME}"
 | |
|   git reset --hard
 | |
|   git clean -f .
 | |
|   if [ `git branch | grep ${GIT_BRANCH_NAME} | wc -l` = 0 ]; then
 | |
|     git checkout origin/${GIT_BRANCH_NAME} -b ${GIT_BRANCH_NAME}
 | |
|   else
 | |
|     git checkout -f $GIT_BRANCH_NAME
 | |
|     git pull -s recursive -X theirs --no-edit --progress origin
 | |
|   fi
 | |
|   echo "Pull from origin repository(${ORIGINAL_REPO_URL})"
 | |
|   BEFORE_COMMIT=`git rev-parse HEAD`
 | |
|   git pull -s recursive -X theirs --no-edit --commit --progress original_repo ${GIT_BRANCH_NAME}
 | |
|   AFTER_COMMIT=`git rev-parse HEAD`
 | |
|   if [ "$BEFORE_COMMIT" != "$AFTER_COMMIT" ]; then
 | |
|     echo "Source Updated"
 | |
|     git checkout "original_repo/${GIT_BRANCH_NAME}" -- README.md
 | |
|     git mv -f README.md README_glew.md
 | |
|     git checkout $BEFORE_COMMIT -- README.md
 | |
|     git add -f README.md README_glew.md
 | |
|     git commit --amend -m "Merge ${ORIGINAL_REPO_URL} into ${GIT_BRANCH_NAME} HEAD at $(TZ=GMT date)"
 | |
|     git push ${PUSH_ARG} origin $GIT_BRANCH_NAME:$GIT_BRANCH_NAME
 | |
|     PUSH_COUNT=$((PUSH_COUNT + 1))
 | |
|   fi
 | |
| 
 | |
|   cd "$WORKSPACE/auto"
 | |
|   echo "CleanUp"
 | |
|   make clean
 | |
|   cd "$WORKSPACE/auto"
 | |
|   REGISTRIES=`find . -name .git -type d -exec dirname {} \;`
 | |
|   for REGISTRY in $REGISTRIES
 | |
|   do
 | |
|     rm -rf $REGISTRY
 | |
|   done
 | |
|   cd "$WORKSPACE"
 | |
|   echo "Generated Source Update"
 | |
|   make extensions
 | |
|   echo "Diff sources"
 | |
|   git add --force src/glew.c src/glewinfo.c include/GL/* doc/* build/*.rc
 | |
|   # Check is there any staged changes?
 | |
|   if [ `git diff --cached | wc -c` -ne 0 ]; then
 | |
|     # Commit and push it
 | |
|     echo "Sources updated"
 | |
|     git commit -m"Generate Sources of ${GIT_BRANCH_NAME} updated at $(TZ=GMT date)"
 | |
|     echo "Push to repository"
 | |
|     git push ${PUSH_ARG} origin ${GIT_BRANCH_NAME}:${GIT_BRANCH_NAME}
 | |
|     PUSH_COUNT=$((PUSH_COUNT + 1))
 | |
|   else
 | |
|     echo "Differences Not found"
 | |
|   fi
 | |
| 
 | |
|   # when test mode, reset created commits
 | |
|   if [ -n "$PUSH_ARG" ]; then
 | |
|     echo "Reset commits"
 | |
|     git reset --hard HEAD~${PUSH_COUNT}
 | |
|   fi
 | |
| }
 | |
| 
 | |
| import_tags () {
 | |
|   echo "Fetch tags from origin repository(${ORIGINAL_REPO_URL})"
 | |
|   BEFORE_TAG_COUNT=`git tag | wc -l | sed "s/^ \+//"`
 | |
|   git fetch --tags --progress original_repo
 | |
|   AFTER_TAG_COUNT=`git tag | wc -l | sed "s/^ \+//"`
 | |
|   NEW_VERSION_TAGS=`diff -u <(git tag | grep glew-cmake- | sed s/glew-cmake/glew/) <(git tag | grep "glew-[0-9]") | grep ^+ | sed 1d | sed s/^+// || true`
 | |
|   if [ ! $BEFORE_TAG_COUNT -eq $AFTER_TAG_COUNT -o ! -z "$NEW_VERSION_TAGS" ]; then
 | |
|     echo "Tags updated"
 | |
|     git push ${PUSH_ARG} --tags origin
 | |
| 
 | |
|     git checkout glew-cmake-release
 | |
|     for TAG in $NEW_VERSION_TAGS
 | |
|     do
 | |
|       echo "Import $TAG"
 | |
|       git checkout $TAG -- .
 | |
|       git mv -f README.md README_glew.md
 | |
|       git checkout master -- CMakeLists.txt GeneratePkgConfig.cmake README.md
 | |
|       cd "$WORKSPACE/auto"
 | |
|       COMMIT_TIME=`git log -1 $TAG --format=%ct`
 | |
|       echo "Patch perl scripts for new version"
 | |
|       find bin -name '*.pl' -exec sed -i "s/do 'bin/use lib '.';\ndo 'bin/" {} \;
 | |
|       echo "Remove registries"
 | |
|       REGISTRIES=`find . -name .git -type d -exec dirname {} \;`
 | |
|       for REGISTRY in $REGISTRIES
 | |
|       do
 | |
|         rm -rf $REGISTRY
 | |
|       done
 | |
|       echo "Run code generation to download registries"
 | |
|       make clean
 | |
|       cd "$WORKSPACE"
 | |
|       make extensions
 | |
|       echo "Rewind registry repos"
 | |
|       cd "$WORKSPACE/auto"
 | |
|       make clean
 | |
|       REGISTRIES=`find . -name .git -type d -exec dirname {} \;`
 | |
|       for REGISTRY in $REGISTRIES
 | |
|       do
 | |
| 	      cd "$WORKSPACE/auto/$REGISTRY"
 | |
|         PROPER_COMMIT=`git log --until=$COMMIT_TIME -1 --format=%H`
 | |
|         git checkout --force $PROPER_COMMIT
 | |
|         find . -name .dummy -exec touch {} \;
 | |
|       done
 | |
|       echo "CleanUp for tag"
 | |
|       cd "$WORKSPACE/auto"
 | |
|       # remove previous data
 | |
|       rm -rf extensions
 | |
|       echo "Generate source code"
 | |
|       make
 | |
|       cd "$WORKSPACE"
 | |
|       git reset
 | |
|       git add --force src include doc CMakeLists.txt GeneratePkgConfig.cmake build/*.rc config/version
 | |
|       if [ `git diff --cached | wc -c` -ne 0 ]; then
 | |
|         git commit -m"glew-cmake release from $TAG"
 | |
|         NEW_TAG=`echo $TAG | sed s/glew-/glew-cmake-/`
 | |
|         git tag $NEW_TAG
 | |
|       else
 | |
|         echo "No difference! something wrong"
 | |
|       fi
 | |
|     done
 | |
| 
 | |
|     git push ${PUSH_ARG} origin glew-cmake-release
 | |
|     if [ -z "$PUSH_ARG" ]; then
 | |
|       git push --tags ${PUSH_ARG} origin
 | |
|     fi
 | |
| 
 | |
|     # when test mode, reset created commits
 | |
|     if [ -n "$PUSH_ARG" ]; then
 | |
|       echo "Reset commits for tags"
 | |
|       for TAG in $NEW_VERSION_TAGS
 | |
|       do
 | |
|         NEW_TAG=`echo $TAG | sed s/glew-/glew-cmake-/`
 | |
|         git tag -d $NEW_TAG
 | |
|         git reset --hard HEAD~1
 | |
|       done
 | |
|     fi
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # add remote when original repo is not found in local repo
 | |
| if [ `git remote | grep original_repo | wc -l` = 0 ]; then
 | |
|   git remote add original_repo ${ORIGINAL_REPO_URL}
 | |
| fi
 | |
| 
 | |
| git fetch -n original_repo
 | |
| 
 | |
| branch_list () {
 | |
|   eval "$2=\"`git branch -r | grep $1 | sed "s/\s\+$1\///g" | sed ':a;N;$!ba;s/\n/ /g'`\""
 | |
| }
 | |
| 
 | |
| contains () {
 | |
|   local OUT=$1
 | |
|   shift
 | |
|   local seeking=$1
 | |
|   shift
 | |
|   local in=1
 | |
|   for element in $*; do
 | |
|     if [ $element = $seeking ]; then
 | |
|       in=0
 | |
|       break
 | |
|     fi
 | |
|   done
 | |
|   eval "$OUT=\"${in}\""
 | |
| }
 | |
| 
 | |
| #branch_list original_repo ORIGINAL_REPO_BRANCH_LIST
 | |
| #branch_list origin ORIGIN_REPO_BRANCH_LIST
 | |
| 
 | |
| join () {
 | |
|   local OUT=$1
 | |
|   shift
 | |
|   local value="`echo $* | sed "s/ /\n/g" | sort -u | sed ':a;N;$!ba;s/\n/ /g'`"
 | |
|   eval "$OUT=\"${value}\""
 | |
| }
 | |
| 
 | |
| #join ALL_BRANCH_LIST $ORIGINAL_REPO_BRANCH_LIST $ORIGIN_REPO_BRANCH_LIST
 | |
| #
 | |
| #for branch in $ALL_BRANCH_LIST; do
 | |
| #  contains IN_ORIGINAL_REPO $branch $ORIGINAL_REPO_BRANCH_LIST
 | |
| #  if [ $IN_ORIGINAL_REPO = 1 ]; then
 | |
| #    if [ $branch != "glew-cmake-release" ]; then
 | |
| #      git push ${PUSH_ARG} origin :$branch
 | |
| #    fi
 | |
| #  else
 | |
| #    source_update $branch
 | |
| #  fi
 | |
| #done
 | |
| 
 | |
| source_update master
 | |
| 
 | |
| import_tags |