mirror of https://github.com/veonik/squirssi
parent
1384397182
commit
606091d506
|
@ -0,0 +1,4 @@
|
|||
out/
|
||||
vendor/
|
||||
config.toml
|
||||
Dockerfile
|
|
@ -0,0 +1,35 @@
|
|||
FROM veonik/squirssi:build-amd64 AS build
|
||||
|
||||
|
||||
FROM debian:buster-slim
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y ca-certificates curl gnupg && \
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y yarn
|
||||
|
||||
COPY config.toml.dist /home/squirssi/.squirssi/config.toml
|
||||
|
||||
COPY package.json /home/squirssi/.squirssi/scripts/package.json
|
||||
|
||||
RUN cd /home/squirssi/.squirssi/scripts && \
|
||||
yarn install
|
||||
|
||||
COPY --from=build /squirssi/out/squirssi_linux_amd64 /bin/squirssi
|
||||
|
||||
COPY --from=build /squirssi/out/*.so /squirssi/plugins/
|
||||
|
||||
RUN cd /squirssi/plugins && \
|
||||
for f in `ls`; do ln -sf $f `echo $f | sed -e 's/_linux_amd64//'`; done
|
||||
|
||||
RUN useradd -d /home/squirssi squirssi && \
|
||||
chown -R squirssi: /home/squirssi /squirssi
|
||||
|
||||
USER squirssi
|
||||
|
||||
WORKDIR /squirssi
|
||||
|
||||
CMD /bin/squirssi
|
|
@ -0,0 +1,30 @@
|
|||
FROM golang:buster AS build
|
||||
|
||||
ARG race
|
||||
ARG goarch
|
||||
ARG goarm
|
||||
|
||||
WORKDIR /squirssi
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN go get -v ./...
|
||||
|
||||
RUN export SQUIRCY3_REVISION=$(cat go.mod | grep squircy3 | cut -d' ' -f2 | cut -d'-' -f3) && \
|
||||
git clone https://github.com/veonik/squircy3 ../squircy3 && \
|
||||
cd ../squircy3 && \
|
||||
git checkout $SQUIRCY3_REVISION
|
||||
|
||||
RUN apt-get update && \
|
||||
if [ "${goarch}" = "arm" ]; then \
|
||||
apt-get install -y gcc-arm-linux-gnueabihf; \
|
||||
elif [ "${goarch}" = "arm64" ]; then \
|
||||
apt-get install -y gcc-aarch64-linux-gnu; \
|
||||
fi;
|
||||
|
||||
RUN if [ "${goarch}" = "arm" ]; then \
|
||||
CC=arm-linux-gnueabihf-gcc; \
|
||||
elif [ "${goarch}" = "arm64" ]; then \
|
||||
CC=aarch64-linux-gnu-gcc; \
|
||||
fi; \
|
||||
make clean dist RACE=${race} GOARCH=${goarch} GOARM=${goarm} CC=$CC
|
52
Makefile
52
Makefile
|
@ -1,20 +1,37 @@
|
|||
# Makefile for squirssi, a proper IRC client.
|
||||
# https://code.dopame.me/veonik/squirssi
|
||||
|
||||
SUBPACKAGES := colors
|
||||
SUBPACKAGES := colors widget
|
||||
|
||||
# To build squircy3 plugins for squirssi, it's necessary to compile them all
|
||||
# together along with squirssi to avoid dependency mismatches during the plugin
|
||||
# loading process.
|
||||
# This Makefile copies the plugin sources to within this Go module so that the
|
||||
# Go tool will happily compile them into standalone shared libraries.
|
||||
SQUIRCY3_ROOT ?= ../squircy3
|
||||
PLUGINS := $(patsubst $(SQUIRCY3_ROOT)/plugins/%,%,$(wildcard $(SQUIRCY3_ROOT)/plugins/*))
|
||||
|
||||
SOURCES := $(wildcard *.go) $(wildcard cmd/*/*.go) $(wildcard $(patsubst %,%/*.go,$(SUBPACKAGES))) $(shell find vendor/ -type f -name '*.go' 2> /dev/null)
|
||||
|
||||
OUTPUT_BASE := out
|
||||
|
||||
PLUGIN_TARGETS := $(patsubst %,$(OUTPUT_BASE)/%.so,$(PLUGINS))
|
||||
SQUIRSSI_TARGET := $(OUTPUT_BASE)/squirssi
|
||||
|
||||
RACE ?= -race
|
||||
RACE ?= -race
|
||||
TEST_ARGS ?= -count 1
|
||||
|
||||
GOOS ?= $(shell go env GOOS)
|
||||
GOARCH ?= $(shell go env GOARCH)
|
||||
GOARM ?= $(shell go env GOARM)
|
||||
CC ?= $(shell go env CC)
|
||||
|
||||
PLUGIN_TARGETS := $(patsubst %,$(OUTPUT_BASE)/%.so,$(PLUGINS))
|
||||
SQUIRSSI_TARGET := $(OUTPUT_BASE)/squirssi
|
||||
SQUIRSSI_DIST := $(OUTPUT_BASE)/squirssi_$(GOOS)_$(GOARCH)$(GOARM)
|
||||
PLUGIN_DIST := $(patsubst %,$(OUTPUT_BASE)/%_$(GOOS)_$(GOARCH)$(GOARM).so,$(PLUGINS))
|
||||
DIST_TARGETS := $(SQUIRSSI_DIST) $(PLUGIN_DIST)
|
||||
|
||||
SQUIRSSI_VERSION := $(if $(shell test -d .git && echo "1"),$(shell git describe --always --tags),SNAPSHOT)
|
||||
SQUIRCY3_VERSION := $(if $(shell test -d $(SQUIRCY3_ROOT)/.git && echo "1"),$(shell cd $(SQUIRCY3_ROOT) && git describe --always --tags),SNAPSHOT)
|
||||
|
||||
.PHONY: all build generate run squirssi plugins clean
|
||||
|
||||
all: build plugins
|
||||
|
@ -24,12 +41,14 @@ clean:
|
|||
|
||||
build: squirssi
|
||||
|
||||
dist: $(DIST_TARGETS)
|
||||
|
||||
squirssi: $(SQUIRSSI_TARGET)
|
||||
|
||||
plugins: $(PLUGIN_TARGETS)
|
||||
|
||||
run: build
|
||||
$(SQUIRSSI_TARGET) 2>> $(OUTPUT_BASE)/squirssi_errors.log
|
||||
$(SQUIRSSI_TARGET)
|
||||
|
||||
test:
|
||||
go test -tags netgo $(RACE) $(TEST_ARGS) ./...
|
||||
|
@ -37,12 +56,27 @@ test:
|
|||
$(OUTPUT_BASE)/plugins: $(OUTPUT_BASE)
|
||||
cp -r $(SQUIRCY3_ROOT)/plugins $(OUTPUT_BASE)/plugins
|
||||
|
||||
$(SQUIRSSI_TARGET): $(SOURCES)
|
||||
GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) CC=$(CC) CGO_ENABLED=1 \
|
||||
go build -tags netgo $(RACE) \
|
||||
-ldflags "-s -w -X code.dopame.me/veonik/squirssi.Version=$(SQUIRSSI_VERSION)-SNAPSHOT -X main.Squircy3Version=$(SQUIRCY3_VERSION)-SNAPSHOT" \
|
||||
-o $@ cmd/squirssi/*.go
|
||||
|
||||
$(SQUIRSSI_DIST): $(OUTPUT_BASE) $(SOURCES)
|
||||
GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) CC=$(CC) CGO_ENABLED=1 \
|
||||
go build -tags netgo \
|
||||
-ldflags "-s -w -X code.dopame.me/veonik/squirssi.Version=$(SQUIRSSI_VERSION) -X main.Squircy3Version=$(SQUIRCY3_VERSION)" \
|
||||
-o $@ cmd/squirssi/*.go
|
||||
|
||||
.SECONDEXPANSION:
|
||||
$(PLUGIN_TARGETS): $(OUTPUT_BASE)/%.so: $$(wildcard plugins/%/*) $(OUTPUT_BASE)/plugins $(SOURCES)
|
||||
go build -tags netgo $(RACE) -o $@ -buildmode=plugin $(OUTPUT_BASE)/plugins/$*/*.go
|
||||
GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) CC=$(CC) CGO_ENABLED=1 \
|
||||
go build -tags netgo $(RACE) -o $@ -buildmode=plugin $(OUTPUT_BASE)/plugins/$*/*.go
|
||||
|
||||
$(SQUIRSSI_TARGET): $(SOURCES)
|
||||
go build -tags netgo $(RACE) -o $@ cmd/squirssi/*.go
|
||||
.SECONDEXPANSION:
|
||||
$(PLUGIN_DIST): $(OUTPUT_BASE)/%_$(GOOS)_$(GOARCH)$(GOARM).so: $$(wildcard plugins/%/*) $(OUTPUT_BASE)/plugins $(SOURCES)
|
||||
GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) CC=$(CC) CGO_ENABLED=1 \
|
||||
go build -tags netgo -o $@ -buildmode=plugin $(OUTPUT_BASE)/plugins/$*/*.go
|
||||
|
||||
$(OUTPUT_BASE):
|
||||
mkdir -p $(OUTPUT_BASE)
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"name": "squirssi-scripts",
|
||||
"version": "0.0.1",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@babel/standalone": "7.5.5",
|
||||
"assert": "2.0.0",
|
||||
"assert-polyfill": "0.0.0",
|
||||
"buffer": "5.2.1",
|
||||
"core-js-bundle": "3.1.4",
|
||||
"process": "0.11.10",
|
||||
"regenerator-runtime": "0.13.3",
|
||||
"regenerator-transform": "0.14.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"util": "0.12.1"
|
||||
}
|
||||
}
|
|
@ -32,7 +32,7 @@ func Initialize(m *plugin.Manager) (plugin.Plugin, error) {
|
|||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "%s: missing required dependency (irc)", pluginName)
|
||||
}
|
||||
ircp.SetVersionString(fmt.Sprintf("squirssi v%s", Version))
|
||||
ircp.SetVersionString(fmt.Sprintf("squirssi %s", Version))
|
||||
srv, err := NewServer(ev, ircp)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "%s: failed to initialize Server", pluginName)
|
||||
|
|
Loading…
Reference in New Issue