Build osx package too.

This commit is contained in:
David Newhall II 2019-05-30 20:25:48 -07:00
parent da5d7163cb
commit 41d2d201ac
5 changed files with 75 additions and 24 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
/*.1
/*.deb
/*.rpm
/*.pkg
/vendor
.DS_Store
*~

View File

@ -5,7 +5,7 @@ all: clean test man build
clean:
for p in $(PACKAGES); do rm -f `echo $${p}|cut -d/ -f3`{,.1,.1.gz}; done
rm -rf build unifi-poller_*.deb unifi-poller-*.rpm
rm -rf build unifi-poller_*.deb unifi-poller-*.rpm unifi-poller-*.pkg
build:
for p in $(PACKAGES); do go build -ldflags "-w -s" $${p}; done
@ -13,9 +13,30 @@ build:
linux:
for p in $(PACKAGES); do GOOS=linux go build -ldflags "-w -s" $${p}; done
darwin:
for p in $(PACKAGES); do GOOS=darwin go build -ldflags "-w -s" $${p}; done
test: lint
for p in $(PACKAGES) $(LIBRARYS); do go test -race -covermode=atomic $${p}; done
man:
scripts/build_manpages.sh ./
rpm: clean test man linux
scripts/build_linux_packages.sh rpm
deb: clean test man linux
scripts/build_linux_packages.sh deb
osxpkg: clean test man darwin
scripts/build_osx_package.sh
install: all
scripts/local_install.sh
uninstall:
scripts/local_uninstall.sh
lint:
goimports -l $(PACKAGES)
gofmt -l $(PACKAGES)
@ -25,18 +46,3 @@ lint:
deps:
dep ensure -update
man:
scripts/build_manpages.sh ./
rpm: all
scripts/build_packages.sh rpm
deb: all
scripts/build_packages.sh deb
install: all
scripts/local_install.sh
uninstall:
scripts/local_uninstall.sh

View File

@ -1,4 +1,3 @@
# untested, feedback welcomed.
[Unit]
Description=Unifi Poller - Ubiquiti Metrics->InfluxDB
After=network.target

View File

@ -20,20 +20,26 @@ fi
echo "Building '${OUTPUT}' package."
PREFIX=
BINFIX=/usr
# Make a build environment.
mkdir -p package_build/usr/bin package_build/etc/${BINARY} package_build/lib/systemd/system package_build/usr/share/man/man1
rm -rf package_build
mkdir -p package_build${BINFIX}/bin package_build${PREFIX}/etc/${BINARY} package_build${BINFIX}/share/man/man1
# Copy the binary, config file and man page into the env.
cp ${BINARY} package_build/usr/bin
cp *.1.gz package_build/usr/share/man/man1
cp examples/up.conf.example package_build/etc/${BINARY}/up.conf
cp ${BINARY} package_build${BINFIX}/bin
cp *.1.gz package_build${BINFIX}/share/man/man1
cp examples/up.conf.example package_build${PREFIX}/etc/${BINARY}/up.conf
# Fix the paths in the systemd unit file before copying it into the emv.
sed "s#ExecStart.*#ExecStart=/usr/bin/${BINARY} --config=/etc/${BINARY}/up.conf#" \
mkdir -p package_build/lib/systemd/system
sed "s#ExecStart.*#ExecStart=${BINFIX}/bin/${BINARY} --config=${PREFIX}/etc/${BINARY}/up.conf#" \
init/systemd/unifi-poller.service > package_build/lib/systemd/system/${BINARY}.service
fpm -s dir -t ${OUTPUT} \
-n ${BINARY} \
-v ${VERSION} \
--name ${BINARY} \
--version ${VERSION} \
--after-install scripts/after-install.sh \
--before-remove scripts/before-remove.sh \
-C package_build

39
scripts/build_osx_package.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# This script builds a simple macos Installer pkg. Run by the Makefile.
# Use: `make osx`
OUTPUT=$1
BINARY=unifi-poller
VERSION=$(git tag -l --merged | tail -n1 | tr -d v)
fpm -h > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo "fpm missing. Install fpm: https://fpm.readthedocs.io/en/latest/installing.html"
exit 1
fi
echo "Building 'osxpkg' package."
PREFIX=/usr/local
BINFIX=/usr/local
# Make a build environment.
rm -rf package_build
mkdir -p package_build${BINFIX}/bin package_build${PREFIX}/etc/${BINARY} package_build${BINFIX}/share/man/man1
# Copy the binary, config file and man page into the env.
cp ${BINARY} package_build${BINFIX}/bin
cp *.1.gz package_build${BINFIX}/share/man/man1
cp examples/up.conf.example package_build${PREFIX}/etc/${BINARY}/up.conf
# Copy in launch agent.
mkdir -p package_build/Library/LaunchAgents
cp init/launchd/com.github.davidnewhall.unifi-poller.plist package_build/Library/LaunchAgents/
# Make a package.
fpm -s dir -t osxpkg \
--name ${BINARY} \
--version ${VERSION} \
--osxpkg-identifier-prefix com.github.davidnewhall \
-C package_build