add script Google service install
This commit is contained in:
		
						commit
						19573b5283
					
				
							
								
								
									
										204
									
								
								open_gaps_install.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										204
									
								
								open_gaps_install.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,204 @@ | |||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | WORKDIR=/home/.aliendalvik_systemimg_patch | ||||||
|  | TMPWORKDIR="$WORKDIR/tmp" | ||||||
|  | SQUASHFS_ROOT="$TMPWORKDIR/squashfs-root" | ||||||
|  | MOUNT_ROOT="$TMPWORKDIR/systemimg_mount" | ||||||
|  | SYSTEM_IMG=/opt/alien/system.img | ||||||
|  | ORIG_IMG_FILE=orig_img_path.txt | ||||||
|  | 
 | ||||||
|  | FEDORA22_REPO=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Everything/aarch64/os/Packages | ||||||
|  | 
 | ||||||
|  | OPENGAPPS_ARCH=arm64 | ||||||
|  | OPENGAPPS_API=11.0 | ||||||
|  | OPENGAPPS_VARIANT=pico | ||||||
|  | 
 | ||||||
|  | GOOGLE_APPS_REMOVE='carriersetup-all extservicesgoogle-arm64 extsharedgoogle-all googlebackuptransport-all googlecontactssync-all googlefeedback-all googlepartnersetup-all setupwizarddefault-arm64 setupwizardtablet-arm64 vending-common' | ||||||
|  | 
 | ||||||
|  | log() { | ||||||
|  | 	printf '%s\n' "$1" > /dev/stderr | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | install_fedora22_rpm() { | ||||||
|  | 	pkgname="$1" | ||||||
|  | 	pkgversion="$2" | ||||||
|  | 
 | ||||||
|  | 	if ! rpm -q "$pkgname" > /dev/null; then | ||||||
|  | 		pkgfile="$pkgname-$pkgversion.fc30.aarch64.rpm" | ||||||
|  | 		firstletter="$(printf '%s' "$pkgfile" | cut -c 1)" | ||||||
|  | 		mkdir "$TMPWORKDIR/rpms" | ||||||
|  | 		curl "$FEDORA22_REPO/$firstletter/$pkgfile" > "$TMPWORKDIR/rpms/$pkgfile" | ||||||
|  | 		pkcon -y install-local "$TMPWORKDIR/rpms/$pkgfile" | ||||||
|  | 		rm "$TMPWORKDIR/rpms/$pkgfile" | ||||||
|  | 		rmdir "$TMPWORKDIR/rpms" | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | install_deps() { | ||||||
|  | 	if ! rpm -q squashfs-tools > /dev/null; then | ||||||
|  | 		log "squashfs-tools package not found. Installing..." | ||||||
|  | 		pkcon -y install squashfs-tools | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	if ! rpm -q rsync > /dev/null; then | ||||||
|  | 		log "rsync package not found. Installing..." | ||||||
|  | 		pkcon -y install rsync | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	if ! rpm -q lzip > /dev/null; then | ||||||
|  | 		log "lzip package not found. Installing..." | ||||||
|  | 		install_fedora22_rpm lzip 1.20-4 | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | extract_image() { | ||||||
|  | 	mkdir "$MOUNT_ROOT" | ||||||
|  | 	mount -o loop,ro "$SYSTEM_IMG" "$MOUNT_ROOT" | ||||||
|  | 
 | ||||||
|  | 	if [ -f "$MOUNT_ROOT/$ORIG_IMG_FILE" ]; then | ||||||
|  | 		orig_image="$(cat "$MOUNT_ROOT/$ORIG_IMG_FILE")" | ||||||
|  | 		log "$SYSTEM_IMG already patched, using original from $orig_image" | ||||||
|  | 	else | ||||||
|  | 		orig_image="$WORKDIR/system.img.orig.$(date +%Y%m%dT%H%M%S)" | ||||||
|  | 		cp "$SYSTEM_IMG" "$orig_image" | ||||||
|  | 		log "Copying original image $SYSTEM_IMG to $orig_image" | ||||||
|  | 	fi | ||||||
|  | 	umount "$MOUNT_ROOT" | ||||||
|  | 
 | ||||||
|  | 	if [ ! -f "$orig_image" ]; then | ||||||
|  | 		log "$orig_image not found" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	mount -o loop,ro "$orig_image" "$MOUNT_ROOT" | ||||||
|  | 
 | ||||||
|  | 	if [ -f "$MOUNT_ROOT/$ORIG_IMG_FILE" ]; then | ||||||
|  | 		umount "$MOUNT_ROOT" | ||||||
|  | 		rmdir "$MOUNT_ROOT" | ||||||
|  | 		log "$orig_image already patched, please restore original image to $SYSTEM_IMG" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	mkdir "$SQUASHFS_ROOT" | ||||||
|  | 	# rsync needs to be run twice to copy all xattrs. Probably a bug in rsync. | ||||||
|  | 	rsync -aSHAX "$MOUNT_ROOT/" "$SQUASHFS_ROOT/" | ||||||
|  | 	rsync -aSHAX "$MOUNT_ROOT/" "$SQUASHFS_ROOT/" | ||||||
|  | 	umount "$MOUNT_ROOT" | ||||||
|  | 	rmdir "$MOUNT_ROOT" | ||||||
|  | 
 | ||||||
|  | 	printf '%s' "$orig_image" > "$SQUASHFS_ROOT/$ORIG_IMG_FILE" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | build_image() { | ||||||
|  | 	cp "$SYSTEM_IMG" "$TMPWORKDIR/system.img.backup" | ||||||
|  | 	mksquashfs "$SQUASHFS_ROOT" "$SYSTEM_IMG" -noappend -no-exports -no-duplicates -no-fragments | ||||||
|  | 	rm "$TMPWORKDIR/system.img.backup" | ||||||
|  | 	rm -r "$SQUASHFS_ROOT" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _find_opengapps() { | ||||||
|  | 	downloads=/home/defaultuser/Downloads/ | ||||||
|  | 	name_pattern="open_gapps-$OPENGAPPS_ARCH-$OPENGAPPS_API-$OPENGAPPS_VARIANT-*.zip" | ||||||
|  | 	if [ "$1" != quiet ]; then | ||||||
|  | 		log "Searching for Open GApps zip at $downloads/$name_pattern" | ||||||
|  | 	fi | ||||||
|  | 	find "$downloads" -maxdepth 1 -name "$name_pattern" | sort | tail -n 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | get_opengapps_zip() { | ||||||
|  | 	opengapps_zip="$(_find_opengapps)" | ||||||
|  | 	if [ -z "$opengapps_zip" ]; then | ||||||
|  | 		# Show the Open GApps download page to the user instead of automating | ||||||
|  | 		# the download of the latest version. | ||||||
|  | 		# The no-mirror policy | ||||||
|  | 		log "Opening Open GApps download page" | ||||||
|  | 		runuser -l defaultuser – /usr/bin/xdg-open "The Open GApps Project" | ||||||
|  | 		log "Waiting for download to start" | ||||||
|  | 		while [ -z "$opengapps_zip" ]; do | ||||||
|  | 			sleep 1 | ||||||
|  | 			opengapps_zip="$(_find_opengapps quiet)" | ||||||
|  | 		done | ||||||
|  | 		log "Detected new download at $opengapps_zip" | ||||||
|  | 		log "Waiting for download to finish" | ||||||
|  | 		while [ -f "$opengapps_zip" ] && [ -f "$opengapps_zip.part" ]; do | ||||||
|  | 			sleep 1 | ||||||
|  | 		done | ||||||
|  | 		sleep 1 | ||||||
|  | 		if [ ! -f "$opengapps_zip" ]; then | ||||||
|  | 			log "Download failed" | ||||||
|  | 			return 1 | ||||||
|  | 		fi | ||||||
|  | 	else | ||||||
|  | 		log "Found Open GApps zip $opengapps_zip" | ||||||
|  | 	fi | ||||||
|  | 	printf '%s' "$opengapps_zip" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | install_opengapps() { | ||||||
|  | 	log "Unzip open gapps archive" | ||||||
|  | 	unzip "$(get_opengapps_zip)" -d "$TMPWORKDIR/opengapps/" | ||||||
|  | 
 | ||||||
|  | 	log "Remove some google apps" | ||||||
|  | 	for p in $GOOGLE_APPS_REMOVE; do | ||||||
|  | 		log "Removing $p" | ||||||
|  | 		rm "$TMPWORKDIR/opengapps/Core/$p.tar.lz" | ||||||
|  | 	done | ||||||
|  | 
 | ||||||
|  | 	if [ -f "$TMPWORKDIR/opengapps/Core/extservicesgoogle-all.tar.lz" ]; then | ||||||
|  | 		rm -r "$SQUASHFS_ROOT/system/priv-app/ExtServices" | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	if [ -f "$TMPWORKDIR/opengapps/Core/extsharedgoogle-all.tar.lz" ]; then | ||||||
|  | 		rm -r "$SQUASHFS_ROOT/system/app/ExtShared" | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	mkdir "$TMPWORKDIR/opengapps_unarchived" | ||||||
|  | 	for f in "$TMPWORKDIR"/opengapps/Core/*.tar.lz; do | ||||||
|  | 		lzip -c -d "$f" | tar -x -C "$TMPWORKDIR/opengapps_unarchived" | ||||||
|  | 	done | ||||||
|  | 
 | ||||||
|  | 	rm -r "$TMPWORKDIR/opengapps/" | ||||||
|  | 
 | ||||||
|  | 	ls -al "$TMPWORKDIR"/opengapps_unarchived | ||||||
|  | 	ls -al "$SQUASHFS_ROOT/system/" | ||||||
|  | 	ls -al "$SQUASHFS_ROOT/system/product" | ||||||
|  | 	cp -r "$TMPWORKDIR"/opengapps_unarchived/*/*/* "$SQUASHFS_ROOT/system/" | ||||||
|  | 	rm -r "$TMPWORKDIR/opengapps_unarchived/" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | set_traps() { | ||||||
|  | 	# shellcheck disable=SC2064 | ||||||
|  | 	trap "$*" EXIT HUP INT QUIT PIPE TERM | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cleanup() { | ||||||
|  | 	if [ ! -f "$SYSTEM_IMG" ] && [ -f "$TMPWORKDIR/system.img.backup" ]; then | ||||||
|  | 		mv "$TMPWORKDIR/system.img.backup" "$SYSTEM_IMG" || : | ||||||
|  | 	fi | ||||||
|  | 	umount "$MOUNT_ROOT" || : | ||||||
|  | 	rm -r "$TMPWORKDIR" || : | ||||||
|  | 	set_traps - | ||||||
|  | 	exit 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | set_traps cleanup | ||||||
|  | systemctl stop aliendalvik | ||||||
|  | 
 | ||||||
|  | mkdir -p "$WORKDIR" | ||||||
|  | mkdir -p "$TMPWORKDIR" | ||||||
|  | 
 | ||||||
|  | install_deps | ||||||
|  | log "extract image" | ||||||
|  | extract_image | ||||||
|  | log "image was extracted" | ||||||
|  | log "install open gapps" | ||||||
|  | install_opengapps | ||||||
|  | log "open gapps were installed" | ||||||
|  | log "build image" | ||||||
|  | build_image | ||||||
|  | log "image was built" | ||||||
|  | 
 | ||||||
|  | rmdir "$TMPWORKDIR" | ||||||
|  | 
 | ||||||
|  | set_traps - | ||||||
|  | exit 0 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user