| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | set +x | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap "cd $(pwd -P)" EXIT | 
					
						
							|  |  |  | cd "$(dirname "$0")" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | REMOTE_BROWSER_UPSTREAM="browser_upstream" | 
					
						
							|  |  |  | BUILD_BRANCH="playwright-build" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ($1 == '--help') || ($1 == '-h') ]]; then | 
					
						
							|  |  |  |   echo "usage: $(basename $0) [firefox|webkit] [custom_checkout_path]" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "Prepares browser checkout. The checkout is a GIT repository that:" | 
					
						
							|  |  |  |   echo "- has a '$REMOTE_BROWSER_UPSTREAM' remote pointing to a REMOTE_URL from UPSTREAM_CONFIG.sh" | 
					
						
							|  |  |  |   echo "- has a '$BUILD_BRANCH' branch that is BASE_REVISION with all the patches applied." | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "You can optionally specify custom_checkout_path if you want to use some other browser checkout" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ $# == 0 ]]; then | 
					
						
							|  |  |  |   echo "missing browser: 'firefox' or 'webkit'" | 
					
						
							|  |  |  |   echo "try './$(basename $0) --help' for more information" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # FRIENDLY_CHECKOUT_PATH is used only for logging. | 
					
						
							|  |  |  | FRIENDLY_CHECKOUT_PATH=""; | 
					
						
							|  |  |  | CHECKOUT_PATH="" | 
					
						
							| 
									
										
										
										
											2019-11-24 08:22:04 +08:00
										 |  |  | PATCHES_PATH="" | 
					
						
							| 
									
										
										
										
											2019-12-10 05:16:27 +08:00
										 |  |  | BUILD_NUMBER="" | 
					
						
							| 
									
										
										
										
											2020-06-03 07:51:13 +08:00
										 |  |  | WEBKIT_EXTRA_FOLDER_PATH="" | 
					
						
							|  |  |  | FIREFOX_EXTRA_FOLDER_PATH="" | 
					
						
							| 
									
										
										
										
											2020-03-25 04:22:46 +08:00
										 |  |  | if [[ ("$1" == "firefox") || ("$1" == "firefox/") || ("$1" == "ff") ]]; then | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  |   FRIENDLY_CHECKOUT_PATH="//browser_patches/firefox/checkout"; | 
					
						
							|  |  |  |   CHECKOUT_PATH="$PWD/firefox/checkout" | 
					
						
							| 
									
										
										
										
											2019-11-24 08:22:04 +08:00
										 |  |  |   PATCHES_PATH="$PWD/firefox/patches" | 
					
						
							| 
									
										
										
										
											2020-06-03 07:51:13 +08:00
										 |  |  |   FIREFOX_EXTRA_FOLDER_PATH="$PWD/firefox/juggler" | 
					
						
							| 
									
										
										
										
											2020-07-03 03:09:27 +08:00
										 |  |  |   BUILD_NUMBER=$(head -1 "$PWD/firefox/BUILD_NUMBER") | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  |   source "./firefox/UPSTREAM_CONFIG.sh" | 
					
						
							| 
									
										
										
										
											2020-03-25 04:22:46 +08:00
										 |  |  | elif [[ ("$1" == "webkit") || ("$1" == "webkit/") || ("$1" == "wk") ]]; then | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  |   FRIENDLY_CHECKOUT_PATH="//browser_patches/webkit/checkout"; | 
					
						
							|  |  |  |   CHECKOUT_PATH="$PWD/webkit/checkout" | 
					
						
							| 
									
										
										
										
											2019-11-24 08:22:04 +08:00
										 |  |  |   PATCHES_PATH="$PWD/webkit/patches" | 
					
						
							| 
									
										
										
										
											2020-06-03 07:51:13 +08:00
										 |  |  |   WEBKIT_EXTRA_FOLDER_PATH="$PWD/webkit/embedder/Playwright" | 
					
						
							| 
									
										
										
										
											2020-07-03 03:09:27 +08:00
										 |  |  |   BUILD_NUMBER=$(head -1 "$PWD/webkit/BUILD_NUMBER") | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  |   source "./webkit/UPSTREAM_CONFIG.sh" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   echo ERROR: unknown browser - "$1" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # we will use this just for beauty. | 
					
						
							|  |  |  | if [[ $# == 2 ]]; then | 
					
						
							|  |  |  |   echo "WARNING: using custom checkout path $CHECKOUT_PATH" | 
					
						
							|  |  |  |   CHECKOUT_PATH=$2 | 
					
						
							| 
									
										
										
										
											2019-12-03 04:58:44 +08:00
										 |  |  |   FRIENDLY_CHECKOUT_PATH="<custom_checkout('$2')>" | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # if there's no checkout folder - checkout one. | 
					
						
							|  |  |  | if ! [[ -d $CHECKOUT_PATH ]]; then | 
					
						
							|  |  |  |   echo "-- $FRIENDLY_CHECKOUT_PATH is missing - checking out.." | 
					
						
							|  |  |  |   git clone --single-branch --branch $BASE_BRANCH $REMOTE_URL $CHECKOUT_PATH | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   echo "-- checking $FRIENDLY_CHECKOUT_PATH folder - OK" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # if folder exists but not a git repository - bail out. | 
					
						
							|  |  |  | if ! [[ -d $CHECKOUT_PATH/.git ]]; then | 
					
						
							|  |  |  |   echo "ERROR: $FRIENDLY_CHECKOUT_PATH is not a git repository! Remove it and re-run the script." | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   echo "-- checking $FRIENDLY_CHECKOUT_PATH is a git repo - OK" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ============== SETTING UP GIT REPOSITORY ============== | 
					
						
							|  |  |  | cd $CHECKOUT_PATH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Bail out if git repo is dirty. | 
					
						
							| 
									
										
										
										
											2019-12-03 04:58:44 +08:00
										 |  |  | if [[ -n $(git status -s --untracked-files=no) ]]; then | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  |   echo "ERROR: $FRIENDLY_CHECKOUT_PATH has dirty GIT state - commit everything and re-run the script." | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Setting up |$REMOTE_BROWSER_UPSTREAM| remote and fetch the $BASE_BRANCH | 
					
						
							|  |  |  | if git remote get-url $REMOTE_BROWSER_UPSTREAM >/dev/null; then | 
					
						
							|  |  |  |   echo "-- setting |$REMOTE_BROWSER_UPSTREAM| remote url to $REMOTE_URL" | 
					
						
							|  |  |  |   git remote set-url $REMOTE_BROWSER_UPSTREAM $REMOTE_URL | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   echo "-- adding |$REMOTE_BROWSER_UPSTREAM| remote to $REMOTE_URL" | 
					
						
							|  |  |  |   git remote add $REMOTE_BROWSER_UPSTREAM $REMOTE_URL | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-13 06:20:12 +08:00
										 |  |  | # If not, fetch from REMOTE_BROWSER_UPSTREAM and check one more time. | 
					
						
							|  |  |  | git fetch $REMOTE_BROWSER_UPSTREAM $BASE_BRANCH | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | if ! git cat-file -e $BASE_REVISION^{commit}; then | 
					
						
							| 
									
										
										
										
											2020-05-13 06:20:12 +08:00
										 |  |  |   echo "ERROR: $FRIENDLY_CHECKOUT_PATH/ does not include the BASE_REVISION (@$BASE_REVISION). Wrong revision number?" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2020-05-13 06:20:12 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-10 05:16:27 +08:00
										 |  |  | echo "-- checking $FRIENDLY_CHECKOUT_PATH repo has BASE_REVISION (@$BASE_REVISION) commit - OK" | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Check out the $BASE_REVISION | 
					
						
							|  |  |  | git checkout $BASE_REVISION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Create a playwright-build branch and apply all the patches to it. | 
					
						
							|  |  |  | if git show-ref --verify --quiet refs/heads/playwright-build; then | 
					
						
							|  |  |  |   git branch -D playwright-build | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | git checkout -b playwright-build | 
					
						
							| 
									
										
										
										
											2019-12-10 05:16:27 +08:00
										 |  |  | echo "-- applying patches" | 
					
						
							|  |  |  | git apply --index $PATCHES_PATH/* | 
					
						
							| 
									
										
										
										
											2020-04-23 01:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-03 07:51:13 +08:00
										 |  |  | if [[ ! -z "${WEBKIT_EXTRA_FOLDER_PATH}" ]]; then | 
					
						
							|  |  |  |   echo "-- adding WebKit embedders" | 
					
						
							|  |  |  |   cp -r "${WEBKIT_EXTRA_FOLDER_PATH}" ./Tools/Playwright | 
					
						
							|  |  |  |   git add Tools/Playwright | 
					
						
							|  |  |  | elif [[ ! -z "${FIREFOX_EXTRA_FOLDER_PATH}" ]]; then | 
					
						
							|  |  |  |   echo "-- adding juggler" | 
					
						
							|  |  |  |   cp -r "${FIREFOX_EXTRA_FOLDER_PATH}" ./juggler | 
					
						
							|  |  |  |   git add juggler | 
					
						
							| 
									
										
										
										
											2020-04-23 01:52:17 +08:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-10 05:16:27 +08:00
										 |  |  | git commit -a --author="playwright-devops <devops@playwright.com>" -m "chore: bootstrap build #$BUILD_NUMBER" | 
					
						
							| 
									
										
										
										
											2019-11-22 09:06:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | echo "DONE. Browser is ready to be built." |