Skip to content

Commit

Permalink
Merge pull request #7 from mariux64/versionless
Browse files Browse the repository at this point in the history
Implement versionless bee files
  • Loading branch information
donald committed Jul 5, 2016
2 parents 4bc583b + 1c259c4 commit 8f39962
Showing 1 changed file with 55 additions and 40 deletions.
95 changes: 55 additions & 40 deletions src/beesh.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ function check_rebuild() {
echo "${bf}"
done | ${BEESORT} | tail -1)

test -n "${beefile_max}" || exit 1
eval $(${BEEVERSION} ${beefile_max})
print_warning "cp ${beefile} ${PWD}/${PKGFULLNAME}-${PKGFULLVERSION}-$((PKGREVISION + 1)).bee"

Expand Down Expand Up @@ -191,8 +192,35 @@ function check_repositories() {
fi
}

function validate_pkg_complete() {
test -n "$PKGNAME" -a -n "$PKGVERSION" -a -n "$PKGREVISION" || return 1
return 0
}

function validate_pkg_complete_from_filename() {
test -n "$PKGNAME" -a "$PKGSUFFIX" = '.bee' || return 1
test "$PKGFULLVERSION" = '0' && return 0 # versionless. bla-0
test -n "$PKGVERSION" -a -n "$PKGREVISION" && return 0 # with version bla-1.2.3-55
return 1
}

###############################################################################
function build_in_sourcedir() {
B=${S}
BUILD_IN_SOURCEDIR=1
}

function bee_die() {
print_error $*
exit 1
}

function bee_version() {
test -n "$1" || bee_die "bee_version: missing argument"
test "$PKGFULLVERSION"="0" -a -z "$PKGREVISION" || bee_die "bee_version: version is already fixed"
local oPKGFULLNAME="$PKGFULLNAME"
eval $("${BEE_BINDIR}/beeversion" "$1" 2>/dev/null) || bee_die "bee_version: invalid version string"
validate_pkg_complete || bee_die "bee_version: please use the proper package versioning (e.g. package-1.0-0)"
test "$PKGFULLNAME" = "$oPKGFULLNAME" || bee_die "bee_version: not allowed to change the package name from $oPKGFULLNAME to $PKGFULLNAME"
}

function add_sourcesubdir() {
Expand Down Expand Up @@ -732,9 +760,8 @@ function save_current_package_variables() {
oPKGREVISION=${PKGREVISION}
}

function verify_new_package_variables() {
function extract_new_package_variables() {
nPKGFULLNAME="${PKGNAME}${PKGEXTRANAME:+_${PKGEXTRANAME}}"

if [ "${oPKGFULLNAME}" != "${PKGFULLNAME}" ] ; then
if [ "${oPKGFULLNAME}" != "${nPKGFULLNAME}" ] ; then
print_error "${BEE##*/}: Changing PKGFULLNAME and one of PKGNAME or PKGEXTRANAME is not supported."
Expand All @@ -751,10 +778,6 @@ function verify_new_package_variables() {

nPKGFULLVERSION="${PKGVERSION}${PKGEXTRAVERSION:+_${PKGEXTRAVERSION}}"
if [ "${oPKGFULLVERSION}" != "${PKGFULLVERSION}" ] ; then
if [ "${oPKGFULLVERSION}" != "${nPKGFULLVERSION}" ] ; then
print_error "${BEE##*/}: Changing PKGFULLVERSION and one of PKGVERSION or PKGEXTRAVERSION is not supported."
exit 1
fi
PKGVERSION=${PKGFULLVERSION//_*}
if [ "$PKGVERSION" = "$PKGFULLVERSION" ] ; then
PKGEXTRAVERSION=""
Expand All @@ -763,9 +786,7 @@ function verify_new_package_variables() {
fi
fi
PKGFULLVERSION="${PKGVERSION}${PKGEXTRAVERSION:+_${PKGEXTRAVERSION}}"
}

function extract_new_package_variables() {
if [ "${PKGNAME}" != "${oPKGNAME}" ] ; then
# pkgname changed! we allow prefixing 'anything-' to the packagename
if [ "${PKGNAME}" != "${PKGNAME/-${oPKGNAME}}-${oPKGNAME}" ] ; then
Expand All @@ -781,31 +802,15 @@ function extract_new_package_variables() {
fi
print_info "${COLOR_YELLOW}PKGEXTRANAME changed from '${oPKGEXTRANAME}' to '${PKGEXTRANAME}'"
fi
if [ "${PKGVERSION}" != "${oPKGVERSION}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGVERSION(${PKGVERSION}) detected. Changing PKGVERSION is not supported."
exit 1
fi
if [ "${PKGEXTRAVERSION}" != "${oPKGEXTRAVERSION}" ] ; then
if [ ! -z "${oPKGEXTRAVERSION}" -a "${PKGEXTRAVERSION}" != "${oPKGEXTRAVERSION}_${PKGEXTRAVERSION#${oPKGEXTRAVERSION}_}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGEXTRAVERSION(${PKGEXTRAVERSION}) detected. Only appending '_something' is supported."
exit 1
fi
print_info "${COLOR_YELLOW}PKGEXTRAVERSION changed from '${oPKGEXTRAVERSION}' to '${PKGEXTRAVERSION}'"
fi
if [ "${PKGREVISION}" != "${oPKGREVISION}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGREVISION(${PKGREVISION}) detected. Changing PKGREVISION is not supported."
exit 1
fi

PKGFULLPKG=${PKGFULLNAME}-${PKGFULLVERSION}-${PKGREVISION}

# since PKGARCH is now known reconstruct PKGALLPKG
: ${PKGALLPKG:=${PKGFULLPKG}.${PKGARCH}}

eval $("${BEE_BINDIR}/beeversion" "${PKGALLPKG}")
eval $("${BEE_BINDIR}/beeversion" "${PKGALLPKG}" 2>/dev/null)
}

###############################################################################
###############################################################################
###############################################################################

Expand Down Expand Up @@ -961,37 +966,42 @@ PKGNAME=
PKGVERSION=
PKGREVISION=

eval $("${BEE_BINDIR}/beeversion" "${BEE}")
eval $("${BEE_BINDIR}/beeversion" "${BEE}" 2>/dev/null)

if [ -z "${PKGNAME}" -o -z "${PKGVERSION}" -o -z "${PKGREVISION}" ] ; then
print_error "${BEE}: please use the proper package versioning (e.g. package-1.0-0)"
exit 1
fi

BEEPKGROOT="${BEE_TMP_BUILDROOT}/${PKGNAME}"
BEEWORKDIR="${BEEPKGROOT}/${PKGFULLPKG}"

F=${BEEPKGROOT}/files
S=${BEEWORKDIR}/source
B=${BEEWORKDIR}/build
D=${BEEWORKDIR}/image
validate_pkg_complete_from_filename || \
bee_die "filename $BEE is invalid. (valid examples: bla-0.bee bla-1.2.3-55.bee bla_lall_x-1.2.3.4_xxx-0.x86_64.bee)"

###############################################################################

# clear PKGALLPKG since we can't trust PKGARCH in this state
PKGALLPKG=

S='S_NOT_YET_DEFINED'
save_current_package_variables

# source file.bee
. "${BEE}"

if [ "$B" = 'S_NOT_YET_DEFINED' ] ; then
print_warning "${BEE}: setting \$B=\"\$S\" is deprecated. use build_in_sourcedir instead."
build_in_sourcedir
fi

# now set PKGARCH if set or changed by user via ARCH=.. and not given via file.arch.bee
: ${PKGARCH:=${ARCH}}

verify_new_package_variables
extract_new_package_variables

validate_pkg_complete || bee_die "if you start from a generic file ( package-0.bee ) you need to call bee_version from inside the bee file (e.g. bee_version package-1.0-0)"

BEEPKGROOT="${BEE_TMP_BUILDROOT}/${PKGNAME}"
BEEWORKDIR="${BEEPKGROOT}/${PKGFULLPKG}"

F=${BEEPKGROOT}/files
S=${BEEWORKDIR}/source
B=${BEEWORKDIR}/build
D=${BEEWORKDIR}/image

config_handle_deprecated_beefile
expand_prefix_variables
config_export
Expand Down Expand Up @@ -1053,6 +1063,11 @@ for t in "${bee_buildmagic[@]}" ; do
fi
done

if [ "$BUILD_IN_SOURCEDIR" ] ; then
print_info "BUILD_IN_SOURCEDIR requested"
B="$S"
fi

bee_init_buildinsourcedir

print_info "changing to build directory: ${B}"
Expand Down

0 comments on commit 8f39962

Please sign in to comment.