From 41d2d201ac7463c0cf9478a74c64e5f790d578a9 Mon Sep 17 00:00:00 2001 From: David Newhall II Date: Thu, 30 May 2019 20:25:48 -0700 Subject: [PATCH] Build osx package too. --- .gitignore | 1 + Makefile | 38 ++++++++++-------- init/systemd/unifi-poller.service | 1 - ...ld_packages.sh => build_linux_packages.sh} | 20 ++++++---- scripts/build_osx_package.sh | 39 +++++++++++++++++++ 5 files changed, 75 insertions(+), 24 deletions(-) rename scripts/{build_packages.sh => build_linux_packages.sh} (60%) create mode 100755 scripts/build_osx_package.sh diff --git a/.gitignore b/.gitignore index 9e41de53..a8c71744 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /*.1 /*.deb /*.rpm +/*.pkg /vendor .DS_Store *~ diff --git a/Makefile b/Makefile index 48149a89..0b560e33 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/init/systemd/unifi-poller.service b/init/systemd/unifi-poller.service index 4576bae8..ba7d1bd7 100644 --- a/init/systemd/unifi-poller.service +++ b/init/systemd/unifi-poller.service @@ -1,4 +1,3 @@ -# untested, feedback welcomed. [Unit] Description=Unifi Poller - Ubiquiti Metrics->InfluxDB After=network.target diff --git a/scripts/build_packages.sh b/scripts/build_linux_packages.sh similarity index 60% rename from scripts/build_packages.sh rename to scripts/build_linux_packages.sh index 9cfaa52a..18147867 100755 --- a/scripts/build_packages.sh +++ b/scripts/build_linux_packages.sh @@ -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 diff --git a/scripts/build_osx_package.sh b/scripts/build_osx_package.sh new file mode 100755 index 00000000..adcbb562 --- /dev/null +++ b/scripts/build_osx_package.sh @@ -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