Commit 2b565885 authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

rpmbuild: Allow to use default RPM build directories



USE_DEFAULT_DIRS can be used together with GEN_SPEC to not hardcode
our custom paths into the .spec and instead use default set of dirs -
this should allow users to not define custom dir macros for their
own rpmbuild instances and simply run the build against the .spec:

 $ GEN_SPEC=yes USE_DEFAULT_DIRS=yes ./rpmbuild/rpm.sh > foo.spec
 # .. prepare source ...
 $ rpmbuild -ba foo.spec

Signed-off-by: default avatarMichal Berger <michalx.berger@intel.com>
Change-Id: Ia50ac303dfe9090fbd424e63e9eee7d939415ac2
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8390


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 47ee30d3
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ get_version() {

build_macros() {
	local -g macros=()
	local dir
	local dir _dir

	macros+=(-D "configure ${configure:-"%{nil}"}")
	macros+=(-D "make $make")
@@ -76,8 +76,12 @@ build_macros() {

	# Adjust dir macros to update the final location of the RPMS
	for dir in build buildroot rpm source spec srcrpm; do
		mkdir -p "$rpmbuild_dir/$dir"
		_dir=$(rpm --eval "%{_${dir}dir}")
		if [[ -z $USE_DEFAULT_DIRS ]]; then
			macros+=(-D "_${dir}dir $rpmbuild_dir/$dir")
			_dir=$rpmbuild_dir/$dir
		fi
		local -g "_${dir}dir=$_dir"
	done

	if get_config with-shared; then
@@ -123,10 +127,18 @@ gen_spec() {
build_rpm() (
	fedora_python_sys_path_workaround

	# Despite building in-place, rpmbuild still looks under source dir as defined
	mkdir -p \
		"$_builddir" \
		"$_buildrootdir" \
		"$_rpmdir" \
		"$_sourcedir" \
		"$_specdir" \
		"$_srcrpmdir"

	# Despite building in-place, rpmbuild still looks under %{_sourcedir} as defined
	# in Source:. Create a dummy file to fulfil its needs and to keep Source in
	# the .spec.
	: > "$rpmbuild_dir/source/spdk-$version.tar.gz"
	: > "$_sourcedir/spdk-$version.tar.gz"

	printf '* Starting rpmbuild...\n'
	rpmbuild --clean --nodebuginfo "${macros[@]}" --build-in-place -ba "$spec"