mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-10-31 07:44:43 +01:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			272-check-
			...
			b9db3d3132
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | b9db3d3132 | ||
|   | 01757e6904 | ||
|   | c5fe8ff3e6 | ||
|   | a2945b09a8 | 
| @@ -80,7 +80,7 @@ check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAG | |||||||
| makechrootpkg_args+=("${@:$OPTIND}") | makechrootpkg_args+=("${@:$OPTIND}") | ||||||
|  |  | ||||||
| # Automatically recreate the root chroot if a version mismatch is detected | # Automatically recreate the root chroot if a version mismatch is detected | ||||||
| CURRENT_CHROOT_VERSION=$(cat "${chroots}/${repo}-${arch}/root/.arch-chroot" 2>/dev/null) | CURRENT_CHROOT_VERSION=$(cat "${chroots}/${repo}-${arch}/root/.arch-chroot") | ||||||
| if [[ -f "${chroots}/${repo}-${arch}/root/.arch-chroot" ]] && [[ "$CURRENT_CHROOT_VERSION" != "$CHROOT_VERSION" ]]; then | if [[ -f "${chroots}/${repo}-${arch}/root/.arch-chroot" ]] && [[ "$CURRENT_CHROOT_VERSION" != "$CHROOT_VERSION" ]]; then | ||||||
| 	warning "Recreating chroot '%s' (%s) as it is not at version %s" "${chroots}/${repo}-${arch}/root" "$CURRENT_CHROOT_VERSION" "$CHROOT_VERSION" | 	warning "Recreating chroot '%s' (%s) as it is not at version %s" "${chroots}/${repo}-${arch}/root" "$CURRENT_CHROOT_VERSION" "$CHROOT_VERSION" | ||||||
| 	clean_first=true | 	clean_first=true | ||||||
|   | |||||||
| @@ -155,7 +155,7 @@ if (( ${#needsversioning[*]} )); then | |||||||
| 		if [[ ! -f "${file}" ]]; then | 		if [[ ! -f "${file}" ]]; then | ||||||
| 			continue | 			continue | ||||||
| 		fi | 		fi | ||||||
| 		if ! git ls-files --error-unmatch "$file"; then | 		if ! git ls-files --error-unmatch "$file" >/dev/null; then | ||||||
| 			die "%s is not under version control" "$file" | 			die "%s is not under version control" "$file" | ||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
|   | |||||||
| @@ -191,7 +191,9 @@ path = [ | |||||||
|     ".nvchecker.toml", |     ".nvchecker.toml", | ||||||
|     "*.install", |     "*.install", | ||||||
|     "*.sysusers", |     "*.sysusers", | ||||||
|  |     "*sysusers.conf", | ||||||
|     "*.tmpfiles", |     "*.tmpfiles", | ||||||
|  |     "*tmpfiles.conf", | ||||||
|     "*.logrotate", |     "*.logrotate", | ||||||
|     "*.pam", |     "*.pam", | ||||||
|     "*.service", |     "*.service", | ||||||
|   | |||||||
| @@ -150,7 +150,9 @@ install_packages() { | |||||||
| 	pkgnames=("${install_pkgs[@]##*/}") | 	pkgnames=("${install_pkgs[@]##*/}") | ||||||
|  |  | ||||||
| 	cp -- "${install_pkgs[@]}" "$copydir/root/" | 	cp -- "${install_pkgs[@]}" "$copydir/root/" | ||||||
| 	arch-nspawn "$copydir" "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" "${bindmounts_tmpfs[@]}" \ | 	arch-nspawn "$copydir" \ | ||||||
|  | 		--machine="$(display_name installing "${pkgnames[@]}")" \ | ||||||
|  | 		"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" "${bindmounts_tmpfs[@]}" \ | ||||||
| 		pacman -U --noconfirm --ask=4 -- "${pkgnames[@]/#//root/}" | 		pacman -U --noconfirm --ask=4 -- "${pkgnames[@]/#//root/}" | ||||||
| 	ret=$? | 	ret=$? | ||||||
| 	rm -- "${pkgnames[@]/#/$copydir/root/}" | 	rm -- "${pkgnames[@]/#/$copydir/root/}" | ||||||
| @@ -291,6 +293,33 @@ move_products() { | |||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # Usage: display_name verb pkgname [pkgname...] | ||||||
|  | display_name() { | ||||||
|  | 	local max_hostname max_pkgnames_length max_pid_digits pkgnames tool verb | ||||||
|  |  | ||||||
|  | 	max_hostname=64  # see gethostname(2) | ||||||
|  | 	num_joiner_chars=3  # see template string below | ||||||
|  | 	max_pid_digits=7  # ceil(log(2^22, 10)) | ||||||
|  |  | ||||||
|  | 	tool="${0##*/}" | ||||||
|  | 	verb="${1?}" | ||||||
|  | 	shift | ||||||
|  | 	max_pkgnames_length=$(( | ||||||
|  | 		max_hostname - num_joiner_chars - max_pid_digits - "${#tool}" - "${#verb}" | ||||||
|  | 	)) | ||||||
|  | 	# Normalize the package name so it doubles as a valid hostname | ||||||
|  | 	# https://github.com/systemd/systemd/blob/v256/src/basic/hostname-util.c#L83-L136 | ||||||
|  | 	pkgnames="$( | ||||||
|  | 		tr -s -c 'a-z0-9 ' - <<< "$*" | tr ' ' . | head -c ${max_pkgnames_length} | ||||||
|  | 	)" | ||||||
|  |  | ||||||
|  | 	if [[ $# -eq 0 ]]; then | ||||||
|  | 		printf '%s.%s.%s' "${tool}" "${verb}" $$ | ||||||
|  | 	else | ||||||
|  | 		printf '%s.%s.%s.%s' "${tool}" "${verb}" "${pkgnames%%-}" $$ | ||||||
|  | 	fi | ||||||
|  | } | ||||||
| # }}} | # }}} | ||||||
|  |  | ||||||
| while getopts 'hcur:I:l:nCTD:d:U:x:t:' arg; do | while getopts 'hcur:I:l:nCTD:d:U:x:t:' arg; do | ||||||
| @@ -368,6 +397,7 @@ if [[ ! -d $copydir ]] || (( clean_first )); then | |||||||
| fi | fi | ||||||
|  |  | ||||||
| (( update_first )) && arch-nspawn "$copydir" \ | (( update_first )) && arch-nspawn "$copydir" \ | ||||||
|  | 		--machine="$(display_name updating)" \ | ||||||
| 		"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" "${bindmounts_tmpfs[@]}" \ | 		"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" "${bindmounts_tmpfs[@]}" \ | ||||||
| 		pacman -Syuu --noconfirm | 		pacman -Syuu --noconfirm | ||||||
|  |  | ||||||
| @@ -396,11 +426,19 @@ nspawn_build_args=( | |||||||
| 	"${bindmounts_tmpfs[@]}" | 	"${bindmounts_tmpfs[@]}" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | { | ||||||
|  | 	read -r -d $'\n' pkgbase | ||||||
|  | 	mapfile -t pkgnames | ||||||
|  | } < <(sudo -u "$makepkg_user" bash -c ' | ||||||
|  | 		source PKGBUILD | ||||||
|  | 		printf "%s\n" "${pkgbase:-${pkgname}}" "${pkgname[@]}" | ||||||
|  | ') | ||||||
|  |  | ||||||
| if arch-nspawn "$copydir" \ | if arch-nspawn "$copydir" \ | ||||||
| 	"${nspawn_build_args[@]}" \ | 	"${nspawn_build_args[@]}" \ | ||||||
|  | 	--machine="$(display_name building "${pkgbase}")" \ | ||||||
| 	/chrootbuild "${makepkg_args[@]}" | 	/chrootbuild "${makepkg_args[@]}" | ||||||
| then | then | ||||||
| 	mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"') |  | ||||||
| 	move_products | 	move_products | ||||||
| else | else | ||||||
| 	(( ret += 1 )) | 	(( ret += 1 )) | ||||||
| @@ -413,8 +451,11 @@ if [[ $inspect == always ]] || ( [[ $inspect == failure ]] && (( ret != 0 )) ); | |||||||
| 	else | 	else | ||||||
| 		error "Build failed, inspecting %s" "$copydir" | 		error "Build failed, inspecting %s" "$copydir" | ||||||
| 	fi | 	fi | ||||||
|  | 	# Use a short machine name without dots so the shell picks it up | ||||||
|  | 	# as part of the window title | ||||||
| 	arch-nspawn "$copydir" \ | 	arch-nspawn "$copydir" \ | ||||||
| 		"${nspawn_build_args[@]}" \ | 		"${nspawn_build_args[@]}" \ | ||||||
|  | 		--machine="inspecting-$$" \ | ||||||
| 		--user=builduser \ | 		--user=builduser \ | ||||||
| 		--chdir=/build | 		--chdir=/build | ||||||
| fi | fi | ||||||
| @@ -444,7 +485,9 @@ else | |||||||
| 		for remotepkg in "${remotepkgs[@]}"; do | 		for remotepkg in "${remotepkgs[@]}"; do | ||||||
| 			if [[ $remotepkg != file://* ]]; then | 			if [[ $remotepkg != file://* ]]; then | ||||||
| 				msg2 "Downloading current versions" | 				msg2 "Downloading current versions" | ||||||
| 				arch-nspawn "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}" | 				arch-nspawn "$copydir" \ | ||||||
|  | 					--machine="$(display_name downloading "${pkgnames[@]}")" \ | ||||||
|  | 					pacman --noconfirm -Swdd "${pkgnames[@]}" | ||||||
| 				mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | 				mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | ||||||
| 					--dbpath "$copydir"/var/lib/pacman \ | 					--dbpath "$copydir"/var/lib/pacman \ | ||||||
| 					-Sddp "${pkgnames[@]}") | 					-Sddp "${pkgnames[@]}") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user