mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-04 03:56:24 -07:00
Finish build.py
Also remove powershell script, modify bootstrap script to use build.py
This commit is contained in:
parent
485ed84bac
commit
2e99788426
5 changed files with 224 additions and 226 deletions
137
build.ps1
137
build.ps1
|
@ -1,137 +0,0 @@
|
||||||
#!/usr/bin/env pwsh
|
|
||||||
param (
|
|
||||||
[string]$action = "build",
|
|
||||||
[bool]$minify = $TRUE,
|
|
||||||
[string]$platform,
|
|
||||||
[string]$releaseFor
|
|
||||||
)
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
if($releaseFor -ne "*" -And $releaseFor -ne "") {
|
|
||||||
$platform = $releaseFor
|
|
||||||
}
|
|
||||||
|
|
||||||
$BIN = "gochan"
|
|
||||||
$BINEXE = "gochan.exe"
|
|
||||||
if( $releaseFor -ne "*" ) {
|
|
||||||
$BINEXE = "$BIN$($env:GOOS=$platform; go env GOEXE)"
|
|
||||||
}
|
|
||||||
$GCOS = go env GOOS
|
|
||||||
$GCOS_NAME = $GCOS
|
|
||||||
if ($GCOS_NAME -eq "darwin") {
|
|
||||||
$GCOS_NAME = "macos"
|
|
||||||
}
|
|
||||||
$VERSION = Get-Content version
|
|
||||||
$RELEASE_NAME = "$BIN-v${VERSION}_$GCOS_NAME"
|
|
||||||
$RELEASE_DIR = "releases/${RELEASE_NAME}"
|
|
||||||
|
|
||||||
$LDFLAGS = "-X main.versionStr=${VERSION} -s"
|
|
||||||
$DOCUMENT_ROOT_FILES = @"
|
|
||||||
banned.jpg
|
|
||||||
notbanned.png
|
|
||||||
permabanned.jpg
|
|
||||||
favicon*
|
|
||||||
firstrun.html
|
|
||||||
hittheroad*
|
|
||||||
"@ -split "`n"
|
|
||||||
|
|
||||||
for ($l = 0; $l -lt $DOCUMENT_ROOT_FILES.Count; $l++) {
|
|
||||||
$line = "html/" + $DOCUMENT_ROOT_FILES[$l]
|
|
||||||
$DOCUMENT_ROOT_FILES[$l] = Get-ChildItem $line
|
|
||||||
}
|
|
||||||
$DOCUMENT_ROOT_FILES += @"
|
|
||||||
html/css
|
|
||||||
html/error
|
|
||||||
html/javascript
|
|
||||||
"@
|
|
||||||
|
|
||||||
function build {
|
|
||||||
$cmd = "& go build -v -gcflags=-trimpath=$PWD -asmflags=-trimpath=$PWD -ldflags=`"$LDFLAGS`" -o $BINEXE ./cmd/gochan "
|
|
||||||
$env:GOOS=$platform; Invoke-Expression $cmd
|
|
||||||
}
|
|
||||||
|
|
||||||
function clean {
|
|
||||||
Remove-Item $BIN*
|
|
||||||
Remove-Item releases/* -Force -Recurse
|
|
||||||
}
|
|
||||||
|
|
||||||
function dependencies {
|
|
||||||
go get -v `
|
|
||||||
github.com/disintegration/imaging `
|
|
||||||
github.com/nranchev/go-libGeoIP `
|
|
||||||
github.com/go-sql-driver/mysql `
|
|
||||||
github.com/lib/pq `
|
|
||||||
golang.org/x/net/html `
|
|
||||||
github.com/aquilax/tripcode `
|
|
||||||
golang.org/x/crypto/bcrypt `
|
|
||||||
github.com/frustra/bbcode `
|
|
||||||
github.com/tdewolff/minify `
|
|
||||||
github.com/mojocn/base64Captcha
|
|
||||||
}
|
|
||||||
|
|
||||||
function dockerImage {
|
|
||||||
throw "Docker image creation not yet implemented"
|
|
||||||
# docker build . -t="eggbertx/gochan"
|
|
||||||
}
|
|
||||||
|
|
||||||
function release {
|
|
||||||
clean
|
|
||||||
mkdir -p `
|
|
||||||
$RELEASE_DIR/html `
|
|
||||||
$RELEASE_DIR/log `
|
|
||||||
|
|
||||||
cp LICENSE $RELEASE_DIR
|
|
||||||
cp README.md $RELEASE_DIR
|
|
||||||
cp -r sample-configs $RELEASE_DIR
|
|
||||||
cp -r templates $RELEASE_DIR
|
|
||||||
|
|
||||||
foreach($line in $DOCUMENT_ROOT_FILES) {
|
|
||||||
$arr = $line.Split()
|
|
||||||
foreach($word in $arr) {
|
|
||||||
Copy-Item -Recurse $word $RELEASE_DIR/html
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$env:GOOS=$platform; ./build.ps1
|
|
||||||
}
|
|
||||||
|
|
||||||
function doSass {
|
|
||||||
if($minify) {
|
|
||||||
sass --style compressed --no-source-map sass:html/css
|
|
||||||
} else {
|
|
||||||
sass --no-source-map sass:html/css
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($action) {
|
|
||||||
"build" {
|
|
||||||
build
|
|
||||||
}
|
|
||||||
"clean" {
|
|
||||||
clean
|
|
||||||
}
|
|
||||||
"dependencies" {
|
|
||||||
dependencies
|
|
||||||
}
|
|
||||||
"js" {
|
|
||||||
throw "Frontend transpilation coming soon"
|
|
||||||
}
|
|
||||||
"release" {
|
|
||||||
if($releaseFor -eq "*") {
|
|
||||||
./build.ps1 -action release -platform darwin -releaseFor darwin
|
|
||||||
./build.ps1 -action release -platform linux -releaseFor linux
|
|
||||||
./build.ps1 -action release -platform windows -releaseFor windows
|
|
||||||
} else {
|
|
||||||
release
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"sass" {
|
|
||||||
doSass
|
|
||||||
}
|
|
||||||
"test" {
|
|
||||||
go test -v ./src
|
|
||||||
}
|
|
||||||
Default {
|
|
||||||
Write-Output "Invalid or unsupported command"
|
|
||||||
}
|
|
||||||
}
|
|
304
build.py
304
build.py
|
@ -5,30 +5,78 @@
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
from os import path
|
from os import path
|
||||||
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import tarfile
|
||||||
|
from zipfile import ZipFile
|
||||||
|
|
||||||
gc_dependencies = [
|
gc_dependencies = [
|
||||||
"github.com/disintegration/imaging ",
|
"github.com/disintegration/imaging",
|
||||||
"github.com/nranchev/go-libGeoIP ",
|
"github.com/nranchev/go-libGeoIP",
|
||||||
"github.com/go-sql-driver/mysql ",
|
"github.com/go-sql-driver/mysql",
|
||||||
"github.com/lib/pq ",
|
"github.com/lib/pq",
|
||||||
"golang.org/x/net/html ",
|
"golang.org/x/net/html",
|
||||||
"github.com/aquilax/tripcode ",
|
"github.com/aquilax/tripcode",
|
||||||
"golang.org/x/crypto/bcrypt ",
|
"golang.org/x/crypto/bcrypt",
|
||||||
"github.com/frustra/bbcode ",
|
"github.com/frustra/bbcode",
|
||||||
"github.com/tdewolff/minify ",
|
"github.com/tdewolff/minify",
|
||||||
"github.com/mojocn/base64Captcha"
|
"github.com/mojocn/base64Captcha"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
release_files = [
|
||||||
|
"html/banned.jpg",
|
||||||
|
"html/css",
|
||||||
|
"html/error",
|
||||||
|
"html/favicon2.png",
|
||||||
|
"html/favicon.png",
|
||||||
|
"html/firstrun.html",
|
||||||
|
"html/hittheroad.mp3",
|
||||||
|
"html/hittheroad.ogg",
|
||||||
|
"html/hittheroad.wav",
|
||||||
|
"html/javascript",
|
||||||
|
"html/notbanned.png",
|
||||||
|
"html/permabanned.jpg",
|
||||||
|
"sample-configs",
|
||||||
|
"sql",
|
||||||
|
"templates",
|
||||||
|
"initdb_master.sql",
|
||||||
|
"initdb_mysql.sql",
|
||||||
|
"initdb_postgres.sql",
|
||||||
|
"LICENSE",
|
||||||
|
"README.md",
|
||||||
|
]
|
||||||
|
|
||||||
|
def fs_action(action, sourcefile, destfile = ""):
|
||||||
|
isfile = path.isfile(sourcefile) or path.islink(sourcefile)
|
||||||
|
isdir = path.isdir(sourcefile)
|
||||||
|
if action == "copy":
|
||||||
|
fs_action("delete", destfile)
|
||||||
|
if isfile:
|
||||||
|
shutil.copy(sourcefile, destfile)
|
||||||
|
elif isdir:
|
||||||
|
shutil.copytree(sourcefile, destfile)
|
||||||
|
elif action == "move":
|
||||||
|
fs_action("delete", destfile)
|
||||||
|
shutil.move(sourcefile, destfile)
|
||||||
|
elif action == "mkdir":
|
||||||
|
if isfile:
|
||||||
|
fs_action("delete", sourcefile)
|
||||||
|
elif not isdir:
|
||||||
|
os.makedirs(sourcefile)
|
||||||
|
elif action == "delete":
|
||||||
|
if isfile:
|
||||||
|
os.remove(sourcefile)
|
||||||
|
elif isdir:
|
||||||
|
shutil.rmtree(sourcefile)
|
||||||
|
else:
|
||||||
|
raise Exception("Invalid action, must be 'copy', 'move', 'mkdir', or 'delete'")
|
||||||
|
|
||||||
def run_cmd(cmd, print_output = True, realtime = False, print_command = False):
|
def run_cmd(cmd, print_output = True, realtime = False, print_command = False):
|
||||||
if print_command:
|
if print_command:
|
||||||
print(cmd)
|
print(cmd)
|
||||||
use_stdout = subprocess.PIPE
|
|
||||||
if print_output == False:
|
|
||||||
use_stdout = open(os.devnull, 'w')
|
|
||||||
|
|
||||||
proc = subprocess.Popen(cmd, stdout = use_stdout, stderr=subprocess.STDOUT, shell = True)
|
proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr=subprocess.STDOUT, shell = True)
|
||||||
output = ""
|
output = ""
|
||||||
status = 0
|
status = 0
|
||||||
if realtime: # print the command's output in real time, ignores print_output
|
if realtime: # print the command's output in real time, ignores print_output
|
||||||
|
@ -53,20 +101,62 @@ def run_cmd(cmd, print_output = True, realtime = False, print_command = False):
|
||||||
status = 0
|
status = 0
|
||||||
return (output, status)
|
return (output, status)
|
||||||
|
|
||||||
def build(debugging = False):
|
|
||||||
use_cmd = build_cmd
|
|
||||||
if debugging:
|
|
||||||
use_cmd = dbg_build_cmd
|
|
||||||
print("Building for", gcos,"with debugging symbols")
|
|
||||||
else:
|
|
||||||
print("Building for", gcos)
|
|
||||||
|
|
||||||
status = run_cmd(use_cmd + " -o " + gochan_exe + " ./cmd/gochan", realtime = True, print_command = True)[1]
|
def set_vars(goos = ""):
|
||||||
|
""" Sets version and GOOS-related variables to be used globally"""
|
||||||
|
global gcos
|
||||||
|
global gcos_name # used for release, since macOS GOOS is "darwin"
|
||||||
|
global exe
|
||||||
|
global gochan_bin
|
||||||
|
global gochan_exe
|
||||||
|
global migration_bin
|
||||||
|
global migration_exe
|
||||||
|
global version
|
||||||
|
|
||||||
|
if goos != "":
|
||||||
|
os.environ["GOOS"] = goos
|
||||||
|
|
||||||
|
gcos, gcos_status = run_cmd("go env GOOS", print_output = False)
|
||||||
|
exe, exe_status = run_cmd("go env GOEXE", print_output = False)
|
||||||
|
if gcos_status + exe_status != 0:
|
||||||
|
print("Invalid GOOS value, check your GOOS environment variable")
|
||||||
|
exit(1)
|
||||||
|
gcos_name = gcos
|
||||||
|
if gcos_name == "darwin":
|
||||||
|
gcos_name = "macos"
|
||||||
|
|
||||||
|
gochan_bin = "gochan"
|
||||||
|
gochan_exe = "gochan" + exe
|
||||||
|
migration_bin = "gochan-migration"
|
||||||
|
migration_exe = "gochan-migration" + exe
|
||||||
|
|
||||||
|
version_file = open("version", "r")
|
||||||
|
version = version_file.read().strip()
|
||||||
|
version_file.close()
|
||||||
|
|
||||||
|
def build(debugging = False):
|
||||||
|
pwd = os.getcwd()
|
||||||
|
trimpath = "-trimpath=" + pwd
|
||||||
|
gcflags = " -gcflags=\"" + trimpath + "{}\""
|
||||||
|
ldflags = " -ldflags=\"-X main.versionStr=" + version + "{}\""
|
||||||
|
build_cmd = "go build -v -asmflags=" + trimpath
|
||||||
|
|
||||||
|
if debugging:
|
||||||
|
print("Building for", gcos,"with debugging symbols")
|
||||||
|
gcflags = gcflags.format(" -l -N")
|
||||||
|
ldflags = ldflags.format("")
|
||||||
|
else:
|
||||||
|
ldflags = ldflags.format(" -w -s")
|
||||||
|
gcflags = gcflags.format("")
|
||||||
|
print("Building for", gcos)
|
||||||
|
build_cmd += gcflags + ldflags
|
||||||
|
|
||||||
|
status = run_cmd(build_cmd + " -o " + gochan_exe + " ./cmd/gochan", realtime = True, print_command = True)[1]
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print("Failed building gochan, got status code", status)
|
print("Failed building gochan, got status code", status)
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
status = run_cmd(use_cmd + " -o " + migration_exe + " ./cmd/gochan-migration", realtime = True, print_command = True)[1]
|
status = run_cmd(build_cmd + " -o " + migration_exe + " ./cmd/gochan-migration", realtime = True, print_command = False)[1]
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print("Failed building gochan-migration, got status code", status)
|
print("Failed building gochan-migration, got status code", status)
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -74,29 +164,66 @@ def build(debugging = False):
|
||||||
|
|
||||||
def clean():
|
def clean():
|
||||||
print("Cleaning up")
|
print("Cleaning up")
|
||||||
del_files = ["gochan", "gochan.exe", "gochan-migration", "gochan-migration.exe"]
|
del_files = ["gochan", "gochan.exe", "gochan-migration", "gochan-migration.exe", "releases/", "pkg/gclog/logtest/"]
|
||||||
for del_file in del_files:
|
for del_file in del_files:
|
||||||
if path.exists(del_file):
|
fs_action("delete", del_file)
|
||||||
os.remove(del_file)
|
|
||||||
|
|
||||||
def dependencies():
|
def dependencies():
|
||||||
for dep in gc_dependencies:
|
for dep in gc_dependencies:
|
||||||
run_cmd("go get -v " + dep, realtime = True)
|
run_cmd("go get -v " + dep, realtime = True, print_command = True)
|
||||||
|
|
||||||
def docker(option = "guestdb"):
|
def docker(option = "guestdb"):
|
||||||
cmd = ""
|
cmd = "docker-compose -f {} up --build"
|
||||||
if option == "guestdb":
|
if option == "guestdb":
|
||||||
cmd = "docker-compose -f docker/docker-compose-mariadb.yaml up --build"
|
cmd = cmd.format("docker/docker-compose-mariadb.yaml")
|
||||||
elif option == "hostdb":
|
elif option == "hostdb":
|
||||||
cmd = "docker-compose -f docker/docker-compose.yml.default up --build"
|
cmd = cmd.format("docker/docker-compose.yml.default")
|
||||||
elif option == "macos":
|
elif option == "macos":
|
||||||
cmd = "docker-compose -f docker/docker-compose-syncForMac.yaml up --build"
|
cmd = cmd.format("docker/docker-compose-syncForMac.yaml")
|
||||||
status = run_cmd(cmd, print_output = True, realtime = True, print_command = True)[1]
|
status = run_cmd(cmd, print_output = True, realtime = True, print_command = True)[1]
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print("Failed starting a docker container, exited with status code", status)
|
print("Failed starting a docker container, exited with status code", status)
|
||||||
|
|
||||||
def install():
|
def install(prefix = "/usr", document_root = "/srv/gochan"):
|
||||||
pass
|
if gcos == "windows" or gcos == "darwin":
|
||||||
|
print("Installation is not currently supported for Windows and macOS, use the respective directory created by running `python build.py release`")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
fs_action("mkdir", "/etc/gochan")
|
||||||
|
fs_action("mkdir", path.join(prefix, "share/gochan"))
|
||||||
|
fs_action("mkdir", document_root)
|
||||||
|
fs_action("mkdir", "/var/log/gochan")
|
||||||
|
for file in release_files:
|
||||||
|
out_path = path.join(prefix, "share", file)
|
||||||
|
if file.startswith("html/"):
|
||||||
|
out_path = path.join(document_root, file.replace("html/", ""))
|
||||||
|
|
||||||
|
print("Installing", file, "to", out_path)
|
||||||
|
fs_action("copy", file, out_path)
|
||||||
|
|
||||||
|
|
||||||
|
# print("installing sample-configs/gochan.example.json to /etc/gochan/gochan.example.json")
|
||||||
|
# fs_action("copy")
|
||||||
|
if(path.exists(gochan_exe) == False or path.exists(migration_exe)):
|
||||||
|
build()
|
||||||
|
print("Installing",gochan_exe,"to",path.join(prefix, "bin", gochan_exe))
|
||||||
|
fs_action("copy", gochan_exe, path.join(prefix, "bin", gochan_exe))
|
||||||
|
print("Installing",migration_exe,"to",path.join(prefix, "bin", migration_exe))
|
||||||
|
fs_action("copy", migration_exe, path.join(prefix, "bin", migration_exe))
|
||||||
|
|
||||||
|
|
||||||
|
print(
|
||||||
|
"gochan successfully installed. If you haven't already, you should copy\n",
|
||||||
|
"sample-configs/gochan.example.json to /etc/gochan/gochan.json and modify that as needed."
|
||||||
|
)
|
||||||
|
if gcos == "linux":
|
||||||
|
print("If your Linux distribution has systemd, you will also need to run the following commands:\n",
|
||||||
|
"cp sample-configs/gochan-[mysql|postgresql].service /lib/systemd/system/gochan.service\n",
|
||||||
|
"systemctl daemon-reload\n",
|
||||||
|
"systemctl enable gochan.service\n",
|
||||||
|
"systemctl start gochan.service",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def js(minify = False, watch = False):
|
def js(minify = False, watch = False):
|
||||||
print("Transpiling JS")
|
print("Transpiling JS")
|
||||||
|
@ -105,107 +232,108 @@ def js(minify = False, watch = False):
|
||||||
npm_cmd += "-minify"
|
npm_cmd += "-minify"
|
||||||
if watch:
|
if watch:
|
||||||
npm_cmd += "-watch"
|
npm_cmd += "-watch"
|
||||||
|
|
||||||
status = run_cmd(npm_cmd, True, True, True)[1]
|
status = run_cmd(npm_cmd, True, True, True)[1]
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print("JS transpiling failed with status", status)
|
print("JS transpiling failed with status", status)
|
||||||
|
|
||||||
def release(all = True):
|
def release(goos):
|
||||||
global gcos
|
set_vars(goos)
|
||||||
print("Creating releases for GOOS", gcos)
|
build(False)
|
||||||
|
release_name = gochan_bin + "-v" + version + "_" + gcos_name
|
||||||
|
release_dir = path.join("releases", release_name)
|
||||||
|
print("Creating release for", gcos_name)
|
||||||
|
handle = None
|
||||||
|
func = None
|
||||||
|
if goos == "windows" or goos == "darwin":
|
||||||
|
handle = ZipFile(release_dir + ".zip", "w")
|
||||||
|
func = handle.write
|
||||||
|
else:
|
||||||
|
handle = tarfile.open(release_dir + ".tar.gz", "w:gz")
|
||||||
|
func = handle.add
|
||||||
|
func(gochan_exe, path.join(release_name, gochan_exe))
|
||||||
|
func(migration_exe, path.join(release_name, migration_exe))
|
||||||
|
for file in release_files:
|
||||||
|
func(file, path.join(release_name, file))
|
||||||
|
handle.close()
|
||||||
|
|
||||||
def sass(minify = False):
|
def sass(minify = False):
|
||||||
sass_cmd = "sass "
|
sass_cmd = "sass "
|
||||||
if minify:
|
if minify:
|
||||||
sass_cmd += "--style compressed "
|
sass_cmd += "--style compressed "
|
||||||
status = run_cmd(sass_cmd + "--no-source-map sass:html/css", realtime = True, print_command = True)[1]
|
sass_cmd += "--no-source-map sass:html/css"
|
||||||
|
status = run_cmd(sass_cmd, realtime = True, print_command = True)[1]
|
||||||
if status != 0:
|
if status != 0:
|
||||||
print("Failed running sass with status", status)
|
print("Failed running sass with status", status)
|
||||||
|
|
||||||
def test():
|
def test():
|
||||||
run_cmd("go test ./pkg/gcutil/", realtime = True, print_command = True)
|
pkgs = os.listdir("pkg")
|
||||||
|
for pkg in pkgs:
|
||||||
|
run_cmd("go test " + path.join("./pkg", pkg), realtime = True, print_command = True)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
global gcos
|
|
||||||
global gcos_name # used for release, since macOS GOOS is "darwin"
|
|
||||||
global exe
|
|
||||||
global gochan_bin
|
|
||||||
global gochan_exe
|
|
||||||
global migration_bin
|
|
||||||
global migration_exe
|
|
||||||
global build_cmd
|
|
||||||
global dbg_build_cmd
|
|
||||||
|
|
||||||
action = "build"
|
action = "build"
|
||||||
try:
|
try:
|
||||||
|
sys.platform
|
||||||
action = sys.argv.pop(1)
|
action = sys.argv.pop(1)
|
||||||
except Exception: # no argument was passed
|
except Exception: # no argument was passed
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if(action.startswith("-") == False):
|
if(action.startswith("-") == False):
|
||||||
sys.argv.insert(1, action)
|
sys.argv.insert(1, action)
|
||||||
|
set_vars()
|
||||||
|
|
||||||
valid_actions = ["build", "clean", "dependencies", "docker", "install", "js", "release", "sass", "test"]
|
valid_actions = ["build", "clean", "dependencies", "docker", "install", "js", "release", "sass", "test"]
|
||||||
parser = argparse.ArgumentParser(description = "gochan build script")
|
parser = argparse.ArgumentParser(description = "gochan build script")
|
||||||
parser.add_argument("action",
|
parser.add_argument("action", nargs = 1, default = "build", choices = valid_actions)
|
||||||
nargs = 1,
|
|
||||||
default = "build",
|
|
||||||
choices = valid_actions
|
|
||||||
)
|
|
||||||
|
|
||||||
if action == "--help" or action == "-h":
|
if action == "--help" or action == "-h":
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
exit(2)
|
exit(2)
|
||||||
|
|
||||||
gcos, gcos_status = run_cmd("go env GOOS")
|
|
||||||
exe, exe_status = run_cmd("go env GOEXE")
|
|
||||||
if gcos_status + exe_status != 0:
|
|
||||||
print("Invalid GOOS value, check your GOOS environment variable")
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
gochan_bin = "gochan"
|
|
||||||
gochan_exe = "gochan" + exe
|
|
||||||
migration_exe = "gochan-migration" + exe
|
|
||||||
|
|
||||||
version_file = open("version", "r")
|
|
||||||
version = version_file.read().strip()
|
|
||||||
version_file.close()
|
|
||||||
|
|
||||||
pwd = os.getcwd()
|
|
||||||
trimpath = "-trimpath=" + pwd
|
|
||||||
ldflags = "-X main.versionStr=" + version
|
|
||||||
build_prefix = "go build -v -asmflags=" + trimpath + " -gcflags="
|
|
||||||
|
|
||||||
build_cmd = build_prefix + trimpath + " -ldflags=\"" + ldflags + " -w -s\""
|
|
||||||
dbg_build_cmd = build_prefix + "\"" + trimpath + " -l -N\" -ldflags=\"" + ldflags + "\""
|
|
||||||
|
|
||||||
if action == "build":
|
if action == "build":
|
||||||
parser.add_argument("--debug", type = bool, default = False, nargs = "?")
|
parser.add_argument("--debug", help = "build gochan and gochan-frontend with debugging symbols", action = "store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
build(args.debug is not False)
|
build(args.debug)
|
||||||
elif action == "clean":
|
elif action == "clean":
|
||||||
clean()
|
clean()
|
||||||
exit(0)
|
exit(0)
|
||||||
elif action == "dependencies":
|
elif action == "dependencies":
|
||||||
dependencies()
|
dependencies()
|
||||||
elif action == "docker":
|
elif action == "docker":
|
||||||
parser.add_argument("--option", type = str, default = "guestdb", choices = ["guestdb", "hostdb", "macos"])
|
parser.add_argument("--option",
|
||||||
|
default = "guestdb", choices = ["guestdb", "hostdb", "macos"],
|
||||||
|
help = "create a Docker container, see docker/README.md for more info"
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
docker(args.option)
|
docker(args.option)
|
||||||
elif action == "install":
|
elif action == "install":
|
||||||
install()
|
parser.add_argument("--prefix",
|
||||||
|
default = "/usr",
|
||||||
|
help = "install gochan to this directory and its subdirectories",
|
||||||
|
)
|
||||||
|
parser.add_argument("--documentroot",
|
||||||
|
default = "/srv/gochan",
|
||||||
|
help = "install files in ./html/ to this directory to be requested by a browser"
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
install(args.prefix, args.documentroot)
|
||||||
elif action == "js":
|
elif action == "js":
|
||||||
parser.add_argument("--minify", type = bool, default = False, nargs = "?")
|
parser.add_argument("--minify", action = "store_true", help = "create a minified gochan.js")
|
||||||
parser.add_argument("--watch", type = bool, default = False, nargs = "?")
|
parser.add_argument("--watch", action = "store_true", help = "automatically rebuild when you change a file (keeps running)")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
js(args.minify is not False, args.watch is not False)
|
js(args.minify, args.watch)
|
||||||
elif action == "release":
|
elif action == "release":
|
||||||
parser.add_argument("--all", type = bool, default = False, nargs = "?")
|
parser.add_argument("--all", help = "build releases for Windows, macOS, and Linux", action = "store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
release(args.all is not False)
|
fs_action("mkdir", "releases")
|
||||||
|
if args.all:
|
||||||
|
release("windows")
|
||||||
|
release("darwin")
|
||||||
|
release("linux")
|
||||||
|
else:
|
||||||
|
release(gcos)
|
||||||
elif action == "sass":
|
elif action == "sass":
|
||||||
parser.add_argument("--minify", type = bool, default = False, nargs = "?")
|
parser.add_argument("--minify", action = "store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
sass(args.minify is not False)
|
sass(args.minify)
|
||||||
elif action == "test":
|
elif action == "test":
|
||||||
test()
|
test()
|
||||||
|
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -15,5 +15,5 @@ require (
|
||||||
github.com/tdewolff/parse v2.3.4+incompatible // indirect
|
github.com/tdewolff/parse v2.3.4+incompatible // indirect
|
||||||
github.com/tdewolff/test v1.0.6 // indirect
|
github.com/tdewolff/test v1.0.6 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897
|
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897
|
||||||
golang.org/x/net v0.0.0-20201022231255-08b38378de70
|
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102
|
||||||
)
|
)
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -41,6 +41,10 @@ golang.org/x/net v0.0.0-20201010224723-4f7140c49acb h1:mUVeFHoDKis5nxCAzoAi7E8Gh
|
||||||
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20201022231255-08b38378de70 h1:Z6x4N9mAi4oF0TbHweCsH618MO6OI6UFgV0FP5n0wBY=
|
golang.org/x/net v0.0.0-20201022231255-08b38378de70 h1:Z6x4N9mAi4oF0TbHweCsH618MO6OI6UFgV0FP5n0wBY=
|
||||||
golang.org/x/net v0.0.0-20201022231255-08b38378de70/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201022231255-08b38378de70/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201024042810-be3efd7ff127 h1:pZPp9+iYUqwYKLjht0SDBbRCRK/9gAXDy7pz5fRDpjo=
|
||||||
|
golang.org/x/net v0.0.0-20201024042810-be3efd7ff127/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw=
|
||||||
|
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
|
|
@ -62,7 +62,7 @@ else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
apt-get -y install git subversion mercurial nginx ffmpeg make golang-1.11
|
apt-get -y install git subversion mercurial nginx ffmpeg golang-1.11
|
||||||
|
|
||||||
ln -s /usr/lib/go-1.11/bin/* /usr/local/bin/
|
ln -s /usr/lib/go-1.11/bin/* /usr/local/bin/
|
||||||
|
|
||||||
|
@ -131,10 +131,13 @@ python build_initdb.py
|
||||||
cd ..
|
cd ..
|
||||||
mkdir -p $GOPATH/src/github.com/gochan-org/gochan
|
mkdir -p $GOPATH/src/github.com/gochan-org/gochan
|
||||||
cp -r pkg $GOPATH/src/github.com/gochan-org/gochan
|
cp -r pkg $GOPATH/src/github.com/gochan-org/gochan
|
||||||
make dependencies
|
./build.py dependencies
|
||||||
make
|
./build.py
|
||||||
EOF
|
EOF
|
||||||
# make install
|
|
||||||
|
cd /vagrant
|
||||||
|
./build.py install
|
||||||
|
/vagrant/gochan -rebuild all
|
||||||
|
|
||||||
# if [ -d /lib/systemd ]; then
|
# if [ -d /lib/systemd ]; then
|
||||||
# systemctl start gochan.service
|
# systemctl start gochan.service
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue