void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

00-gen-pkg.sh (5235B)


      1# This hook generates a XBPS binary package from an installed package in destdir.
      2
      3genpkg() {
      4	local pkgdir="$1" arch="$2" desc="$3" pkgver="$4" binpkg="$5"
      5	local _preserve _deps _shprovides _shrequires _gitrevs _provides _conflicts
      6	local _replaces _reverts _mutable_files _conf_files f
      7	local _pkglock="$pkgdir/${binpkg}.lock"
      8
      9	if [ ! -d "${PKGDESTDIR}" ]; then
     10		msg_warn "$pkgver: cannot find pkg destdir... skipping!\n"
     11		return 0
     12	fi
     13
     14	[ ! -d $pkgdir ] && mkdir -p $pkgdir
     15
     16	while [ -f "$_pkglock" ]; do
     17		msg_warn "${pkgver}: binpkg is being created, waiting for 1s...\n"
     18		sleep 1
     19	done
     20
     21	# Don't overwrite existing binpkgs by default, skip them.
     22	if [ -f $pkgdir/$binpkg -a -z "$XBPS_BUILD_FORCEMODE" ]; then
     23		msg_normal "${pkgver}: skipping existing $binpkg pkg...\n"
     24		return 0
     25	fi
     26
     27	# Lock binpkg
     28	trap "rm -f '$_pkglock'" ERR EXIT
     29	touch -f "$_pkglock"
     30
     31	if [ ! -d $pkgdir ]; then
     32		mkdir -p $pkgdir
     33	fi
     34	cd $pkgdir
     35
     36	_preserve=${preserve:+-p}
     37	if [ -s ${PKGDESTDIR}/rdeps ]; then
     38		_deps="$(<${PKGDESTDIR}/rdeps)"
     39	fi
     40	if [ -s ${PKGDESTDIR}/shlib-provides ]; then
     41		_shprovides="$(<${PKGDESTDIR}/shlib-provides)"
     42	fi
     43	if [ -s ${PKGDESTDIR}/shlib-requires ]; then
     44		_shrequires="$(<${PKGDESTDIR}/shlib-requires)"
     45	fi
     46	if [ -s ${XBPS_STATEDIR}/gitrev ]; then
     47		_gitrevs="$(<${XBPS_STATEDIR}/gitrev)"
     48	fi
     49
     50	# Stripping whitespaces
     51	local _provides="$(echo $provides)"
     52	local _conflicts="$(echo $conflicts)"
     53	local _replaces="$(echo $replaces)"
     54	local _reverts="$(echo $reverts)"
     55	local _mutable_files="$(echo $mutable_files)"
     56	local _conf_files="$(expand_destdir "$conf_files")"
     57	local _alternatives="$(echo $alternatives)"
     58	local _tags="$(echo $tags)"
     59	local _changelog="$(echo $changelog)"
     60
     61	msg_normal "Creating $binpkg for repository $pkgdir ...\n"
     62
     63	#
     64	# Create the XBPS binary package.
     65	#
     66	xbps-create \
     67		${_provides:+--provides "${_provides}"} \
     68		${_conflicts:+--conflicts "${_conflicts}"} \
     69		${_replaces:+--replaces "${_replaces}"} \
     70		${_reverts:+--reverts "${_reverts}"} \
     71		${_mutable_files:+--mutable-files "${_mutable_files}"} \
     72		${_deps:+--dependencies "${_deps}"} \
     73		${_conf_files:+--config-files "${_conf_files}"} \
     74		${PKG_BUILD_OPTIONS:+--build-options "${PKG_BUILD_OPTIONS}"} \
     75		${_gitrevs:+--source-revisions "${_gitrevs}"} \
     76		${_shprovides:+--shlib-provides "${_shprovides}"} \
     77		${_shrequires:+--shlib-requires "${_shrequires}"} \
     78		${_alternatives:+--alternatives "${_alternatives}"} \
     79		${_preserve:+--preserve} \
     80		${tags:+--tags "${tags}"} \
     81		${_changelog:+--changelog "${_changelog}"} \
     82		${XBPS_PKG_COMPTYPE:+--compression $XBPS_PKG_COMPTYPE} \
     83		--architecture ${arch} \
     84		--homepage "${homepage}" \
     85		--license "${license}" \
     86		--maintainer "${maintainer}" \
     87		--desc "${desc}" \
     88		--pkgver "${pkgver}" \
     89		--quiet \
     90		${PKGDESTDIR}
     91	rval=$?
     92
     93	# Unlock binpkg
     94	rm -f "$_pkglock"
     95	trap - ERR EXIT
     96
     97	if [ $rval -ne 0 ]; then
     98		rm -f $pkgdir/$binpkg
     99		msg_error "Failed to created binary package: $binpkg!\n"
    100	fi
    101}
    102
    103hook() {
    104	local arch= binpkg= repo= _pkgver= _desc= _pkgn= _pkgv= _provides= \
    105		_replaces= _reverts= f= found_dbg_subpkg=
    106
    107	if [ -n "$XBPS_TARGET_MACHINE" ]; then
    108		arch=$XBPS_TARGET_MACHINE
    109	else
    110		arch=$XBPS_MACHINE
    111	fi
    112	if [ -z "$XBPS_CROSS_BUILD" -a -n "$XBPS_ARCH" -a "$XBPS_ARCH" != "$XBPS_TARGET_MACHINE" ]; then
    113		arch=${XBPS_ARCH}
    114	fi
    115
    116	binpkg=${pkgver}.${arch}.xbps
    117
    118	if [ -n "$repository" ]; then
    119		repo=$XBPS_REPOSITORY/$repository
    120	else
    121		repo=$XBPS_REPOSITORY
    122	fi
    123
    124	genpkg ${repo} ${arch} "${short_desc}" ${pkgver} ${binpkg}
    125
    126	for f in ${provides}; do
    127		_pkgn="$($XBPS_UHELPER_CMD getpkgname $f)"
    128		_pkgv="$($XBPS_UHELPER_CMD getpkgversion $f)"
    129		_provides+=" ${_pkgn}-32bit-${_pkgv}"
    130	done
    131	for f in ${replaces}; do
    132		_pkgn="$($XBPS_UHELPER_CMD getpkgdepname $f)"
    133		_pkgv="$($XBPS_UHELPER_CMD getpkgdepversion $f)"
    134		_replaces+=" ${_pkgn}-32bit${_pkgv}"
    135	done
    136
    137	# Generate -dbg pkg.
    138	for f in ${subpackages}; do
    139		# If there's an explicit subpkg named ${pkgname}-dbg, don't generate
    140		# it automagically (required by linuxX.X).
    141		if [ "${sourcepkg}-dbg" = "$f" ]; then
    142			found_dbg_subpkg=1
    143			break
    144		fi
    145	done
    146	if [ -z "$found_dbg_subpkg" -a -d "${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-dbg-${version}" ]; then
    147		source ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
    148		repo=$XBPS_REPOSITORY/debug
    149		_pkgver=${pkgname}-dbg-${version}_${revision}
    150		_desc="${short_desc} (debug files)"
    151		binpkg=${_pkgver}.${arch}.xbps
    152		PKGDESTDIR="${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-dbg-${version}"
    153		genpkg ${repo} ${arch} "${_desc}" ${_pkgver} ${binpkg}
    154	fi
    155	# Generate 32bit pkg.
    156	if [ "$XBPS_TARGET_MACHINE" != "i686" ]; then
    157		return
    158	fi
    159	if [ -d "${XBPS_DESTDIR}/${pkgname}-32bit-${version}" ]; then
    160		source ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
    161		if [ -n "$repository" ]; then
    162			repo=$XBPS_REPOSITORY/multilib/$repository
    163		else
    164			repo=$XBPS_REPOSITORY/multilib
    165		fi
    166		_pkgver=${pkgname}-32bit-${version}_${revision}
    167		_desc="${short_desc} (32bit)"
    168		binpkg=${_pkgver}.x86_64.xbps
    169		PKGDESTDIR="${XBPS_DESTDIR}/${pkgname}-32bit-${version}"
    170		[ -n "${_provides}" ] && export provides="${_provides}"
    171		[ -n "${_replaces}" ] && export replaces="${_replaces}"
    172		genpkg ${repo} x86_64 "${_desc}" ${_pkgver} ${binpkg}
    173	fi
    174}