mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Merge pull request #349 from kradalby/remove-cgo
This commit is contained in:
		
						commit
						c46dfd761c
					
				| @ -10,15 +10,12 @@ builds: | ||||
|   - id: darwin-amd64 | ||||
|     main: ./cmd/headscale/headscale.go | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - darwin | ||||
|     goarch: | ||||
|       - 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: | ||||
|       - -mod=readonly | ||||
|     ldflags: | ||||
| @ -27,46 +24,40 @@ builds: | ||||
|   - id: linux-armhf | ||||
|     main: ./cmd/headscale/headscale.go | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - linux | ||||
|     goarch: | ||||
|       - arm | ||||
|     goarm: | ||||
|       - "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: | ||||
|       - -mod=readonly | ||||
|     ldflags: | ||||
|       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} | ||||
| 
 | ||||
|   - id: linux-amd64 | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     env: | ||||
|       - CGO_ENABLED=1 | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - linux | ||||
|     goarch: | ||||
|       - amd64 | ||||
|     main: ./cmd/headscale/headscale.go | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     ldflags: | ||||
|       - -s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=v{{.Version}} | ||||
| 
 | ||||
|   - id: linux-arm64 | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - linux | ||||
|     goarch: | ||||
|       - arm64 | ||||
|     env: | ||||
|       - CGO_ENABLED=1 | ||||
|       - CC=aarch64-linux-gnu-gcc | ||||
|     main: ./cmd/headscale/headscale.go | ||||
|     mod_timestamp: "{{ .CommitTimestamp }}" | ||||
|     ldflags: | ||||
|       - -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. | ||||
|   - 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):** | ||||
| 
 | ||||
| **Features**: | ||||
|  | ||||
| @ -8,7 +8,7 @@ RUN go mod download | ||||
| 
 | ||||
| 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 test -e /go/bin/headscale | ||||
| 
 | ||||
|  | ||||
| @ -9,7 +9,7 @@ RUN go mod download | ||||
| 
 | ||||
| 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 test -e /go/bin/headscale | ||||
| 
 | ||||
|  | ||||
| @ -8,7 +8,7 @@ RUN go mod download | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| # Debug image | ||||
|  | ||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -10,7 +10,7 @@ PROTO_SOURCES = $(call rwildcard,,*.proto) | ||||
| 
 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										25
									
								
								db.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								db.go
									
									
									
									
									
								
							| @ -2,9 +2,10 @@ package headscale | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/glebarez/sqlite" | ||||
| 	"gorm.io/driver/postgres" | ||||
| 	"gorm.io/driver/sqlite" | ||||
| 	"gorm.io/gorm" | ||||
| 	"gorm.io/gorm/logger" | ||||
| ) | ||||
| @ -81,10 +82,24 @@ func (h *Headscale) openDB() (*gorm.DB, error) { | ||||
| 
 | ||||
| 	switch h.dbType { | ||||
| 	case Sqlite: | ||||
| 		db, err = gorm.Open(sqlite.Open(h.dbString), &gorm.Config{ | ||||
| 			DisableForeignKeyConstraintWhenMigrating: true, | ||||
| 			Logger:                                   log, | ||||
| 		}) | ||||
| 		db, err = gorm.Open( | ||||
| 			sqlite.Open(h.dbString+"?_synchronous=1&_journal_mode=WAL"), | ||||
| 			&gorm.Config{ | ||||
| 				DisableForeignKeyConstraintWhenMigrating: true, | ||||
| 				Logger:                                   log, | ||||
| 			}, | ||||
| 		) | ||||
| 
 | ||||
| 		db.Exec("PRAGMA foreign_keys=ON") | ||||
| 
 | ||||
| 		// The pure Go SQLite library does not handle locking in
 | ||||
| 		// the same way as the C based one and we cant use the gorm
 | ||||
| 		// connection pool as of 2022/02/23.
 | ||||
| 		sqlDB, _ := db.DB() | ||||
| 		sqlDB.SetMaxIdleConns(1) | ||||
| 		sqlDB.SetMaxOpenConns(1) | ||||
| 		sqlDB.SetConnMaxIdleTime(time.Hour) | ||||
| 
 | ||||
| 	case Postgres: | ||||
| 		db, err = gorm.Open(postgres.Open(h.dbString), &gorm.Config{ | ||||
| 			DisableForeignKeyConstraintWhenMigrating: true, | ||||
|  | ||||
							
								
								
									
										21
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								go.mod
									
									
									
									
									
								
							| @ -8,6 +8,7 @@ require ( | ||||
| 	github.com/efekarakus/termcolor v1.0.1 | ||||
| 	github.com/fatih/set v0.2.1 | ||||
| 	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/grpc-ecosystem/go-grpc-middleware v1.3.0 | ||||
| 	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/pterm/pterm v0.12.36 | ||||
| 	github.com/rs/zerolog v1.26.1 | ||||
| 	github.com/soheilhy/cmux v0.1.5 | ||||
| 	github.com/spf13/cobra v1.3.0 | ||||
| 	github.com/spf13/viper v1.10.1 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	github.com/tailscale/hujson v0.0.0-20211215203138-ffd971c5f362 | ||||
| 	github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e | ||||
| 	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/sync v0.0.0-20210220032951-036812b2e83c | ||||
| 	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/yaml.v2 v2.4.0 | ||||
| 	gorm.io/datatypes v1.0.5 | ||||
| 	gorm.io/driver/postgres v1.2.3 | ||||
| 	gorm.io/driver/sqlite v1.2.6 | ||||
| 	gorm.io/gorm v1.22.5 | ||||
| 	gorm.io/driver/postgres v1.3.1 | ||||
| 	gorm.io/gorm v1.23.1 | ||||
| 	inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 | ||||
| 	tailscale.com v1.20.4 | ||||
| ) | ||||
| @ -58,8 +57,8 @@ require ( | ||||
| 	github.com/docker/go-connections v0.4.0 // indirect | ||||
| 	github.com/docker/go-units v0.4.0 // 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/glebarez/go-sqlite v1.14.7 // indirect | ||||
| 	github.com/go-playground/locales v0.14.0 // indirect | ||||
| 	github.com/go-playground/universal-translator v0.18.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-querystring v1.1.0 // 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/hashicorp/go-version v1.4.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/common v0.32.1 // 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/rogpeppe/go-internal 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/square/go-jose.v2 v2.6.0 // 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 | ||||
| ) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user