| 
									
										
										
										
											2021-06-28 12:17:20 +02:00
										 |  |  | #!/bin/sh
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-28 13:08:35 +01:00
										 |  |  | set -e | 
					
						
							| 
									
										
										
										
											2021-06-28 12:17:20 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-28 13:08:35 +01:00
										 |  |  | # Log and execute provided args. | 
					
						
							|  |  |  | log_exec() { echo "$ ${*}"; "$@"; } | 
					
						
							| 
									
										
										
										
											2022-04-28 13:32:53 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-28 13:08:35 +01:00
										 |  |  | # Grab environment variables and set defaults + requirements. | 
					
						
							| 
									
										
										
										
											2025-08-09 16:23:00 +02:00
										 |  |  | GO_BUILDTAGS="${GO_BUILDTAGS-} netgo osusergo static_build timetzdata" | 
					
						
							| 
									
										
										
										
											2023-05-28 13:08:35 +01:00
										 |  |  | GO_LDFLAGS="${GO_LDFLAGS-} -s -w -extldflags '-static' -X 'main.Version=${VERSION:-$(git describe --tags --abbrev=0)}'" | 
					
						
							|  |  |  | GO_GCFLAGS=${GO_GCFLAGS-} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Maintain old $DEBUG compat. | 
					
						
							|  |  |  | [ ! -z "$DEBUG" ] && \
 | 
					
						
							|  |  |  |     GO_BUILDTAGS="${GO_BUILDTAGS} debugenv" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Available Go build tags, with explanation, followed by benefits of enabling it: | 
					
						
							| 
									
										
										
										
											2024-10-14 09:59:12 +00:00
										 |  |  | # - timetzdata:     embed timezone database inside binary                          (allow setting local time inside Docker containers, at cost of 450KB) | 
					
						
							| 
									
										
										
										
											2025-02-06 12:14:37 +01:00
										 |  |  | # - nootel:         disables compiling-in otel support                             (reduced binary size) | 
					
						
							| 
									
										
										
										
											2024-10-14 09:59:12 +00:00
										 |  |  | # - noerrcaller:    disables caller function prefix in errors                      (slightly better performance, at cost of err readability) | 
					
						
							|  |  |  | # - debug:          enables /debug/pprof endpoint                                  (adds debug, at performance cost) | 
					
						
							|  |  |  | # - debugenv:       enables /debug/pprof endpoint if DEBUG=1 env during runtime    (adds debug, at performance cost) | 
					
						
							|  |  |  | # - moderncsqlite3: reverts to using the C-to-Go transpiled SQLite driver          (disables the WASM-based SQLite driver) | 
					
						
							| 
									
										
										
										
											2025-02-03 12:42:06 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # - nowasmffmpeg: [UNSUPPORTED] removes WebAssembly ffmpeg, ffprobe, relying instead on host-installed ffmpeg, ffprobe binaries. | 
					
						
							|  |  |  | # - nowasm:       [UNSUPPORTED] removes all WebAssembly from build. It is the same as passing "nowasmffmpeg, moderncsqlite3". | 
					
						
							| 
									
										
										
										
											2023-05-28 13:08:35 +01:00
										 |  |  | log_exec env CGO_ENABLED=0 go build -trimpath -v \
 | 
					
						
							|  |  |  |                        -tags "${GO_BUILDTAGS}" \
 | 
					
						
							|  |  |  |                        -ldflags="${GO_LDFLAGS}" \
 | 
					
						
							|  |  |  |                        -gcflags="${GO_GCFLAGS}" \
 | 
					
						
							| 
									
										
										
										
											2021-08-26 11:19:52 +01:00
										 |  |  |                        ./cmd/gotosocial |