summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ergo/.SRCINFO27
-rw-r--r--ergo/.gitignore1
-rw-r--r--ergo/PKGBUILD78
-rw-r--r--ergo/ergo-paths.patch52
-rw-r--r--ergo/ergo.install24
-rw-r--r--ergo/ergo.service15
-rw-r--r--ergo/ergo.sysusers1
-rw-r--r--ergo/ergo.tmpfiles3
8 files changed, 201 insertions, 0 deletions
diff --git a/ergo/.SRCINFO b/ergo/.SRCINFO
new file mode 100644
index 0000000..00aacc7
--- /dev/null
+++ b/ergo/.SRCINFO
@@ -0,0 +1,27 @@
+pkgbase = ergo
+ pkgdesc = A modern IRC server written in Go
+ pkgver = 2.7.0
+ pkgrel = 3
+ url = https://github.com/ergochat/ergo
+ install = ergo.install
+ arch = x86_64
+ license = MIT
+ makedepends = go
+ makedepends = git
+ depends = glibc
+ provides = oragono
+ conflicts = oragono
+ replaces = oragono
+ backup = etc/ergo.conf
+ source = git+https://github.com/ergochat/ergo#tag=v2.7.0
+ source = ergo-paths.patch
+ source = ergo.service
+ source = ergo.sysusers
+ source = ergo.tmpfiles
+ sha256sums = SKIP
+ sha256sums = 824b6618d0377c50645ff75cf1f3ad903e217476738728bc57102fd26ca766c8
+ sha256sums = 366b7b10e44e9c0bbe2ee434b1011a9dc71fceb7836502db9a9e1c4400452d12
+ sha256sums = 1930c0e32093b32ff7c05fe8548c20a90846acea08b62aab3194c1be7240a756
+ sha256sums = 1bc9acdd7fc1fb8251a0165a19d6f4383069e522827535b9c1f717de5495cb29
+
+pkgname = ergo
diff --git a/ergo/.gitignore b/ergo/.gitignore
new file mode 100644
index 0000000..d63a801
--- /dev/null
+++ b/ergo/.gitignore
@@ -0,0 +1 @@
+/ergo/
diff --git a/ergo/PKGBUILD b/ergo/PKGBUILD
new file mode 100644
index 0000000..642a2e4
--- /dev/null
+++ b/ergo/PKGBUILD
@@ -0,0 +1,78 @@
+# Maintainer: Deposite Pirate <dpirate at metalpunks dot info>
+#
+# Upstream: https://git.metalpunks.info/arch-ports
+
+pkgname=ergo
+pkgver=2.7.0
+pkgrel=3
+pkgdesc="A modern IRC server written in Go"
+arch=('x86_64')
+url="https://github.com/ergochat/ergo"
+license=('MIT')
+install=ergo.install
+depends=('glibc')
+makedepends=('go' 'git')
+source=("git+$url#tag=v$pkgver"
+ "ergo-paths.patch"
+ "ergo.service"
+ "ergo.sysusers"
+ "ergo.tmpfiles")
+sha256sums=('SKIP'
+ '824b6618d0377c50645ff75cf1f3ad903e217476738728bc57102fd26ca766c8'
+ '366b7b10e44e9c0bbe2ee434b1011a9dc71fceb7836502db9a9e1c4400452d12'
+ '1930c0e32093b32ff7c05fe8548c20a90846acea08b62aab3194c1be7240a756'
+ '1bc9acdd7fc1fb8251a0165a19d6f4383069e522827535b9c1f717de5495cb29')
+backup=('etc/ergo.conf')
+replaces=('oragono')
+conflicts=('oragono')
+provides=('oragono')
+
+prepare() {
+ cd "${srcdir}/${pkgname}"
+
+ # Fix paths
+ patch -p1 -i ../ergo-paths.patch
+}
+
+build() {
+ export GOPATH=$(pwd)/..
+ cd "${srcdir}/${pkgname}"
+
+ GIT_COMMIT="$(git rev-parse HEAD 2> /dev/null)"
+
+ # flags from https://wiki.archlinux.org/index.php/Go_package_guidelines
+ # to address issues namcap warns about:
+ # ergo W: ELF file ('usr/bin/ergo') lacks FULL RELRO, check LDFLAGS.
+ # ergo W: ELF file ('usr/bin/ergo') lacks PIE.
+ # related: https://bugs.archlinux.org/task/60928
+ go build \
+ -trimpath \
+ -buildmode=pie \
+ -ldflags "-X main.commit=${GIT_COMMIT} -linkmode external -extldflags \"${LDFLAGS}\"" \
+ -v \
+ .
+
+ rm languages/README.md
+ rm -rf languages/example
+}
+
+check() {
+ export GOPATH=$(pwd)/..
+ cd "${srcdir}/${pkgname}"
+
+ go test ./...
+}
+
+package() {
+ install -Dm644 ergo.service "${pkgdir}/usr/lib/systemd/system/ergo.service"
+ install -Dm644 "${srcdir}/ergo.sysusers" "${pkgdir}/usr/lib/sysusers.d/ergo.conf"
+ install -Dm644 "${srcdir}/ergo.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/ergo.conf"
+
+ cd "${srcdir}/${pkgname}"
+ install -Dm755 -d "${pkgdir}/usr/share/${pkgname}/i18n"
+ cp languages/* "${pkgdir}/usr/share/${pkgname}/i18n/"
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ install -Dm755 ergo "${pkgdir}/usr/bin/ergo"
+ install -Dm644 default.yaml "${pkgdir}/etc/ergo.conf"
+ install -Dm644 ergo.motd "${pkgdir}/usr/share/${pkgname}/default.motd"
+}
diff --git a/ergo/ergo-paths.patch b/ergo/ergo-paths.patch
new file mode 100644
index 0000000..9d48e99
--- /dev/null
+++ b/ergo/ergo-paths.patch
@@ -0,0 +1,52 @@
+diff '--color=auto' -u -r -N ergo/default.yaml ergo-paths/default.yaml
+--- ergo/default.yaml 2021-09-30 19:59:44.761132327 +0200
++++ ergo-paths/default.yaml 2021-09-30 20:00:40.500799350 +0200
+@@ -52,8 +52,8 @@
+ # this is a standard TLS configuration with a single certificate;
+ # see the manual for instructions on how to configure SNI
+ tls:
+- cert: fullchain.pem
+- key: privkey.pem
++ cert: /var/lib/ergo/fullchain.pem
++ key: /var/lib/ergo/privkey.pem
+ # 'proxy' should typically be false. It's for cloud load balancers that
+ # always send a PROXY protocol header ahead of the connection. See the
+ # manual ("Reverse proxies") for more details.
+@@ -74,8 +74,8 @@
+ # ":8097":
+ # websocket: true
+ # tls:
+- # cert: fullchain.pem
+- # key: privkey.pem
++ # cert: /var/lib/ergo/fullchain.pem
++ # key: /var/lib/ergo/privkey.pem
+
+ # sets the permissions for Unix listen sockets. on a typical Linux system,
+ # the default is 0775 or 0755, which prevents other users/groups from connecting
+@@ -169,7 +169,7 @@
+
+ # motd filename
+ # if you change the motd, you should move it to ircd.motd
+- motd: ergo.motd
++ motd: /var/lib/ergo/ircd.motd
+
+ # motd formatting codes
+ # if this is true, the motd is escaped using formatting codes like $c, $b, and $i
+@@ -740,7 +740,7 @@
+ # datastore configuration
+ datastore:
+ # path to the datastore
+- path: ircd.db
++ path: /var/lib/ergo/ircd.db
+
+ # if the database schema requires an upgrade, `autoupgrade` will attempt to
+ # perform it automatically on startup. the database will be backed
+@@ -772,7 +772,7 @@
+ default: en
+
+ # which directory contains our language files
+- path: languages
++ path: /usr/share/ergo/i18n
+
+ # limits - these need to be the same across the network
+ limits:
diff --git a/ergo/ergo.install b/ergo/ergo.install
new file mode 100644
index 0000000..26c9ee9
--- /dev/null
+++ b/ergo/ergo.install
@@ -0,0 +1,24 @@
+# Warning: This file has syntactically significant, mixed whitespace.
+# The heredoc bodies are indented with tabs up to the block level.
+# The tabs are for block indentation in the source code.
+# The spaces following the tabs are for indentation of the printed output.
+
+post_install() {
+ if [[ -e /var/lib/oragono/ircd.db ]]; then
+cat <<-EOF
+ ==> Oragono is now Ergo, you may want to move the
+ files in /var/lib/oragono to /var/lib/ergo.
+EOF
+ else
+ if [[ ! -e /var/lib/ergo/ircd.db ]]; then
+cat <<-EOF
+ ==> Ergo needs to initialize the database and have
+ certificates made available prior to use.
+
+ cd /var/lib/ergo
+ sudo -u ergo /usr/bin/ergo mkcerts --config /etc/ergo.conf
+ sudo -u ergo /usr/bin/ergo initdb --config /etc/ergo.conf
+EOF
+ fi
+ fi
+}
diff --git a/ergo/ergo.service b/ergo/ergo.service
new file mode 100644
index 0000000..4a47d48
--- /dev/null
+++ b/ergo/ergo.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=A modern IRC server written in Go
+After=network.target
+
+[Service]
+Type=simple
+User=ergo
+Group=ergo
+WorkingDirectory=/var/lib/ergo
+ExecStart=/usr/bin/ergo run --conf /etc/ergo.conf
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/ergo/ergo.sysusers b/ergo/ergo.sysusers
new file mode 100644
index 0000000..96a6928
--- /dev/null
+++ b/ergo/ergo.sysusers
@@ -0,0 +1 @@
+u ergo - "Ergo IRC daemon" /var/lib/ergo
diff --git a/ergo/ergo.tmpfiles b/ergo/ergo.tmpfiles
new file mode 100644
index 0000000..d56af93
--- /dev/null
+++ b/ergo/ergo.tmpfiles
@@ -0,0 +1,3 @@
+#Type Path Mode User Group Age Argument
+d /var/lib/ergo 0755 ergo ergo - -
+C /var/lib/ergo/ircd.motd 0644 ergo ergo - /usr/share/ergo/default.motd