mirror of
https://github.com/mjl-/mox.git
synced 2024-12-27 08:53:48 +03:00
add more of a "getting started with building" to develop.txt
based on #145 by lmeunier
This commit is contained in:
parent
40ade995a5
commit
d4958732c8
3 changed files with 55 additions and 13 deletions
16
Makefile
16
Makefile
|
@ -31,6 +31,10 @@ test-race:
|
||||||
test-upgrade: build
|
test-upgrade: build
|
||||||
nice ./test-upgrade.sh
|
nice ./test-upgrade.sh
|
||||||
|
|
||||||
|
# needed for "check" target
|
||||||
|
install-staticcheck:
|
||||||
|
go install honnef.co/go/tools/cmd/staticcheck@v0.4.7
|
||||||
|
|
||||||
check:
|
check:
|
||||||
CGO_ENABLED=0 go vet -tags integration
|
CGO_ENABLED=0 go vet -tags integration
|
||||||
CGO_ENABLED=0 go vet -tags website website/website.go
|
CGO_ENABLED=0 go vet -tags website website/website.go
|
||||||
|
@ -45,6 +49,10 @@ check:
|
||||||
staticcheck -tags errata rfc/errata.go
|
staticcheck -tags errata rfc/errata.go
|
||||||
staticcheck -tags xr rfc/xr.go
|
staticcheck -tags xr rfc/xr.go
|
||||||
|
|
||||||
|
# needed for check-shadow
|
||||||
|
install-shadow:
|
||||||
|
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@v0.19.0
|
||||||
|
|
||||||
# having "err" shadowed is common, best to not have others
|
# having "err" shadowed is common, best to not have others
|
||||||
check-shadow:
|
check-shadow:
|
||||||
go vet -vettool=$$(which shadow) ./... 2>&1 | grep -v '"err"'
|
go vet -vettool=$$(which shadow) ./... 2>&1 | grep -v '"err"'
|
||||||
|
@ -96,11 +104,11 @@ fmt:
|
||||||
jswatch:
|
jswatch:
|
||||||
bash -c 'while true; do inotifywait -q -e close_write *.ts webadmin/*.ts webaccount/*.ts webmail/*.ts; make frontend; done'
|
bash -c 'while true; do inotifywait -q -e close_write *.ts webadmin/*.ts webaccount/*.ts webmail/*.ts; make frontend; done'
|
||||||
|
|
||||||
jsinstall:
|
install-js:
|
||||||
-mkdir -p node_modules/.bin
|
-mkdir -p node_modules/.bin
|
||||||
npm ci
|
npm ci
|
||||||
|
|
||||||
jsinstall0:
|
install-js0:
|
||||||
-mkdir -p node_modules/.bin
|
-mkdir -p node_modules/.bin
|
||||||
npm install --save-dev --save-exact typescript@5.1.6
|
npm install --save-dev --save-exact typescript@5.1.6
|
||||||
|
|
||||||
|
@ -121,8 +129,10 @@ webaccount/account.js: lib.ts webaccount/api.ts webaccount/account.ts
|
||||||
|
|
||||||
frontend: webadmin/admin.js webaccount/account.js webmail/webmail.js webmail/msg.js webmail/text.js
|
frontend: 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
|
||||||
|
|
||||||
genapidiff:
|
genapidiff:
|
||||||
# needs golang.org/x/exp/cmd/apidiff@v0.0.0-20231206192017-f3f8817b8deb installed
|
|
||||||
./apidiff.sh
|
./apidiff.sh
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
|
|
|
@ -125,6 +125,8 @@ for junk filtering and rate-limiting).
|
||||||
|
|
||||||
# Future/development
|
# Future/development
|
||||||
|
|
||||||
|
See develop.txt for instructions/tips for developing on mox.
|
||||||
|
|
||||||
Mox will receive funding for essentially full-time continued work from August
|
Mox will receive funding for essentially full-time continued work from August
|
||||||
2023 to August 2024 through NLnet/EU's NGI0 Entrust, see
|
2023 to August 2024 through NLnet/EU's NGI0 Entrust, see
|
||||||
https://nlnet.nl/project/Mox/.
|
https://nlnet.nl/project/Mox/.
|
||||||
|
|
50
develop.txt
50
develop.txt
|
@ -1,5 +1,34 @@
|
||||||
This file has notes useful for mox developers.
|
This file has notes useful for mox developers.
|
||||||
|
|
||||||
|
# Building & testing
|
||||||
|
|
||||||
|
For a full build, you'll need a recent Go compiler/toolchain and nodejs/npm for
|
||||||
|
the frontend. First install frontend dependencies (typescript) with "make
|
||||||
|
install-js". Then run "make build" to do a full build. Run "make test" to run
|
||||||
|
the test suite. With docker installed, you can run "make test-integration" to
|
||||||
|
start up a few mox instances, a dns server, a postfix instance, and send email
|
||||||
|
between them.
|
||||||
|
|
||||||
|
The mox localserve command is a convenient way to test locally. Most of the
|
||||||
|
code paths are reachable/testable with mox localserve, but some use cases will
|
||||||
|
require a full setup.
|
||||||
|
|
||||||
|
Before committing, run at least "make fmt" and "make check" (which requires
|
||||||
|
staticcheck, run "make install-staticcheck" once). Also run "make check-shadow"
|
||||||
|
and fix any shadowed variables other than "err" (which are filtered out, but
|
||||||
|
causes the command to always exit with an error code; run "make install-shadow"
|
||||||
|
once to install the shadow command). If you've updated RFC references, run
|
||||||
|
"make" in rfc/, it verifies the referenced files exist.
|
||||||
|
|
||||||
|
When making changes to the public API of a package listed in
|
||||||
|
apidiff/packages.txt, run "make genapidiff" to update the list of changes in
|
||||||
|
the upcoming release (run "make install-apidiff" once to install the apidiff
|
||||||
|
command).
|
||||||
|
|
||||||
|
New features may be worth mentioning on the website, see website/ and
|
||||||
|
instructions below.
|
||||||
|
|
||||||
|
|
||||||
# Code style, guidelines, notes
|
# Code style, guidelines, notes
|
||||||
|
|
||||||
- Keep the same style as existing code.
|
- Keep the same style as existing code.
|
||||||
|
@ -44,8 +73,8 @@ https://github.com/mjl-/sherpats/.
|
||||||
The JavaScript that is generated from the TypeScript is included in the
|
The JavaScript that is generated from the TypeScript is included in the
|
||||||
repository. This makes it available for inclusion in the binary, which is
|
repository. This makes it available for inclusion in the binary, which is
|
||||||
practical for users, and desirable given Go's reproducible builds. When
|
practical for users, and desirable given Go's reproducible builds. When
|
||||||
developing, run "make" to also build the frontend code. Run "make jsinstall"
|
developing, run "make" to also build the frontend code. Run "make
|
||||||
once to install the TypeScript compiler into ./node_modules/.
|
install-frontend" once to install the TypeScript compiler into ./node_modules/.
|
||||||
|
|
||||||
There are no other external (runtime or devtime) frontend dependencies. A
|
There are no other external (runtime or devtime) frontend dependencies. A
|
||||||
light-weight abstraction over the DOM is provided by ./lib.ts. A bit more
|
light-weight abstraction over the DOM is provided by ./lib.ts. A bit more
|
||||||
|
@ -60,18 +89,19 @@ managable.
|
||||||
# Website
|
# Website
|
||||||
|
|
||||||
The content of the public website at https://www.xmox.nl is in website/, as
|
The content of the public website at https://www.xmox.nl is in website/, as
|
||||||
markdown files. The website HTML is generated by website/website.go. The FAQ
|
markdown files. The website HTML is generated with "make genwebsite", which
|
||||||
is taken from README.md, the protocol support table is generated from
|
writes to website/html/ (files not committed). The FAQ is taken from
|
||||||
rfc/index.txt. The website is kept in this repository so a commit can change
|
README.md, the protocol support table is generated from rfc/index.txt. The
|
||||||
both the implementation and the documentation on the website. Some of the info
|
website is kept in this repository so a commit can change both the
|
||||||
in README.md is duplicated on the website, often more elaborate and possibly
|
implementation and the documentation on the website. Some of the info in
|
||||||
with a slightly less technical audience. The website should also mostly be
|
README.md is duplicated on the website, often more elaborate and possibly with
|
||||||
readable through the markdown in the git repo.
|
a slightly less technical audience. The website should also mostly be readable
|
||||||
|
through the markdown in the git repo.
|
||||||
|
|
||||||
Large files (images/videos) are in https://github.com/mjl-/mox-website-files to
|
Large files (images/videos) are in https://github.com/mjl-/mox-website-files to
|
||||||
keep the repository reasonably sized.
|
keep the repository reasonably sized.
|
||||||
|
|
||||||
The public website serves the content from the "website" branch. After a
|
The public website may serve the content from the "website" branch. After a
|
||||||
release release, the main branch (with latest development code and
|
release release, the main branch (with latest development code and
|
||||||
corresponding changes to the website about new features) is merged into the
|
corresponding changes to the website about new features) is merged into the
|
||||||
website branch. Commits to the website branch (e.g. for a news item, or any
|
website branch. Commits to the website branch (e.g. for a news item, or any
|
||||||
|
|
Loading…
Reference in a new issue