Skip to content

Instantly share code, notes, and snippets.

@gardar
Last active Sep 11, 2017
Embed
What would you like to do?
lifx-firmware-update
#!/usr/bin/bash
# Maintainer: Andy Pieters Email address: http://www.google.com/recaptcha/mailhide/d?k=01Ki1c9JXzChsLtix5Bxu-qw==&c=1kofqD_jhDD8xD-SsJCk3-8DptvHUrc2qB4YPUWwBk4=
pkgname=("lifx-firmware-update" "libotav1" "libotav2" )
__lifx_firmware_version="2.10.0"
__lifx_firmware_release="1.22"
pkgver="${__lifx_firmware_version}"
pkgrel=1
pkgdesc="Firmware updater for Lifx light bulbs"
arch=(x86_64)
url="http://www.lifx.com/pages/updates"
license=("custom:unknown")
depends=(qt5-base)
makedepends=('bash>=4')
source=(
"https://hosted.lifx.co/firmware-updater/v1.22/lifx-firmware-update-v${__lifx_firmware_release^}.deb"
CHANGELOG
LICENSE
)
sha512sums=('9aa82a57c9e5348da3841c8519008343ea966fa920a1d609237e27f665ef0213883249e419b417f37476a48a1030c3e9b37290b2ff0c60aaf03a0e4265e35db4'
'ad918e2da0f20c577bf1b5b6abb797df58c38da3e39ead6745cab36fd6312e2984fdd38213806f07a9ac9c84e017b17e19f5b6154f47ebaeb6baecb337c4a5f8'
'04f404a850a3b839feaa8b5590043bd9d7442ac354a2060045943005de5dfc5e7f706835beef68d08aae1a007841e1342190352c3c8e4f7b3c1d51703d8c504a')
prepare() {
cd "${srcdir}"
bsdtar -xf data.tar.xz
# fix the desktop file
sed -i -e 's#/usr/local/#/usr/#g' \
-e 's#share/lifx#share/applications#g' \
-e 's#\.run##g' \
"${srcdir}/usr/local/share/lifx/lifx-firmware-update.desktop"
}
package_lifx-firmware-update() {
depends=(libotav1 libotav2)
provides=("lifx-firmware-update")
replaces=("lifx-firmware-info")
install="lifx-firmware-update.install"
changelog=CHANGELOG
mkdir -p "${pkgdir}"
lifx_firmware_install_license # install license
# alternatively to hard-coding this list, we could extract the
# control.tar.gz file, then get the file list by using the 2nd
# column of the md5sums file, e.g. :
# __lifx_firmware_update_file_array=($( awk '{print $2}' < md5sums))
lifx_firmware_install \
usr/local/bin/lifx-firmware-update \
usr/local/bin/lifx-firmware-update.run \
usr/local/share/lifx/lifx-firmware-update.desktop \
usr/local/share/lifx/lifx-firmware-update.png \
usr/share/doc/lifx-firmware-update/changelog.gz
}
package_libotav1() {
provides=(libotav1)
pkgdesc="Support library for Lifx-firmware-updater"
mkdir -p "${pkgdir}"
lifx_firmware_install_license
lifx_firmware_install usr/local/lib/libotav1.so
# we can manually remove the local part here since the file need not be
# copied from the source
lifx_firmware_add_links usr/lib/libotav1.so libotav1.so.1{,.0{,.0}}
}
package_libotav2() {
provides=(libotav2)
pkgdesc="Support library for Lifx-firmware-updater"
lifx_firmware_install_license
lifx_firmware_install usr/local/lib/libotav2.so
lifx_firmware_add_links usr/lib/libotav2.so libotav2.so.1{,.0{,.0}}
}
# expects a list of files to install. each file needs to be a full or relative reference
# a /local/ part of the path will be removed to find the target file name
# careful if a file contains a space, it may be necessary to adjust things a bit
lifx_firmware_install() {
while [[ 0 -lt $# ]]; do
if [ -n "$1" ]; then
local strFile="$1"
# we need to do 2 transformations: any 'local' part has to be
# removed from the destination, and,
# usr/share/lifx needs replacing with /usr/share/applications
strTarget="${strFile/\/local}" # replace the local/ with naught, and
strTarget="${strTarget/usr\/share\/lifx/usr\/share\/applications}" # adjust directory for icon and menu-entry
# install the files
install -D --no-target-directory --owner root --group root \
--mode 0555 --preserve-timestamps "${srcdir}/${strFile}" \
"${pkgdir}/${strTarget}"
fi
shift
done
}
lifx_firmware_add_links() {
if [ 2 -le $# ]; then
local strLinkTarget="${pkgdir}/$1"
local strLinkTargetDir="$(dirname "${strLinkTarget}")"
# check that this file is already "installed"
if [ -e "${strLinkTarget}" ]; then
shift
while [[ 0 -lt $# ]]; do
if [ -n "$1" ]; then
ln -sr "${strLinkTarget}" "${strLinkTargetDir}/$1"
else
error "BUG: lifx_firmware_add_links called with empty parameter"
exit 1
fi
shift
done
else
error "BUG: Cannot create symbolic link to ${strLinkTarget} ; file not found in staging directory"
exit 1
fi
else
error "BUG: lifx_firmware_add_links must be called with at least 2 parameters"
exit 1
fi
}
lifx_firmware_install_license() {
install -D --no-target-directory --owner root --group root \
--mode 0555 "${srcdir}/LICENSE" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment