diff options
author | Daniel Bermond | 2017-08-27 10:53:01 -0300 |
---|---|---|
committer | Daniel Bermond | 2017-08-27 10:53:01 -0300 |
commit | a321b49561e433974aec6a4bf422f9769edf1e93 (patch) | |
tree | 60d0a667a1168cbd5a5765ea81cbdc1575fc37c0 /PKGBUILD | |
parent | 8d7bb2865ce2bb0e44579b7d4eea5abaab0997bb (diff) | |
download | aur-a321b49561e433974aec6a4bf422f9769edf1e93.tar.gz |
Simplified version check
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 222 |
1 files changed, 32 insertions, 190 deletions
@@ -1,28 +1,13 @@ # Maintainer: Daniel Bermond < yahoo-com: danielbermond > -# NOTE (1): -# This package has many git sources, being mupen64plus-core the main one and -# thus responsible for the first (and traditional) part of $pkgver. Due to -# this, $pkgver has an additional field in the format 'YYYMMDD.HHMMSS' which +# NOTE: +# The additional field in $pkgver is in the format 'YYYMMDD.HHMMSS', which # is the the date (in UTC time) of the last git commit from all git sources. -# This additional field allows to reflect an update in a non-main git source -# when the main git source remains without any updates. - -# NOTE (2): -# A file named 'versions' in $srcdir is used to store the last builded versions -# and the date of the last upstream git commit for each one of the git sources. - -# NOTE (3): -# When updating this package with makepkg (by retaining the sources on disk), -# only the needed sources will be rebuilded (only the ones that got new -# upstream git commits). To determine which git sources should be rebuilded, -# it's made comparisons between the time of the last upstream git commit that -# is stored in the 'versions' file with the updated time of the last upstream -# git commit that is retrieved at makepkg runtime. Using makepkg -f/--force -# option will force the rebuild of all git sources. +# This additional field allows to trigger an upgrade in the package when any +# mupen64plus component receives a new commit. pkgname=mupen64plus-git -pkgver=2.5.r462.ga0672bb.20170813.001839 +pkgver=2.5.r477.g138625a.20170819.230455 pkgrel=1 pkgdesc='Nintendo64 Emulator (git version)' arch=('i686' 'x86_64') @@ -39,8 +24,7 @@ source=('git+https://github.com/mupen64plus/mupen64plus-core.git' 'git+https://github.com/mupen64plus/mupen64plus-video-glide64mk2.git' 'git+https://github.com/mupen64plus/mupen64plus-audio-sdl.git' 'git+https://github.com/mupen64plus/mupen64plus-input-sdl.git' - 'git+https://github.com/mupen64plus/mupen64plus-ui-console.git' -) + 'git+https://github.com/mupen64plus/mupen64plus-ui-console.git') sha256sums=('SKIP' 'SKIP' 'SKIP' @@ -48,190 +32,48 @@ sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP') - -# get component version from git repository -# arguments: none -_get_version() { - git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g' -} - -# get the date of last git commit in format 'YYYMMDD.HHMMSS' (UTC time) -# arguments: none -_get_commit_date() { - TZ='UTC' date -d "$(git log -1 --date='short' --pretty='format:%ci')" '+%Y%m%d.%H%M%S' -} +_m64p_components='core rsp-hle video-rice video-glide64mk2 audio-sdl input-sdl ui-console' prepare() { - # create file to hold component versions ("${srcdir}/versions") - if ! [ -f "${srcdir}/versions" ] - then - printf '%s\n\n' '# Mupen64Plus component versions' >"${srcdir}/versions" - cd "${srcdir}/mupen64plus-core" - printf '%s\n' '_prev_ver_core=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_core=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-rsp-hle" - printf '%s\n' '_prev_ver_rsphle=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_rsphle=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-video-rice" - printf '%s\n' '_prev_ver_videorice=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_videorice=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-video-glide64mk2" - printf '%s\n' '_prev_ver_videoglide64mk2=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_videoglide64mk2=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-audio-sdl" - printf '%s\n' '_prev_ver_audiosdl=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_audiosdl=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-input-sdl" - printf '%s\n' '_prev_ver_inputsdl=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_inputsdl=' >>"${srcdir}/versions" - cd "${srcdir}/mupen64plus-ui-console" - printf '%s\n' '_prev_ver_uiconsole=' >>"${srcdir}/versions" - printf '%s\n\n' '_prev_date_uiconsole=' >>"${srcdir}/versions" - fi - - # load versions that are stored in file "${srcdir}/versions" (previous versions and dates) - source "${srcdir}/versions" - - # get current version and date of last git commit for each component (current versions and dates) - cd "${srcdir}/mupen64plus-core" - _curr_ver_core="$(_get_version)" - _curr_date_core="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-rsp-hle" - _curr_ver_rsphle="$(_get_version)" - _curr_date_rsphle="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-video-rice" - _curr_ver_videorice="$(_get_version)" - _curr_date_videorice="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-video-glide64mk2" - _curr_ver_videoglide64mk2="$(_get_version)" - _curr_date_videoglide64mk2="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-audio-sdl" - _curr_ver_audiosdl="$(_get_version)" - _curr_date_audiosdl="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-input-sdl" - _curr_ver_inputsdl="$(_get_version)" - _curr_date_inputsdl="$(_get_commit_date)" - cd "${srcdir}/mupen64plus-ui-console" - _curr_ver_uiconsole="$(_get_version)" - _curr_date_uiconsole="$(_get_commit_date)" - - # get the most recent git commit date from updated git repositories - _curr_latest_commit="$(printf '%s\n' "$_curr_date_core" \ - "$_curr_date_rsphle" \ - "$_curr_date_videorice" \ - "$_curr_date_videoglide64mk2" \ - "$_curr_date_audiosdl" \ - "$_curr_date_inputsdl" \ - "$_curr_date_uiconsole" | sort -r | head -n1)" - - # extract install script - cd "$srcdir" + # extract install script and remove unecessary 'source' directory references from it bsdtar -xf "${srcdir}/mupen64plus-core/tools/m64p_helper_scripts.tar.gz" m64p_install.sh - sed -i 's/source\///g' m64p_install.sh # remove unecessary 'source' directory references + sed -i 's/source\///g' m64p_install.sh } pkgver() { - # git, tags available + local _date='' + local _latest_date='' + + for _component in $_m64p_components + do + cd "${srcdir}/mupen64plus-${_component}" + _date="$(TZ='UTC' date -d "$(git log -1 --date='short' --pretty='format:%ci')" '+%Y%m%d.%H%M%S')" + [ "$(vercmp "$_date" "$_latest_date")" -gt '0' ] && _latest_date="$_date" + done + + unset _component + cd "${srcdir}/mupen64plus-core" - printf "%s.${_curr_latest_commit}\n" "$(git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g')" + printf "%s.${_latest_date}\n" "$(git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//')" + } build() { - _m64p_components='core rsp-hle video-rice video-glide64mk2 audio-sdl input-sdl ui-console' - - if [ "$FORCE" = '1' ] # FORCE=1 is makepkg -f/--force option - then - msg 'Forcing the build of all components...' - else - msg 'Building only components that were updated...' - fi - - # loop through each component and build them if necessary for _component in $_m64p_components do - _update_component='false' - - # make initial steps before building - case "$_component" in - core) - _component_name='core' - _component_type='library' - _previous_version="$_prev_ver_core" - _current_version="$_curr_ver_core" - _current_date="$_curr_date_core" - ;; - rsp-hle) - _component_name='rsphle' - _component_type='plugin' - _previous_version="$_prev_ver_rsphle" - _current_version="$_curr_ver_rsphle" - _current_date="$_curr_date_rsphle" - ;; - video-rice) - _component_name='videorice' - _component_type='plugin' - _previous_version="$_prev_ver_videorice" - _current_version="$_curr_ver_videorice" - _current_date="$_curr_date_videorice" - ;; - video-glide64mk2) - _component_name='videoglide64mk2' - _component_type='plugin' - _previous_version="$_prev_ver_videoglide64mk2" - _current_version="$_curr_ver_videoglide64mk2" - _current_date="$_curr_date_videoglide64mk2" - ;; - audio-sdl) - _component_name='audiosdl' - _component_type='plugin' - _previous_version="$_prev_ver_audiosdl" - _current_version="$_curr_ver_audiosdl" - _current_date="$_curr_date_audiosdl" - ;; - input-sdl) - _component_name='inputsdl' - _component_type='plugin' - _previous_version="$_prev_ver_inputsdl" - _current_version="$_curr_ver_inputsdl" - _current_date="$_curr_date_inputsdl" - ;; - ui-console) - _component_name='uiconsole' - _component_type='front-end' - _previous_version="$_prev_ver_uiconsole" - _current_version="$_curr_ver_uiconsole" - _current_date="$_curr_date_uiconsole" - - # fix for 'ui-console' component (it needs to be compiled with -fPIC) - _target_line="$(sed -n '/^ifeq ($(OS), LINUX)/=' "mupen64plus-${_component}/projects/unix/Makefile")" - sed -i "$((_target_line + 1))i\ \CFLAGS += -fPIC" "mupen64plus-${_component}/projects/unix/Makefile" - - ;; - *) - printf '%s\n' "error: invalid component '${_component}' (this should not happen!)" - exit 1 - ;; - esac - - # build component if necessary - if [ "$(vercmp "$_current_version" "$_previous_version")" -gt '0' ] || - [ "$FORCE" = '1' ] # FORCE=1 is makepkg -f/--force option + # fix for 'ui-console' component (it needs to be compiled with -fPIC) + if [ "$_component" = 'ui-console' ] then - [ "$_previous_version" = '' ] && _previous_version='none builded' # don't show a blank version - msg2 "Building ${_component} ${_component_type}..." - msg2 " previous version: ${_previous_version}" - msg2 " current version: ${_current_version}" - make -C "mupen64plus-${_component}/projects/unix" clean $@ - make -C "mupen64plus-${_component}/projects/unix" all $@ - else - msg2 "Component ${_component} ${_component_type} is already up-to-date..." - printf '%s\n' " current version: ${_current_version}" + _target_line="$(sed -n '/^ifeq ($(OS), LINUX)/=' "mupen64plus-${_component}/projects/unix/Makefile")" + sed -i "$((_target_line + 1))i\ \CFLAGS += -fPIC" "mupen64plus-${_component}/projects/unix/Makefile" fi - # update "${srcdir}/versions" file with current versions and latest git commit dates - sed -i "s/^\(_prev_ver_${_component_name}=\).*$/\1$(printf '%s' "$_current_version" | sed 's/\./\\\./g')/" "${srcdir}/versions" - sed -i "s/^\(_prev_date_${_component_name}=\).*$/\1$(printf '%s' "$_current_date" | sed 's/\./\\\./g')/" "${srcdir}/versions" + msg2 "Building component '${_component}'..." + make -C "mupen64plus-${_component}/projects/unix" clean $@ + make -C "mupen64plus-${_component}/projects/unix" all $@ done + + unset _component } package() { |