mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	Remove dependency on CGO
This commit changes the SQLite dependency to one that does not depend on CGO. It uses a C-to-Go translated sqlite library that is Pure go.
This commit is contained in:
		
							parent
							
								
									a37339fa54
								
							
						
					
					
						commit
						bfbcea35a0
					
				| @ -10,15 +10,12 @@ builds: | |||||||
|   - id: darwin-amd64 |   - id: darwin-amd64 | ||||||
|     main: ./cmd/headscale/headscale.go |     main: ./cmd/headscale/headscale.go | ||||||
|     mod_timestamp: "{{ .CommitTimestamp }}" |     mod_timestamp: "{{ .CommitTimestamp }}" | ||||||
|  |     env: | ||||||
|  |       - CGO_ENABLED=0 | ||||||
|     goos: |     goos: | ||||||
|       - darwin |       - darwin | ||||||
|     goarch: |     goarch: | ||||||
|       - amd64 |       - amd64 | ||||||
|     env: |  | ||||||
|       - PKG_CONFIG_SYSROOT_DIR=/sysroot/macos/amd64 |  | ||||||
|       - PKG_CONFIG_PATH=/sysroot/macos/amd64/usr/local/lib/pkgconfig |  | ||||||
|       - CC=o64-clang |  | ||||||
|       - CXX=o64-clang++ |  | ||||||
|     flags: |     flags: | ||||||
|       - -mod=readonly |       - -mod=readonly | ||||||
|     ldflags: |     ldflags: | ||||||
| @ -27,46 +24,40 @@ builds: | |||||||
|   - id: linux-armhf |   - id: linux-armhf | ||||||
|     main: ./cmd/headscale/headscale.go |     main: ./cmd/headscale/headscale.go | ||||||
|     mod_timestamp: "{{ .CommitTimestamp }}" |     mod_timestamp: "{{ .CommitTimestamp }}" | ||||||
|  |     env: | ||||||
|  |       - CGO_ENABLED=0 | ||||||
|     goos: |     goos: | ||||||
|       - linux |       - linux | ||||||
|     goarch: |     goarch: | ||||||
|       - arm |       - arm | ||||||
|     goarm: |     goarm: | ||||||
|       - "7" |       - "7" | ||||||
|     env: |  | ||||||
|       - CC=arm-linux-gnueabihf-gcc |  | ||||||
|       - CXX=arm-linux-gnueabihf-g++ |  | ||||||
|       - CGO_FLAGS=--sysroot=/sysroot/linux/armhf |  | ||||||
|       - CGO_LDFLAGS=--sysroot=/sysroot/linux/armhf |  | ||||||
|       - PKG_CONFIG_SYSROOT_DIR=/sysroot/linux/armhf |  | ||||||
|       - PKG_CONFIG_PATH=/sysroot/linux/armhf/opt/vc/lib/pkgconfig:/sysroot/linux/armhf/usr/lib/arm-linux-gnueabihf/pkgconfig:/sysroot/linux/armhf/usr/lib/pkgconfig:/sysroot/linux/armhf/usr/local/lib/pkgconfig |  | ||||||
|     flags: |     flags: | ||||||
|       - -mod=readonly |       - -mod=readonly | ||||||
|     ldflags: |     ldflags: | ||||||
|       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} |       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} | ||||||
| 
 | 
 | ||||||
|   - id: linux-amd64 |   - id: linux-amd64 | ||||||
|  |     mod_timestamp: "{{ .CommitTimestamp }}" | ||||||
|     env: |     env: | ||||||
|       - CGO_ENABLED=1 |       - CGO_ENABLED=0 | ||||||
|     goos: |     goos: | ||||||
|       - linux |       - linux | ||||||
|     goarch: |     goarch: | ||||||
|       - amd64 |       - amd64 | ||||||
|     main: ./cmd/headscale/headscale.go |     main: ./cmd/headscale/headscale.go | ||||||
|     mod_timestamp: "{{ .CommitTimestamp }}" |  | ||||||
|     ldflags: |     ldflags: | ||||||
|       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} |       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} | ||||||
| 
 | 
 | ||||||
|   - id: linux-arm64 |   - id: linux-arm64 | ||||||
|  |     mod_timestamp: "{{ .CommitTimestamp }}" | ||||||
|  |     env: | ||||||
|  |       - CGO_ENABLED=0 | ||||||
|     goos: |     goos: | ||||||
|       - linux |       - linux | ||||||
|     goarch: |     goarch: | ||||||
|       - arm64 |       - arm64 | ||||||
|     env: |  | ||||||
|       - CGO_ENABLED=1 |  | ||||||
|       - CC=aarch64-linux-gnu-gcc |  | ||||||
|     main: ./cmd/headscale/headscale.go |     main: ./cmd/headscale/headscale.go | ||||||
|     mod_timestamp: "{{ .CommitTimestamp }}" |  | ||||||
|     ldflags: |     ldflags: | ||||||
|       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} |       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -20,6 +20,10 @@ This is a part of aligning `headscale`'s behaviour with Tailscale's upstream beh | |||||||
|   - Tags should now work correctly and adding a host to Headscale should now reload the rules. |   - Tags should now work correctly and adding a host to Headscale should now reload the rules. | ||||||
|   - The documentation have a [fictional example](docs/acls.md) that should cover some use cases of the ACLs features |   - The documentation have a [fictional example](docs/acls.md) that should cover some use cases of the ACLs features | ||||||
| 
 | 
 | ||||||
|  | **Changes**: | ||||||
|  | 
 | ||||||
|  | - Remove dependency on CGO (switch from CGO SQLite to pure Go) [#346](https://github.com/juanfont/headscale/pull/346) | ||||||
|  | 
 | ||||||
| **0.13.0 (2022-02-18):** | **0.13.0 (2022-02-18):** | ||||||
| 
 | 
 | ||||||
| **Features**: | **Features**: | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ RUN go mod download | |||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | 
 | ||||||
| RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale | RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale | ||||||
| RUN strip /go/bin/headscale | RUN strip /go/bin/headscale | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ RUN go mod download | |||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | 
 | ||||||
| RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale | RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale | ||||||
| RUN strip /go/bin/headscale | RUN strip /go/bin/headscale | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ RUN go mod download | |||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | 
 | ||||||
| RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale | RUN GGO_ENABLED=0 GOOS=linux go install -a ./cmd/headscale | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
| # Debug image | # Debug image | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -10,7 +10,7 @@ PROTO_SOURCES = $(call rwildcard,,*.proto) | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| build: | build: | ||||||
| 	go build -ldflags "-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$(version)" cmd/headscale/headscale.go | 	GGO_ENABLED=0 go build -ldflags "-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$(version)" cmd/headscale/headscale.go | ||||||
| 
 | 
 | ||||||
| dev: lint test build | dev: lint test build | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								db.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								db.go
									
									
									
									
									
								
							| @ -3,8 +3,8 @@ package headscale | |||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| 
 | 
 | ||||||
|  | 	"github.com/glebarez/sqlite" | ||||||
| 	"gorm.io/driver/postgres" | 	"gorm.io/driver/postgres" | ||||||
| 	"gorm.io/driver/sqlite" |  | ||||||
| 	"gorm.io/gorm" | 	"gorm.io/gorm" | ||||||
| 	"gorm.io/gorm/logger" | 	"gorm.io/gorm/logger" | ||||||
| ) | ) | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								go.mod
									
									
									
									
									
								
							| @ -8,6 +8,7 @@ require ( | |||||||
| 	github.com/efekarakus/termcolor v1.0.1 | 	github.com/efekarakus/termcolor v1.0.1 | ||||||
| 	github.com/fatih/set v0.2.1 | 	github.com/fatih/set v0.2.1 | ||||||
| 	github.com/gin-gonic/gin v1.7.7 | 	github.com/gin-gonic/gin v1.7.7 | ||||||
|  | 	github.com/glebarez/sqlite v1.3.5 | ||||||
| 	github.com/gofrs/uuid v4.2.0+incompatible | 	github.com/gofrs/uuid v4.2.0+incompatible | ||||||
| 	github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 | 	github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 | ||||||
| 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.3 | 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.3 | ||||||
| @ -19,14 +20,13 @@ require ( | |||||||
| 	github.com/prometheus/client_golang v1.12.1 | 	github.com/prometheus/client_golang v1.12.1 | ||||||
| 	github.com/pterm/pterm v0.12.36 | 	github.com/pterm/pterm v0.12.36 | ||||||
| 	github.com/rs/zerolog v1.26.1 | 	github.com/rs/zerolog v1.26.1 | ||||||
| 	github.com/soheilhy/cmux v0.1.5 |  | ||||||
| 	github.com/spf13/cobra v1.3.0 | 	github.com/spf13/cobra v1.3.0 | ||||||
| 	github.com/spf13/viper v1.10.1 | 	github.com/spf13/viper v1.10.1 | ||||||
| 	github.com/stretchr/testify v1.7.0 | 	github.com/stretchr/testify v1.7.0 | ||||||
| 	github.com/tailscale/hujson v0.0.0-20211215203138-ffd971c5f362 | 	github.com/tailscale/hujson v0.0.0-20211215203138-ffd971c5f362 | ||||||
| 	github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e | 	github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e | ||||||
| 	github.com/zsais/go-gin-prometheus v0.1.0 | 	github.com/zsais/go-gin-prometheus v0.1.0 | ||||||
| 	golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2 | 	golang.org/x/crypto v0.0.0-20220214200702-86341886e292 | ||||||
| 	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 | 	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 | ||||||
| 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c | 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c | ||||||
| 	google.golang.org/genproto v0.0.0-20220210181026-6fee9acbd336 | 	google.golang.org/genproto v0.0.0-20220210181026-6fee9acbd336 | ||||||
| @ -36,9 +36,8 @@ require ( | |||||||
| 	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c | 	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c | ||||||
| 	gopkg.in/yaml.v2 v2.4.0 | 	gopkg.in/yaml.v2 v2.4.0 | ||||||
| 	gorm.io/datatypes v1.0.5 | 	gorm.io/datatypes v1.0.5 | ||||||
| 	gorm.io/driver/postgres v1.2.3 | 	gorm.io/driver/postgres v1.3.1 | ||||||
| 	gorm.io/driver/sqlite v1.2.6 | 	gorm.io/gorm v1.23.1 | ||||||
| 	gorm.io/gorm v1.22.5 |  | ||||||
| 	inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 | 	inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 | ||||||
| 	tailscale.com v1.20.4 | 	tailscale.com v1.20.4 | ||||||
| ) | ) | ||||||
| @ -58,8 +57,8 @@ require ( | |||||||
| 	github.com/docker/go-connections v0.4.0 // indirect | 	github.com/docker/go-connections v0.4.0 // indirect | ||||||
| 	github.com/docker/go-units v0.4.0 // indirect | 	github.com/docker/go-units v0.4.0 // indirect | ||||||
| 	github.com/fsnotify/fsnotify v1.5.1 // indirect | 	github.com/fsnotify/fsnotify v1.5.1 // indirect | ||||||
| 	github.com/ghodss/yaml v1.0.0 // indirect |  | ||||||
| 	github.com/gin-contrib/sse v0.1.0 // indirect | 	github.com/gin-contrib/sse v0.1.0 // indirect | ||||||
|  | 	github.com/glebarez/go-sqlite v1.14.7 // indirect | ||||||
| 	github.com/go-playground/locales v0.14.0 // indirect | 	github.com/go-playground/locales v0.14.0 // indirect | ||||||
| 	github.com/go-playground/universal-translator v0.18.0 // indirect | 	github.com/go-playground/universal-translator v0.18.0 // indirect | ||||||
| 	github.com/go-playground/validator/v10 v10.10.0 // indirect | 	github.com/go-playground/validator/v10 v10.10.0 // indirect | ||||||
| @ -70,6 +69,7 @@ require ( | |||||||
| 	github.com/google/go-github v17.0.0+incompatible // indirect | 	github.com/google/go-github v17.0.0+incompatible // indirect | ||||||
| 	github.com/google/go-querystring v1.1.0 // indirect | 	github.com/google/go-querystring v1.1.0 // indirect | ||||||
| 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect | 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect | ||||||
|  | 	github.com/google/uuid v1.3.0 // indirect | ||||||
| 	github.com/gookit/color v1.5.0 // indirect | 	github.com/gookit/color v1.5.0 // indirect | ||||||
| 	github.com/hashicorp/go-version v1.4.0 // indirect | 	github.com/hashicorp/go-version v1.4.0 // indirect | ||||||
| 	github.com/hashicorp/hcl v1.0.0 // indirect | 	github.com/hashicorp/hcl v1.0.0 // indirect | ||||||
| @ -112,6 +112,7 @@ require ( | |||||||
| 	github.com/prometheus/client_model v0.2.0 // indirect | 	github.com/prometheus/client_model v0.2.0 // indirect | ||||||
| 	github.com/prometheus/common v0.32.1 // indirect | 	github.com/prometheus/common v0.32.1 // indirect | ||||||
| 	github.com/prometheus/procfs v0.7.3 // indirect | 	github.com/prometheus/procfs v0.7.3 // indirect | ||||||
|  | 	github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect | ||||||
| 	github.com/rivo/uniseg v0.2.0 // indirect | 	github.com/rivo/uniseg v0.2.0 // indirect | ||||||
| 	github.com/rogpeppe/go-internal v1.8.1 // indirect | 	github.com/rogpeppe/go-internal v1.8.1 // indirect | ||||||
| 	github.com/sirupsen/logrus v1.8.1 // indirect | 	github.com/sirupsen/logrus v1.8.1 // indirect | ||||||
| @ -136,6 +137,12 @@ require ( | |||||||
| 	gopkg.in/ini.v1 v1.66.4 // indirect | 	gopkg.in/ini.v1 v1.66.4 // indirect | ||||||
| 	gopkg.in/square/go-jose.v2 v2.6.0 // indirect | 	gopkg.in/square/go-jose.v2 v2.6.0 // indirect | ||||||
| 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect | 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect | ||||||
| 	gorm.io/driver/mysql v1.2.3 // indirect | 	gorm.io/driver/mysql v1.3.2 // indirect | ||||||
|  | 	gorm.io/driver/sqlite v1.3.1 // indirect | ||||||
|  | 	gorm.io/driver/sqlserver v1.3.1 // indirect | ||||||
|  | 	modernc.org/libc v1.14.3 // indirect | ||||||
|  | 	modernc.org/mathutil v1.4.1 // indirect | ||||||
|  | 	modernc.org/memory v1.0.5 // indirect | ||||||
|  | 	modernc.org/sqlite v1.14.5 // indirect | ||||||
| 	sigs.k8s.io/yaml v1.3.0 // indirect | 	sigs.k8s.io/yaml v1.3.0 // indirect | ||||||
| ) | ) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user