mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-10-29 14:54:45 +01:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			a0ab546bd7
			...
			179-build-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f77b767971 | 
| @@ -7,6 +7,8 @@ _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||
| # shellcheck source=src/lib/util/srcinfo.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/srcinfo.sh | ||||
| # shellcheck source=src/lib/state.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/state.sh | ||||
|  | ||||
| source /usr/share/makepkg/util/util.sh | ||||
|  | ||||
| @@ -234,6 +236,9 @@ declare -a uploads | ||||
| declare -a commit_arches | ||||
| declare -a skip_arches | ||||
|  | ||||
| BUILD_STATE_DIR=$(get_state_folder "build-state") | ||||
| state_file= | ||||
|  | ||||
| for _arch in "${arch[@]}"; do | ||||
| 	if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then | ||||
| 		skip_arches+=("$_arch") | ||||
| @@ -247,6 +252,12 @@ for _arch in "${arch[@]}"; do | ||||
| 			skip_arches+=("$_arch") | ||||
| 			continue 2 | ||||
| 		fi | ||||
|  | ||||
| 		state_file="${BUILD_STATE_DIR}/$(basename "${pkgfile}").txt" | ||||
| 		if [[ -f "${state_file}" ]] && [[ $(cat "${state_file}") != "${repo}" ]]; then | ||||
| 			error "%s was not built against '%s', aborting" "${pkgfile}" "${repo}" | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		uploads+=("$pkgfile") | ||||
| 	done | ||||
|  | ||||
|   | ||||
| @@ -12,6 +12,8 @@ source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/update.sh | ||||
| # shellcheck source=src/lib/release.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/release.sh | ||||
| # shellcheck source=src/lib/state.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/state.sh | ||||
| # shellcheck source=src/lib/util/git.sh | ||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh | ||||
| # shellcheck source=src/lib/util/srcinfo.sh | ||||
| @@ -129,6 +131,7 @@ pkgctl_build() { | ||||
| 	local PKGVER= | ||||
| 	local PKGREL= | ||||
| 	local MESSAGE= | ||||
| 	local BUILD_STATE_DIR= | ||||
|  | ||||
| 	local paths=() | ||||
| 	local BUILD_ARCH=() | ||||
| @@ -304,6 +307,8 @@ pkgctl_build() { | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
| 	BUILD_STATE_DIR=$(get_state_folder "build-state") | ||||
|  | ||||
| 	# assign default worker slot | ||||
| 	if [[ -z ${WORKER_SLOT} ]] && ! WORKER_SLOT="$(tty | sed 's|/dev/pts/||')"; then | ||||
| 		WORKER_SLOT=$(( RANDOM % $(nproc) + 1 )) | ||||
| @@ -481,25 +486,26 @@ pkgctl_build() { | ||||
| 		# shellcheck disable=SC2119 | ||||
| 		write_srcinfo_file | ||||
|  | ||||
| 		# test-install (some of) the produced packages | ||||
| 		if [[ ${INSTALL_TO_HOST} == auto ]] || [[ ${INSTALL_TO_HOST} == all ]]; then | ||||
| 			# shellcheck disable=2119 | ||||
| 			load_makepkg_config | ||||
| 		# shellcheck disable=2119 | ||||
| 		load_makepkg_config | ||||
|  | ||||
| 			# this is inspired by print_all_package_names from libmakepkg | ||||
| 			local version pkg_architecture pkg pkgfile | ||||
| 			version=$(get_full_version) | ||||
| 		# this is inspired by print_all_package_names from libmakepkg | ||||
| 		local version pkg_architecture pkg pkgfile | ||||
| 		version=$(get_full_version) | ||||
|  | ||||
| 			for pkg in "${pkgname[@]}"; do | ||||
| 				pkg_architecture=$(get_pkg_arch "$pkg") | ||||
| 				pkgfile=$(realpath "$(printf "%s/%s-%s-%s%s\n" "${PKGDEST:-.}" "$pkg" "$version" "$pkg_architecture" "$PKGEXT")") | ||||
| 		for pkg in "${pkgname[@]}"; do | ||||
| 			pkg_architecture=$(get_pkg_arch "$pkg") | ||||
| 			pkgpath=$(realpath "$(printf "%s\n" "${PKGDEST:-.}")") | ||||
| 			pkgfile=$(printf "%s-%s-%s%s\n" "$pkg" "$version" "$pkg_architecture" "$PKGEXT") | ||||
|  | ||||
| 				# check if we install all packages or if the (split-)package is already installed | ||||
| 				if [[ ${INSTALL_TO_HOST} == all ]] || ( [[ ${INSTALL_TO_HOST} == auto ]] && pacman -Qq -- "$pkg" &>/dev/null ); then | ||||
| 					INSTALL_HOST_PACKAGES+=("$pkgfile") | ||||
| 				fi | ||||
| 			done | ||||
| 		fi | ||||
| 			# check if we install all packages or if the (split-)package is already installed | ||||
| 			if [[ ${INSTALL_TO_HOST} == all ]] || ( [[ ${INSTALL_TO_HOST} == auto ]] && pacman -Qq -- "$pkg" &>/dev/null ); then | ||||
| 				INSTALL_HOST_PACKAGES+=("${pkgpath}/${pkgfile}") | ||||
| 			fi | ||||
|  | ||||
| 			# save against which repo we have built the package | ||||
| 			printf "%s" "${pkgrepo}" > "${BUILD_STATE_DIR}/${pkgfile}.txt" | ||||
| 		done | ||||
|  | ||||
| 		# release the build | ||||
| 		if (( RELEASE )); then | ||||
|   | ||||
							
								
								
									
										18
									
								
								src/lib/state.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/lib/state.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| #!/hint/bash | ||||
| # | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
|  | ||||
| [[ -z ${DEVTOOLS_INCLUDE_STATE_SH:-} ]] || return 0 | ||||
| DEVTOOLS_INCLUDE_STATE_SH=1 | ||||
|  | ||||
| set -e | ||||
|  | ||||
| readonly XDG_DEVTOOLS_STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/devtools" | ||||
|  | ||||
| get_state_folder() { | ||||
| 	local foldername=$1 | ||||
| 	local path="${XDG_DEVTOOLS_STATE_DIR}/${foldername}" | ||||
|  | ||||
| 	mkdir --parents -- "$path" | ||||
| 	printf '%s' "${path}" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user