Skip to content

Commit

Permalink
get rid of some more gnulinuxisms
Browse files Browse the repository at this point in the history
to get builds on openbsd going
  • Loading branch information
mjl- committed Sep 14, 2024
1 parent 661e77c commit 0977b7a
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 46 deletions.
66 changes: 33 additions & 33 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ test-upgrade: build

# needed for "check" target
install-staticcheck:
go install honnef.co/go/tools/cmd/staticcheck@latest
CGO_ENABLED=0 go install honnef.co/go/tools/cmd/staticcheck@latest

check:
CGO_ENABLED=0 go vet -tags integration
Expand All @@ -52,25 +52,25 @@ check:
CGO_ENABLED=0 go vet -tags errata rfc/errata.go
CGO_ENABLED=0 go vet -tags xr rfc/xr.go
GOARCH=386 CGO_ENABLED=0 go vet ./...
staticcheck ./...
staticcheck -tags integration
staticcheck -tags website website/website.go
staticcheck -tags link rfc/link.go
staticcheck -tags errata rfc/errata.go
staticcheck -tags xr rfc/xr.go
CGO_ENABLED=0 staticcheck ./...
CGO_ENABLED=0 staticcheck -tags integration
CGO_ENABLED=0 staticcheck -tags website website/website.go
CGO_ENABLED=0 staticcheck -tags link rfc/link.go
CGO_ENABLED=0 staticcheck -tags errata rfc/errata.go
CGO_ENABLED=0 staticcheck -tags xr rfc/xr.go

# needed for check-shadow
install-shadow:
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest
CGO_ENABLED=0 go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest

# having "err" shadowed is common, best to not have others
check-shadow:
go vet -vettool=$$(which shadow) ./... 2>&1 | grep -v '"err"'
go vet -tags integration -vettool=$$(which shadow) 2>&1 | grep -v '"err"'
go vet -tags website -vettool=$$(which shadow) website/website.go 2>&1 | grep -v '"err"'
go vet -tags link -vettool=$$(which shadow) rfc/link.go 2>&1 | grep -v '"err"'
go vet -tags errata -vettool=$$(which shadow) rfc/errata.go 2>&1 | grep -v '"err"'
go vet -tags xr -vettool=$$(which shadow) rfc/xr.go 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -vettool=$$(which shadow) ./... 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -tags integration -vettool=$$(which shadow) 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -tags website -vettool=$$(which shadow) website/website.go 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -tags link -vettool=$$(which shadow) rfc/link.go 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -tags errata -vettool=$$(which shadow) rfc/errata.go 2>&1 | grep -v '"err"'
CGO_ENABLED=0 go vet -tags xr -vettool=$$(which shadow) rfc/xr.go 2>&1 | grep -v '"err"'

fuzz:
go test -fuzz FuzzParseSignature -fuzztime 5m ./dkim
Expand Down Expand Up @@ -125,24 +125,24 @@ install-js0:
npm install --ignore-scripts --save-dev --save-exact typescript@5.1.6

webmail/webmail.js: lib.ts webmail/api.ts webmail/lib.ts webmail/webmail.ts
./tsc.sh $@ $^
./tsc.sh $@ lib.ts webmail/api.ts webmail/lib.ts webmail/webmail.ts

webmail/msg.js: lib.ts webmail/api.ts webmail/lib.ts webmail/msg.ts
./tsc.sh $@ $^
./tsc.sh $@ lib.ts webmail/api.ts webmail/lib.ts webmail/msg.ts

webmail/text.js: lib.ts webmail/api.ts webmail/lib.ts webmail/text.ts
./tsc.sh $@ $^
./tsc.sh $@ lib.ts webmail/api.ts webmail/lib.ts webmail/text.ts

webadmin/admin.js: lib.ts webadmin/api.ts webadmin/admin.ts
./tsc.sh $@ $^
./tsc.sh $@ lib.ts webadmin/api.ts webadmin/admin.ts

webaccount/account.js: lib.ts webaccount/api.ts webaccount/account.ts
./tsc.sh $@ $^
./tsc.sh $@ lib.ts webaccount/api.ts webaccount/account.ts

frontend: node_modules/.bin/tsc webadmin/admin.js webaccount/account.js webmail/webmail.js webmail/msg.js webmail/text.js

install-apidiff:
go install golang.org/x/exp/cmd/apidiff@v0.0.0-20231206192017-f3f8817b8deb
CGO_ENABLED=0 go install golang.org/x/exp/cmd/apidiff@v0.0.0-20231206192017-f3f8817b8deb

genapidiff:
./apidiff.sh
Expand All @@ -157,17 +157,17 @@ genwebsite:
./genwebsite.sh

buildall:
GOOS=linux GOARCH=arm go build
GOOS=linux GOARCH=arm64 go build
GOOS=linux GOARCH=amd64 go build
GOOS=linux GOARCH=386 go build
GOOS=openbsd GOARCH=amd64 go build
GOOS=freebsd GOARCH=amd64 go build
GOOS=netbsd GOARCH=amd64 go build
GOOS=darwin GOARCH=amd64 go build
GOOS=dragonfly GOARCH=amd64 go build
GOOS=illumos GOARCH=amd64 go build
GOOS=solaris GOARCH=amd64 go build
GOOS=aix GOARCH=ppc64 go build
GOOS=windows GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build
CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=netbsd GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=dragonfly GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=illumos GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=solaris GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=aix GOARCH=ppc64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
# no plan9 for now
8 changes: 4 additions & 4 deletions gendoc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ any parameters. Followed by the help and usage information for each command.
EOF

./mox 2>&1 | sed -e 's/^usage: */\t/' -e 's/^ */\t/'
./mox 2>&1 | sed -e 's/^usage: */ /' -e 's/^ */ /'
echo
./mox helpall 2>&1

Expand Down Expand Up @@ -80,14 +80,14 @@ See https://pkg.go.dev/github.com/mjl-/sconf for details.
# mox.conf
EOF
./mox config describe-static | sed 's/^/\t/'
./mox config describe-static | sed 's/^/ /'

cat <<EOF
# domains.conf
EOF
./mox config describe-domains | sed 's/^/\t/'
./mox config describe-domains | sed 's/^/ /'

cat <<EOF
Expand All @@ -102,7 +102,7 @@ EOF
for ex in $(./mox config example); do
echo '# Example '$ex
echo
./mox config example $ex | sed 's/^/\t/'
./mox config example $ex | sed 's/^/ /'
echo
done

Expand Down
4 changes: 2 additions & 2 deletions rfc/fetch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ fi

set -e

for number in $(sed -n 's/^\([0-9][0-9]*\)[ \t].*$/\1/p' index.txt); do
for number in $(sed -n 's/^\([0-9][0-9]*\)[ ].*$/\1/p' index.txt); do
if ! test -f "$number"; then
curl https://www.rfc-editor.org/rfc/rfc$number.txt >$number || rm $number
fi
done

for name in $(sed -n 's/^\([0-9][0-9]*-eid[0-9][0-9]*\)[ \t].*$/\1/p' index.txt); do
for name in $(sed -n 's/^\([0-9][0-9]*-eid[0-9][0-9]*\)[ ].*$/\1/p' index.txt); do
if ! test -f "$name"; then
rfc=$(echo $name | cut -f1 -d-)
eid=$(echo $name | cut -f2 -d-)
Expand Down
2 changes: 1 addition & 1 deletion tsc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ set -euo pipefail
out=$1
shift
./node_modules/.bin/tsc --noEmitOnError true --pretty false --newLine lf --strict --allowUnreachableCode false --allowUnusedLabels false --noFallthroughCasesInSwitch true --noImplicitReturns true --noUnusedLocals true --noImplicitThis true --noUnusedParameters true --target es2022 --module none --outFile $out.spaces "$@" | sed -E 's/^([^\(]+)\(([0-9]+),([0-9]+)\):/\1:\2:\3: /'
unexpand -t4 <$out.spaces >$out
CGO_ENABLED=0 go run unexpand.go -t 4 <$out.spaces >$out
rm $out.spaces
79 changes: 79 additions & 0 deletions unexpand.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//go:build tools
// +build tools

// For unexpand the 4 spaces that the typescript compiler outputs into tabs.
// Not all unexpand commands implement the -t flag (openbsd).
package main

import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
)

func xcheckf(err error, format string, args ...any) {
if err != nil {
log.Fatalf("%s: %s", fmt.Sprintf(format, args...), err)
}
}

func main() {
log.SetFlags(0)
var width int
flag.IntVar(&width, "t", 8, "tab width")
flag.Parse()
flag.Usage = func() {
log.Print("usage: unexpand [-t tabwidth] < input.spaces >output.tabs")
flag.PrintDefaults()
os.Exit(2)
}
if flag.NArg() != 0 {
flag.Usage()
}
if width <= 0 {
flag.Usage()
}

r := bufio.NewReader(os.Stdin)
w := bufio.NewWriter(os.Stdout)

nspace := 0
start := true

flush := func() {
for ; nspace > 0; nspace-- {
err := w.WriteByte(' ')
xcheckf(err, "write")
}
}
write := func(b byte) {
err := w.WriteByte(b)
xcheckf(err, "write")
}

for {
b, err := r.ReadByte()
if err == io.EOF {
break
}
xcheckf(err, "read")

if start && b == ' ' {
nspace++
if nspace == width {
write('\t')
nspace = 0
}
} else {
flush()
write(b)
start = b == '\n'
}
}
flush()
err := w.Flush()
xcheckf(err, "flush output")
}
4 changes: 2 additions & 2 deletions webmail/msg.js
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,8 @@ var api;
// - To keep the style definitions closer to their use.
// - To make it easier to provide both light/regular and dark mode colors.
// - To use class names for styling, instead of the the many inline styles.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// We keep the default/regular styles and dark-mode styles in separate stylesheets.
const cssStyle = dom.style(attr.type('text/css'));
document.head.appendChild(cssStyle);
Expand Down
4 changes: 2 additions & 2 deletions webmail/text.js
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,8 @@ var api;
// - To keep the style definitions closer to their use.
// - To make it easier to provide both light/regular and dark mode colors.
// - To use class names for styling, instead of the the many inline styles.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// We keep the default/regular styles and dark-mode styles in separate stylesheets.
const cssStyle = dom.style(attr.type('text/css'));
document.head.appendChild(cssStyle);
Expand Down
4 changes: 2 additions & 2 deletions webmail/webmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,8 @@ var api;
// - To keep the style definitions closer to their use.
// - To make it easier to provide both light/regular and dark mode colors.
// - To use class names for styling, instead of the the many inline styles.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// Makes it easier to look through a DOM, and easier to change the style of all
// instances of a class.
// We keep the default/regular styles and dark-mode styles in separate stylesheets.
const cssStyle = dom.style(attr.type('text/css'));
document.head.appendChild(cssStyle);
Expand Down

0 comments on commit 0977b7a

Please sign in to comment.