Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
/binaries
/coverage*.txt
/api/*.html
/internal/core/VERSION
/internal/servers/hls/hls.min.js
/internal/staticsources/rpicamera/mtxrpicam_*/
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ require (
github.com/fsnotify/fsnotify v1.10.1
github.com/gin-contrib/pprof v1.5.4
github.com/gin-gonic/gin v1.12.0
github.com/go-git/go-billy/v5 v5.9.0
github.com/go-git/go-git/v5 v5.19.1
github.com/goccy/go-yaml v1.19.2
github.com/golang-jwt/jwt/v5 v5.3.1
Expand Down Expand Up @@ -62,6 +61,7 @@ require (
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
github.com/gin-contrib/sse v1.1.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.9.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.30.1 // indirect
Expand Down
44 changes: 32 additions & 12 deletions internal/core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package core

import (
"context"
_ "embed"
"fmt"
"os"
"os/signal"
Expand Down Expand Up @@ -38,11 +37,6 @@ import (
"github.com/bluenviron/mediamtx/internal/upgrade"
)

//go:generate go run ./versiongetter

//go:embed VERSION
var version []byte

var started = time.Now()

var defaultConfPaths = []string{
Expand Down Expand Up @@ -76,6 +70,32 @@ func getArch() string {
return arch
}

func versionString() string {
info, ok := debug.ReadBuildInfo()
if !ok {
return "unknown"
}
if info.Main.Version != "" && info.Main.Version != "(devel)" {
return info.Main.Version
}
var rev, modified string
for _, s := range info.Settings {
switch s.Key {
case "vcs.revision":
rev = s.Value
case "vcs.modified":
modified = s.Value
}
}
if rev == "" {
return "devel"
}
if modified == "true" {
return rev[:8] + "-dirty"
}
return rev[:8]
}

func atLeastOneRecordDeleteAfter(pathConfs map[string]*conf.Path) bool {
for _, e := range pathConfs {
if e.RecordDeleteAfter != 0 {
Expand Down Expand Up @@ -138,7 +158,7 @@ type Core struct {
// New allocates a Core.
func New(args []string) (*Core, bool) {
parser, err := kong.New(&cli,
kong.Description("MediaMTX "+string(version)+", "+runtime.GOOS+", "+getArch()),
kong.Description("MediaMTX "+versionString()+", "+runtime.GOOS+", "+getArch()),
kong.UsageOnError(),
kong.ValueFormatter(func(value *kong.Value) string {
switch value.Name {
Expand All @@ -157,13 +177,13 @@ func New(args []string) (*Core, bool) {
parser.FatalIfErrorf(err)

if cli.Version {
fmt.Println(string(version))
fmt.Println(versionString())
os.Exit(0)
}

if cli.CheckVersion {
var newVersionAvailable bool
newVersionAvailable, err = upgrade.CheckVersion(string(version), getArch())
newVersionAvailable, err = upgrade.CheckVersion(versionString(), getArch())
if err != nil {
fmt.Printf("ERR: %v\n", err)
os.Exit(1)
Expand All @@ -175,7 +195,7 @@ func New(args []string) (*Core, bool) {
}

if cli.Upgrade {
err = upgrade.Upgrade(string(version), getArch())
err = upgrade.Upgrade(versionString(), getArch())
if err != nil {
fmt.Printf("ERR: %v\n", err)
os.Exit(1)
Expand Down Expand Up @@ -320,7 +340,7 @@ func (p *Core) createResources(initial bool) error {
}

if initial {
p.Log(logger.Info, "MediaMTX %s, %s, %s", string(version), runtime.GOOS, getArch())
p.Log(logger.Info, "MediaMTX %s, %s, %s", versionString(), runtime.GOOS, getArch())

if p.confPath != "" {
a, _ := filepath.Abs(p.confPath)
Expand Down Expand Up @@ -697,7 +717,7 @@ func (p *Core) createResources(initial bool) error {
if p.conf.API &&
p.api == nil {
i := &api.API{
Version: string(version),
Version: versionString(),
Started: started,
Address: p.conf.APIAddress,
DumpPackets: p.conf.DumpPackets,
Expand Down
143 changes: 0 additions & 143 deletions internal/core/versiongetter/main.go

This file was deleted.

18 changes: 10 additions & 8 deletions scripts/binaries.mk
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
BINARY_NAME = mediamtx
VERSION = $(shell git describe --tags)
VERSION_NOV = $(shell git describe --tags --abbrev=0 | sed 's/^v//')

define DOCKERFILE_BINARIES
FROM $(BASE_IMAGE) AS build-base
Expand All @@ -16,32 +18,32 @@ RUN go generate ./...
FROM build-base AS build-windows-amd64
RUN GOOS=windows GOARCH=amd64 go build -o "tmp/$(BINARY_NAME).exe"
RUN go install github.com/tc-hib/go-winres@v0.3.3
RUN go-winres patch --in scripts/winres.json --product-version "$$(git describe --tags --abbrev=0 | sed 's/^v//')" --file-version "$$(git describe --tags --abbrev=0 | sed 's/^v//')" tmp/mediamtx.exe
RUN cd tmp && zip -q "../binaries/$(BINARY_NAME)_$$(cat ../internal/core/VERSION)_windows_amd64.zip" "$(BINARY_NAME).exe" mediamtx.yml LICENSE
RUN go-winres patch --in scripts/winres.json --product-version "$(VERSION_NOV)" --file-version "$(VERSION_NOV)" tmp/mediamtx.exe
RUN cd tmp && zip -q "../binaries/$(BINARY_NAME)_$(VERSION)_windows_amd64.zip" "$(BINARY_NAME).exe" mediamtx.yml LICENSE

FROM build-base AS build-linux-amd64
RUN GOOS=linux GOARCH=amd64 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_linux_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM build-base AS build-darwin-amd64
RUN GOOS=darwin GOARCH=amd64 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_darwin_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_darwin_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM build-base AS build-darwin-arm64
RUN GOOS=darwin GOARCH=arm64 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_darwin_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_darwin_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM build-base AS build-linux-armv6
RUN GOOS=linux GOARCH=arm GOARM=6 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_armv6.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_linux_armv6.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM build-base AS build-linux-armv7
RUN GOOS=linux GOARCH=arm GOARM=7 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_armv7.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_linux_armv7.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM build-base AS build-linux-arm64
RUN GOOS=linux GOARCH=arm64 go build -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$(VERSION)_linux_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE

FROM $(BASE_IMAGE)
COPY --from=build-windows-amd64 /s/binaries /s/binaries
Expand Down