diff options
Diffstat (limited to 'bin/sfpm_makepkg')
-rwxr-xr-x | bin/sfpm_makepkg | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/bin/sfpm_makepkg b/bin/sfpm_makepkg new file mode 100755 index 0000000..ff6d2be --- /dev/null +++ b/bin/sfpm_makepkg @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# Deny execution as root user +uid=$(id -u) +username=$(whoami) +if [[ ${uid} == 0 ]] || [[ ${username} == root ]]; then + msg_error "$(basename ${0}) should be executed by a regular user, not with root." + exit 1 +fi + +unset uid +unset username + +export SFPM_MAKEPKG_ENV=$(basename $(mktemp -u sfpm.makepkg.XXXXXX)) +export sfpm_build_scriptdir=$(pwd) + +source "$(dirname ${BASH_SOURCE[0]})/../share/sfpm/common.sh" +source "${sfpm_internal_include}/build.sh" + +# --- Functions + +cleanup() { + if [[ ${buildroot} == *${sfpm_tmpdir}* ]]; then + msg "Removing ${buildroot}" + rm -rf "${buildroot}" + fi + + if [[ $(sfpm_env_exists ${SFPM_MAKEPKG_ENV}) ]]; then + deactivate + sfpm_env_remove "${SFPM_MAKEPKG_ENV}" + fi +} +trap cleanup EXIT SIGINT SIGTERM + +# --- Main + +# Assimilate build definition +msg "Sourcing build script" +source ${1} + +# Sanity checks +msg "Validating build script" +sfpm_check_required_keys + +# Create buildroot +buildroot=$(sfpm_gen_buildroot) +root="${buildroot}/root" +pkgdir="${buildroot}/pkg" +srcdir="${buildroot}/src" + +mkdir -p "${root}" "${pkgdir}" "${srcdir}" + +# Generate temporary sfpm build environment +sfpm_env_create "${SFPM_MAKEPKG_ENV}" + +# Activate temporary sfpm build environment (provides ${SFPM_ENV}) +source ${sfpm_envdir}/${SFPM_MAKEPKG_ENV}/bin/activate + +# Setup compiler/linker flags +sfpm_build_cflags="-I${SFPM_ENV}/include ${sfpm_build_cflags}" +sfpm_build_ldflags="-L${SFPM_ENV}/lib ${sfpm_build_ldflags}" + +# Ensure local dependencies resolve during build +export LD_LIBRARY_PATH="${SFPM_ENV}/lib" + +msg "Executing tasks" +pushd "${root}" + sfpm_build_env_do_depends "${SFPM_MAKEPKG_ENV}" + sources_fetch + sfpm_sources_cmp_sha256 + sources_extract "${srcdir}" + prepare + build + check + package + sfpm_gen_packages +popd + |