Radon Rosborough
bb924ca926
Optimize language build order
2021-01-17 15:18:41 -08:00
Radon Rosborough
ce72de4f6f
Fix Curry build & run
2021-01-17 15:18:27 -08:00
Radon Rosborough
b2f20154a4
Write trailing newlines again
2021-01-17 14:19:44 -08:00
Radon Rosborough
96b26fa5c4
Seemingly the Cmd skel code is broken?
2021-01-17 14:16:17 -08:00
Radon Rosborough
8a662d5dbe
s/pstree/psmisc/
2021-01-17 14:00:47 -08:00
Radon Rosborough
fa97f045dc
Install pstree, 'make all-scripts' executable
2021-01-17 13:47:21 -08:00
Radon Rosborough
d700ddbb67
Actually pass environment variables to shells
2021-01-17 13:37:49 -08:00
Radon Rosborough
33edf76b93
Write all build scripts at once
2021-01-17 13:34:58 -08:00
Radon Rosborough
5ef6c0ff51
Set test patience and concurrency for CI
2021-01-17 13:18:39 -08:00
Radon Rosborough
d9e7f6d378
Fix ENTRYPOINT for admin, ci images
2021-01-17 12:17:26 -08:00
Radon Rosborough
ccc39b9c8f
Make eC work
2021-01-17 12:14:17 -08:00
Radon Rosborough
4e032aaecb
Deal with some DNS garbage
...
Apparently, my laptop was using 75.75.75.75 from Comcast as one of its
DNS servers, and unfortunately that server was totally broken (dig
@75.75.75.75 never returned results). I had to edit
/etc/systemd/resolved.conf to override DNS=8.8.8.8, then things worked
again. How DNS resolution worked at all outside of Docker was unclear
to me, but overriding 75.75.75.75 makes it work inside as well (when
not operating in --network=host mode).
2021-01-17 11:56:57 -08:00
Radon Rosborough
0c9c5707ea
Use format strings
2021-01-16 10:03:49 -08:00
Radon Rosborough
e848cc2792
Install shared deps into composite image
2021-01-16 09:56:59 -08:00
Radon Rosborough
471f18e567
Install shared deps for tests
2021-01-16 09:55:19 -08:00
Radon Rosborough
646eda0bbf
Fix curry build
2021-01-14 21:56:22 -08:00
Radon Rosborough
7d780661db
New solution that works on the free tier
...
Let's just require some languages to be built and published locally.
Easy enough.
2021-01-14 21:56:22 -08:00
Radon Rosborough
52093d53cb
Try to avoid build timeout for Ante -_-
2021-01-14 07:56:44 -08:00
Radon Rosborough
b82556bfd8
Clean up packages-microsoft-prod.deb
2021-01-13 22:06:13 -08:00
Radon Rosborough
d46b1a9ece
-_-
2021-01-13 21:47:37 -08:00
Radon Rosborough
6d89b5d2f9
Don't introduce circular dependency
2021-01-13 21:44:19 -08:00
Radon Rosborough
0be51eeaeb
Compile setuid binary ahead of time in CI
2021-01-13 21:37:35 -08:00
Radon Rosborough
83d2873636
Fix some typoes in plan-publish script
2021-01-13 21:20:28 -08:00
Radon Rosborough
1e44d57254
Fix typo in getPackages()
2021-01-13 21:17:32 -08:00
Radon Rosborough
eba085a10a
Re-add license
2021-01-13 21:13:43 -08:00
Radon Rosborough
fc1372a263
Update README
2021-01-13 21:13:18 -08:00
Radon Rosborough
b02c2ebe77
Merge old development history into Debian rewrite
2021-01-13 21:09:37 -08:00
Radon Rosborough
342cff0511
Prepare for merge into master
2021-01-13 21:03:12 -08:00
Radon Rosborough
27099cca40
Attempt to account for shared deps in CI
2021-01-13 21:02:08 -08:00
Radon Rosborough
65c5403b6f
Use http for now for Red
...
There seems to be a problem specific to my laptop's kernel or network
stack that causes an SSL error.
2021-01-13 17:00:57 -08:00
Radon Rosborough
b9eaccfc66
Rename some files that I missed
2021-01-11 22:24:54 -08:00
Radon Rosborough
f7b0b43551
Almost all languages working in new system
2021-01-11 22:17:09 -08:00
Radon Rosborough
f013f7e26c
Work on a number of additional languages
2021-01-11 19:34:44 -08:00
Radon Rosborough
5895b5f3e4
Everything through MongoDB
2021-01-10 15:52:23 -08:00
Radon Rosborough
ac39b15e16
Make more languages work
2021-01-09 15:36:14 -08:00
Radon Rosborough
f50c177007
Get a bunch of new languages working
2021-01-09 14:07:10 -08:00
Radon Rosborough
670fabe177
Improve sandbox env, add shared dep support
2021-01-09 12:36:17 -08:00
Radon Rosborough
5752918068
Make users.js robust to concurrency
2021-01-07 21:09:33 -08:00
Radon Rosborough
9a99429f48
Miscellaneous work starting to support langs
2021-01-06 21:44:27 -08:00
Radon Rosborough
6450df047f
Configure more package managers
2021-01-02 15:41:47 -08:00
Radon Rosborough
d782cc1fb5
Import APT package installation
2021-01-02 11:08:14 -08:00
Radon Rosborough
ec94a44030
Re-add install clause for Python
2021-01-02 10:18:15 -08:00
Radon Rosborough
b849045d12
Fix Markdown test
...
It previously relied on multiple trailing newlines and that is not
allowed by our new YAML format.
2021-01-02 10:14:56 -08:00
Radon Rosborough
a6adfea206
Rename Node.js => JavaScript
2021-01-02 10:14:56 -08:00
Radon Rosborough
8cd93a744f
Remove some spurious trailing newlines
2021-01-02 10:14:56 -08:00
Radon Rosborough
2daa11c7aa
Import all language configs into YAML
...
This was an absolutely disgusting operation. Here's the commands I
used to do it (see <https://docs.gomplate.ca/ > for the tool):
$ node
> require('fs').writeFile('langs.json', JSON.stringify(require('./langs').langs), console.log)
$ ./gomplate -c .=langs.json -f template.yaml > langs.yaml
$ cat langs.json | jq 'keys[]' -r L | while read lang; do cat langs.yaml | sed -n "/^ #START $lang\$/,/^ #END $lang\$/p" | tail -n+2 | head -n-1 | sed 's/^ //' > langs/$lang.yaml; done
I had some difficulty getting valid YAML to be generated, so I found
the tool at <http://www.yamllint.com/ > to be helpful in identifying
errors.
For validation that nothing important had changed in the
transformation, I used <http://www.jsondiff.com/ > to compare
langs.json against the output of this command:
$ ./gomplate -c .=langs.json -f template.yaml | node yaml2json.js | jq '(.. | select(type == "string")) |= sub("\n+$";"") | (.. | select(.template?) | .template?) |= (.+"\n") | (.. | select(.format?.input?) | .format?.input?) |= (.+"\n")'
Here's yaml2json.js:
import fs from "fs";
import YAML from "yaml";
console.log(JSON.stringify(YAML.parse(fs.readFileSync(0, "utf-8")), null, 2));
And here's the template.yaml, which is approximately the worst thing
ever:
{{ range . }}
"{{ .id }}":
#START {{ .id }}
id: "{{ .id }}"
{{ if has . "aliases" }} aliases:
{{ range .aliases }} - "{{ . }}"
{{ end }}{{ end }} name: "{{ .name }}"
{{ if has . "monacoLang" }} monacoLang: {{ .monacoLang }}
{{ end }}{{ if has . "info" }}
info:
{{ if has .info "impl" }} impl: "{{ .info.impl }}"
{{ end }}{{ if has .info "version" }} version: "{{ .info.version }}"
{{ end }} year: {{ .info.year }}
desc: "{{ .info.desc }}"
{{ if eq "string" (printf "%T" .info.ext) }} ext: {{ .info.ext }}
{{ else if eq 0 (len .info.ext) }} ext: []
{{ else }} ext:
{{ range .info.ext }} - {{ . }}
{{ end }}{{ end }} web:
{{ if has .info.web "wiki" }} wiki: "{{ .info.web.wiki }}"
{{ end }}{{ if has .info.web "esolang" }} esolang: "{{ .info.web.esolang }}"
{{ end }}{{ if has .info.web "home" }} home: "{{ .info.web.home }}"
{{ end }}{{ if has .info.web "impl" }} impl: "{{ .info.web.impl }}"
{{ end }} source: {{ if eq "string" (printf "%T" .info.web.source) }}"{{ .info.web.source }}"
{{ else }}null
{{ end }}{{ if eq "string" (printf "%T" .info.category) }} category: {{ .info.category }}
{{ else if eq 0 (len .info.category) }} category: []
{{ else }} category:
{{ range .info.category }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.mode) }} mode: {{ .info.mode }}
{{ else if eq 0 (len .info.mode) }} mode: []
{{ else }} mode:
{{ range .info.mode }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.platform) }} platform: {{ .info.platform }}
{{ else if eq 0 (len .info.platform) }} platform: []
{{ else }} platform:
{{ range .info.platform }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.syntax) }} syntax: {{ .info.syntax }}
{{ else if eq 0 (len .info.syntax) }} syntax: []
{{ else }} syntax:
{{ range .info.syntax }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.typing) }} typing: {{ .info.typing }}
{{ else if eq 0 (len .info.typing) }} typing: []
{{ else }} typing:
{{ range .info.typing }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.paradigm) }} paradigm: {{ .info.paradigm }}
{{ else if eq 0 (len .info.paradigm) }} paradigm: []
{{ else }} paradigm:
{{ range .info.paradigm }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.usage) }} usage: {{ .info.usage }}
{{ else if eq 0 (len .info.usage) }} usage: []
{{ else }} usage:
{{ range .info.usage }} - {{ . }}
{{ end }}{{ end }}{{ end }}{{ if or (has . "daemon") (has . "setup") }}
{{ end }}{{ if has . "daemon" }} daemon: |
{{ .daemon | indent 4 }}
{{ end }}{{ if has . "setup" }} setup: |
{{ .setup | indent 4 }}
{{ end }}{{ if has . "repl" }}
repl: |
{{ .repl | indent 4 }}
{{ end }}{{ if has . "input" }}{{ if .input | strings.Contains "\x1b" }} input: "{{ .input | strings.ReplaceAll "\x1b" "\\x1b" }}"
{{ else }} input: |{{ if .input | regexp.Match "^\\s" }}2{{ end }}
{{ .input | indent 4 }}
{{ end }}{{ end }}{{ if has . "output" }} output: |
{{ .output | indent 4 }}
{{ end }}
main: "{{ .main }}"
template: {{ if eq .id "whitespace" }}{{ .template | strings.Quote }}
{{ else }}|{{ if .template | regexp.Match "^\\s" }}2{{ end }}
{{ .template | indent 4 }}{{ end }}{{ if has . "prefix" }} prefix: |
{{ .prefix | indent 4 }}
{{ end }}{{ if has . "suffix" }} suffix: |
{{ .suffix | indent 4 }}
{{ end }}{{ if has . "createEmpty" }} createEmpty: "{{ .createEmpty }}"
{{ end }}
{{ if has . "compile" }} compile: |
{{ .compile | indent 4 }}
{{ end }} run: |
{{ .run | indent 4 }}
{{ if has . "helloInput" }} helloInput: |
{{ .helloInput | indent 4 }}
{{ end }}{{ if has . "hello" }} hello: |
{{ .hello | indent 4 }}
{{ end }}{{ if has . "helloMaxLength" }} helloMaxLength: {{ .helloMaxLength }}
{{ end }}{{ if has . "runReplInput" }} runReplInput: |
{{ .runReplInput | indent 4 }}
{{ end }}{{ if has . "runReplOutput" }} runReplOutput: |
{{ .runReplOutput | indent 4 }}
{{ end }}{{ if has . "scope" }}
scope:
code: |
{{ .scope.code | indent 6 }}
{{ if has .scope "after" }} after: "{{ .scope.after }}"
{{ end }}{{ if has .scope "input" }}{{ if .scope.input | strings.Contains "\x1b" }} input: "{{ .scope.input | strings.ReplaceAll "\x1b" "\\x1b" }}"
{{ else }} input: |
{{ .scope.input | indent 6 }}
{{ end }}{{ end }}{{ if has .scope "output" }} output: |
{{ .scope.output | indent 6 }}
{{ end }}{{ end }}{{ if has . "format" }}
format:
run: |
{{ .format.run | indent 6 }}
{{ if has .format "input" }} input: |
{{ .format.input | indent 6 }}{{ end }}{{ if has .format "output" }} output: |
{{ .format.output | indent 6 }}{{ end }}{{ end }}{{ if has . "pkg" }}
pkg:
install: |
{{ .pkg.install | indent 6 }}
{{ if has .pkg "uninstall" }}
uninstall: |
{{ .pkg.uninstall | indent 6 }}
{{ end }}{{ if has .pkg "all" }}
all: |
{{ .pkg.all | indent 6 }}
{{ end }}{{ if has .pkg "search" }}
search: |
{{ .pkg.search | indent 6 }}
{{ end }}{{ end }}{{ if has . "lsp" }}
lsp:
{{ if has .lsp "setup" }} setup: |
{{ .lsp.setup | indent 6 }}
{{ end }} start: |
{{ .lsp.start | indent 6 }}
{{ if has .lsp "disableDynamicRegistration" }} disableDynamicRegistration: {{ .lsp.disableDynamicRegistration }}
{{ end }}{{ if has .lsp "init" }} init:
{{ .lsp.init | data.ToYAML | indent 6 }}{{ end }}{{ if has .lsp "config" }} config: {{ .lsp.config | data.ToYAML }}{{ end }}{{ if has .lsp "lang" }} lang: "{{ .lsp.lang }}"
{{ end }}{{ if has .lsp "code" }} code: {{ .lsp.code | strings.Quote }}
{{ end }}{{ if has .lsp "after" }} after: {{ .lsp.after | strings.Quote }}
{{ end }}{{ if has .lsp "item" }} item: {{ .lsp.item | strings.Quote }}
{{ end }}{{ end }}{{ if has . "skip" }}
skip:
{{ range .skip }} - {{ . }}
{{ end }}{{ end }} #END {{ .id }}
{{ end }}
2021-01-02 10:14:26 -08:00
Radon Rosborough
4f3633384c
Factor out separate deploy script
2021-01-01 12:32:29 -08:00
Radon Rosborough
a56dea0f76
Use hostnamectl
2021-01-01 12:19:11 -08:00
Radon Rosborough
86c29aef4c
Add 'make sync' for my convenience
2021-01-01 12:13:59 -08:00
Radon Rosborough
87d7e6df8a
Further optimization
2021-01-01 12:06:20 -08:00