| .github/workflows | ||
| .vscode | ||
| assets | ||
| caddy | ||
| cmd | ||
| doc | ||
| internal | ||
| litestream | ||
| pkg | ||
| testdata | ||
| .air.toml | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .golangci.yml | ||
| .minio.env | ||
| bookmarks.Dockerfile | ||
| caddy.Dockerfile | ||
| compose-integration.yaml | ||
| core.Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| mydms.Dockerfile | ||
| README.md | ||
| TODO.md | ||
| tokentest.Dockerfile | ||
Monorepo
The monorepo is a collecton of services used for login, documents and bookmarks
Golang cross-compile with CGO
Golang has the neat funcitionality to cross-compile to different target architectures. This is very useful and very easy by just set env-vars GOOS and GOARCH. There are cases when the process of cross-compilation is getting complicated. Specifically when CGO is in the mix. On Linux this is typically quite easy, but when on different architectures this can be a challenge.
When using sqlite it is necessary to use CGO_ENABLED. To cross-compile from a Mac source-system to e.g. Linux there is a nice support which is described in this blog-post: https://www.yellowduck.be/posts/cross-compile-a-go-package-which-uses-sqlite3
- Install
musl-cross-> "One-click static-friendly musl-based GCC macOS-to-Linux cross-compilers" (https://github.com/FiloSottile/homebrew-musl-cross)brew install FiloSottile/musl-cross/musl-cross - Compile by specifying
CCandCXXCC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ GOARCH=amd64 GOOS=linux CGO_ENABLED=1 go build -ldflags "-linkmode external -extldflags -static" ./...
The result is the correct platform-specific build: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked