diff options
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | .gitignore | 10 | ||||
-rw-r--r-- | PKGBUILD | 74 | ||||
-rw-r--r-- | journey.install | 41 | ||||
-rw-r--r-- | journey.service | 10 |
5 files changed, 163 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 00000000000..ffac53f1201 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,28 @@ +# Generated by mksrcinfo v8 +# Mon Jan 25 10:04:12 UTC 2016 +pkgbase = journey-git + pkgdesc = Ghost-compatible blogging platform written in golang + pkgver = 0.1.9.r53.g4ea1480 + pkgrel = 1 + url = https://kabukky.github.io/journey/ + install = journey.install + arch = i686 + arch = x86_64 + license = MIT + makedepends = go + provides = journey + conflicts = journey + conflicts = journey-bin + options = emptydirs + backup = opt/journey/config.json + source = journey-git::git+https://github.com/kabukky/journey/#branch=development + source = promenade.zip::https://github.com/kabukky/promenade/archive/59388206534e37aeabdbf672ea1a8e1cf93ee09f.zip + source = journey.service + source = journey.install + sha256sums = SKIP + sha256sums = 2597207a112f69ec0de94bef063681a6d2f3920fff02c2117e5ccf392a4a1ca4 + sha256sums = 71ff0fd4afd25bcc9e91fe2f9d9f9b8dd89884081e05c93bbd5f3c4c84b71428 + sha256sums = 20b809dbe7553acbd940c6bd0a83b6b529d3ebc8fa5c4ac20ae74c1bb7c6b22c + +pkgname = journey-git + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..44e140d4303 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Downloads packages +/journey-git +/*.tar.gz +/*.zip +# Built packages +/*.tar.xz + +# Temporary build directories +/src +/pkg diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 00000000000..4bd7aff8e5b --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,74 @@ +# Maintainer: Jonathan Wright <jon@than.io> +pkgname=journey-git +pkgver=0.1.9.r53.g4ea1480 +pkgrel=1 +pkgdesc='Ghost-compatible blogging platform written in golang' +url='https://kabukky.github.io/journey/' + +arch=('i686' 'x86_64') +makedepends=('go') +conflicts=('journey' 'journey-bin') +provides=("${pkgname%-git}") +license=('MIT') + +options=('emptydirs') +backup=('opt/journey/config.json') +install='journey.install' + +_srcpath='src/github.com/kabukky/journey' +_promenade_sha='59388206534e37aeabdbf672ea1a8e1cf93ee09f' + +source=("${pkgname}::git+https://github.com/kabukky/journey/#branch=development" + "promenade.zip::https://github.com/kabukky/promenade/archive/${_promenade_sha}.zip" + 'journey.service' + 'journey.install') +sha256sums=('SKIP' + '2597207a112f69ec0de94bef063681a6d2f3920fff02c2117e5ccf392a4a1ca4' + '71ff0fd4afd25bcc9e91fe2f9d9f9b8dd89884081e05c93bbd5f3c4c84b71428' + '20b809dbe7553acbd940c6bd0a83b6b529d3ebc8fa5c4ac20ae74c1bb7c6b22c') + +pkgver () { + cd "${pkgname}" + ( set -o pipefail + git describe --long --tags 2>/dev/null | sed -e 's/^v//' -e 's/\([^-]*-g\)/r\1/;s/-/./g' || + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + ) +} + +prepare () { + if [[ ! -r ${srcdir}/${_srcpath} ]] ; then + mkdir -p ${srcdir}/$(dirname ${_srcpath}) + ln -s ${srcdir}/${pkgname} ${srcdir}/${_srcpath} + fi +} + +build () { + export GOPATH="${srcdir}" + cd ${srcdir}/${_srcpath} + msg2 "Generating..." + go generate ./... + msg2 "Fetching..." + go get -v ./... + msg2 "Building..." + go build -v -o ${srcdir}/${pkgname}/journey + msg2 "Extracting Promenade..." + unzip -qu ${srcdir}/promenade.zip -d ${srcdir} + cp -ar ${srcdir}/promenade-${_promenade_sha}/* ${srcdir}/${pkgname}/content/themes/promenade/ +} + +package() { + cd ${srcdir}/${pkgname} + + # Binary, configuration, and service Unit file + install -Dm755 journey ${pkgdir}/opt/journey/journey + install -Dm644 config.json ${pkgdir}/opt/journey/config.json + install -Dm644 ${srcdir}/journey.service ${pkgdir}/usr/lib/systemd/system/journey.service + # Licence + install -Dm644 LICENSE.md ${pkgdir}/usr/share/licences/${pkgname}/LICENSE.md + # Private files for journey's Admin area and the persistant data for the blog + cp -ar built-in ${pkgdir}/opt/journey/ + cp -ar content ${pkgdir}/opt/journey/ + # Make sure there is absolutly no way the SQLite database can ever make it + # into the package and overwrite the local copy during upgrade + rm -f ${pkgdir}/opt/journey/content/data/journey.db +} diff --git a/journey.install b/journey.install new file mode 100644 index 00000000000..f749fd2b61e --- /dev/null +++ b/journey.install @@ -0,0 +1,41 @@ +pre_install() { + # Create a system user for journey to run under + if [[ ! $(id journey 2>/dev/null) ]]; then + /usr/bin/useradd -r -d /usr/lib/journey -s /usr/bin/bash -U -G http journey + fi +} + +post_install() { + # Fix ownership of files and directories + if [[ $(id journey 2>/dev/null) ]]; then + chown -R journey:journey /opt/journey + fi + # Reload to daemon to make sure it finds the service file + systemctl daemon-reload +} + +pre_upgrade() { + pre_install +} + +post_upgrade() { + # Reload systemd for the new/updated service file and restart the service if + # it is already running on the system + systemctl daemon-reload + systemctl condrestart journey.service +} + +pre_remove() { + # Stop the service regardless if it is running + systemctl stop journey.service +} + +post_remove() { + # Remove the user and group + if [[ ! $(id journey 2>/dev/null) ]]; then + userdel journey + groupdel journey + fi + # Reload systemd for the removed service file + systemctl daemon-reload +} diff --git a/journey.service b/journey.service new file mode 100644 index 00000000000..ed8ee2862ab --- /dev/null +++ b/journey.service @@ -0,0 +1,10 @@ +[Unit] +Description=Journey Blogging Platform +After=network.target + +[Service] +User=journey +ExecStart=/opt/journey/journey + +[Install] +WantedBy=multi-user.target |