On 2026-03-18 15:50, Claudio Jeker wrote:
> On Sat, Mar 07, 2026 at 06:04:27PM +0200, Atanas Vladimirov wrote:
>> Hi ports,
>> 
>> This is a patch to update the Prometheus to the latest 2.x LTS version
>> 2.53.5
>> I'm testing it the last few days and so far so good.
>> 
>> Please add me in CC because I'm not subscribed to the ports list.
>> 
>> Best wishes,
>> Atanas
> 
> The patch does not apply. It seems your mail client tried to be helpful
> and reformatted long lines like the SHA256 lines in distinfo.
>  

Sorry for that. I'm sending the patch as attachment now. 
Also, I'm trying to send it as plain text below:

###############

Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/Makefile,v
diff -u -p -r1.23 Makefile
--- Makefile    25 Sep 2023 17:07:36 -0000      1.23
+++ Makefile    7 Mar 2026 15:56:42 -0000
@@ -1,6 +1,6 @@
 COMMENT =              systems monitoring and alerting toolkit
 
-V =                    2.37.9
+V =                    2.53.5
 GH_ACCOUNT =           prometheus
 GH_PROJECT =           prometheus
 GH_TAGNAME =           v${V}
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/distinfo,v
diff -u -p -r1.12 distinfo
--- distinfo    6 Sep 2023 10:28:49 -0000       1.12
+++ distinfo    7 Mar 2026 15:56:42 -0000
@@ -1,6 +1,6 @@
-SHA256 (prometheus-2.37.9.tar.gz) = 
gSoQplOidWqzAzS9TPBmH5TepeWUw3LTPRNwQHRgpGo=
-SHA256 (prometheus-vendor-2.37.9.tar.gz) = 
ea+tEdN2yBEMBYY78U6tPOLI7uorbEhNL3o5/JTxaPI=
-SHA256 (prometheus-web-ui-2.37.9.tar.gz) = 
2z6Ohg/dUEwQ5NxTn1wfxwVrKOPJGAWgSXNxb2lX4MA=
-SIZE (prometheus-2.37.9.tar.gz) = 6048911
-SIZE (prometheus-vendor-2.37.9.tar.gz) = 11758451
-SIZE (prometheus-web-ui-2.37.9.tar.gz) = 2390133
+SHA256 (prometheus-2.53.5.tar.gz) = 
3ulsQxSyfWLL9Cy6faJccx0+kagkEsIviLKICOC4qYc=
+SHA256 (prometheus-vendor-2.53.5.tar.gz) = 
Ib7Qstt7Pk+9c2ypzmILnGiDUaamdFvijmqWTLLjfTk=
+SHA256 (prometheus-web-ui-2.53.5.tar.gz) = 
QD0m3gyT3HAtI/mtYYiF6J+2RgAz4a7qLghC3VV33dM=
+SIZE (prometheus-2.53.5.tar.gz) = 6226039
+SIZE (prometheus-vendor-2.53.5.tar.gz) = 15356568
+SIZE (prometheus-web-ui-2.53.5.tar.gz) = 2438498
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-Makefile,v
diff -u -p -r1.7 patch-Makefile
--- patches/patch-Makefile      28 Feb 2023 17:54:21 -0000      1.7
+++ patches/patch-Makefile      7 Mar 2026 15:56:42 -0000
@@ -3,7 +3,7 @@ The react build is provided via extra di
 Index: Makefile
 --- Makefile.orig
 +++ Makefile
-@@ -83,7 +83,7 @@ ui-lint:
+@@ -67,7 +67,7 @@ ui-lint:
        cd $(UI_PATH) && npm run lint
  
  .PHONY: assets
@@ -12,12 +12,12 @@ Index: Makefile
  
  .PHONY: assets-compress
  assets-compress: assets
-@@ -124,7 +124,7 @@ plugins/plugins.go: plugins.yml plugins/generate.go
+@@ -139,7 +139,7 @@ plugins/plugins.go: plugins.yml plugins/generate.go
  plugins: plugins/plugins.go
  
  .PHONY: build
--build: assets npm_licenses assets-compress common-build plugins
-+build: assets-compress common-build plugins
+-build: assets npm_licenses assets-compress plugins common-build
++build: assets-compress plugins common-build
  
  .PHONY: bench_tsdb
  bench_tsdb: $(PROMU)
Index: patches/patch-Makefile_common
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-Makefile_common,v
diff -u -p -r1.7 patch-Makefile_common
--- patches/patch-Makefile_common       28 Feb 2023 17:54:21 -0000      1.7
+++ patches/patch-Makefile_common       7 Mar 2026 15:56:42 -0000
@@ -3,8 +3,7 @@ Don't fetch promu form internet. This is
 Index: Makefile.common
 --- Makefile.common.orig
 +++ Makefile.common
-@@ -232,11 +232,7 @@ common-docker-manifest:
- promu: $(PROMU)
+@@ -243,11 +243,7 @@ promu: $(PROMU)
  
  $(PROMU):
 -      $(eval PROMU_TMP := $(shell mktemp -d))
Index: patches/patch-_promu_yml
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-_promu_yml,v
diff -u -p -r1.6 patch-_promu_yml
--- patches/patch-_promu_yml    6 Sep 2023 10:28:49 -0000       1.6
+++ patches/patch-_promu_yml    7 Mar 2026 15:56:42 -0000
@@ -3,18 +3,18 @@ Don't include user and hostname into bui
 Index: .promu.yml
 --- .promu.yml.orig
 +++ .promu.yml
-@@ -16,13 +16,13 @@ build:
-             - builtinassets
+@@ -18,12 +18,13 @@
          windows:
              - builtinassets
--    flags: -a
-+    flags: -v -a
-     ldflags: |
+             - stringlabels
+-    ldflags: |
 -        -X github.com/prometheus/common/version.Version={{.Version}}
 -        -X github.com/prometheus/common/version.Revision={{.Revision}}
 -        -X github.com/prometheus/common/version.Branch={{.Branch}}
 -        -X github.com/prometheus/common/version.BuildUser={{user}}@{{host}}
 -        -X github.com/prometheus/common/version.BuildDate={{date 
"20060102-15:04:05"}}
++    flags: -v
++    ldflags: |
 +        -X 
github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Version={{.Version}}
 +        -X 
github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Revision={{.Revision}}
 +        -X 
github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Branch={{.Branch}}
Index: patches/patch-mmap_openbsd
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-mmap_openbsd,v
diff -u -p -r1.3 patch-mmap_openbsd
--- patches/patch-mmap_openbsd  15 Jun 2023 08:52:07 -0000      1.3
+++ patches/patch-mmap_openbsd  7 Mar 2026 15:56:42 -0000
@@ -3,35 +3,42 @@ and https://github.com/prometheus/promet
 to make tsdb only use mmap and work around missing UBC support.
 
 diff --git go.mod go.mod
-index 39c3fcb5b..760b39a8b 100644
 --- go.mod
 +++ go.mod
-@@ -13,7 +13,6 @@ require (
-       github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245
-       github.com/digitalocean/godo v1.81.0
-       github.com/docker/docker v20.10.24+incompatible
+@@ -17,7 +17,6 @@
+       github.com/dennwc/varint v1.0.0
+       github.com/digitalocean/godo v1.117.0
+       github.com/docker/docker v26.1.5+incompatible
 -      github.com/edsrzf/mmap-go v1.1.0
-       github.com/envoyproxy/go-control-plane v0.10.3
-       github.com/envoyproxy/protoc-gen-validate v0.6.7
-       github.com/fsnotify/fsnotify v1.5.4
+       github.com/envoyproxy/go-control-plane/envoy v1.32.4
+       github.com/envoyproxy/protoc-gen-validate v1.2.1
+       github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb
+
 diff --git go.sum go.sum
-index e7aee4a9b..6b323945d 100644
 --- go.sum
 +++ go.sum
-@@ -202,8 +202,6 @@ github.com/eapache/go-resiliency v1.1.0/go.mod 
h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m
+@@ -160,8 +160,6 @@
  github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod 
h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
  github.com/eapache/queue v1.1.0/go.mod 
h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
  github.com/edsrzf/mmap-go v1.0.0/go.mod 
h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
 -github.com/edsrzf/mmap-go v1.1.0 
h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
 -github.com/edsrzf/mmap-go v1.1.0/go.mod 
h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
- github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod 
h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
- github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod 
h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
- github.com/emicklei/go-restful v2.9.5+incompatible/go.mod 
h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
+ github.com/emicklei/go-restful/v3 v3.11.0 
h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
+ github.com/emicklei/go-restful/v3 v3.11.0/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+ github.com/envoyproxy/go-control-plane v0.6.9/go.mod 
h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
+
 diff --git promql/query_logger.go promql/query_logger.go
-index 716e7749b..8eb1afce0 100644
 --- promql/query_logger.go
 +++ promql/query_logger.go
-@@ -22,13 +22,13 @@ import (
+@@ -16,7 +16,6 @@
+ import (
+       "context"
+       "encoding/json"
+-      "errors"
+       "fmt"
+       "io"
+       "os"
+@@ -25,16 +24,15 @@
        "time"
        "unicode/utf8"
  
@@ -46,43 +53,70 @@ index 716e7749b..8eb1afce0 100644
 +      mw            *fileutil.MmapWriter
        getNextIndex  chan int
        logger        log.Logger
+-      closer        io.Closer
        maxConcurrent int
-@@ -81,7 +81,7 @@ func logUnfinishedQueries(filename string, filesize int, 
logger log.Logger) {
+ }
+ 
+@@ -87,24 +85,7 @@
        }
  }
  
--func getMMapedFile(filename string, filesize int, logger log.Logger) ([]byte, 
error) {
+-type mmapedFile struct {
+-      f io.Closer
+-      m mmap.MMap
+-}
+-
+-func (f *mmapedFile) Close() error {
+-      err := f.m.Unmap()
+-      if err != nil {
+-              err = fmt.Errorf("mmapedFile: unmapping: %w", err)
+-      }
+-      if fErr := f.f.Close(); fErr != nil {
+-              return errors.Join(fmt.Errorf("close mmapedFile.f: %w", fErr), 
err)
+-      }
+-
+-      return err
+-}
+-
+-func getMMapedFile(filename string, filesize int, logger log.Logger) ([]byte, 
io.Closer, error) {
 +func getMMapedFile(filename string, filesize int, logger log.Logger) 
(*fileutil.MmapWriter, error) {
        file, err := os.OpenFile(filename, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 
0o666)
        if err != nil {
                absPath, pathErr := filepath.Abs(filename)
-@@ -92,19 +92,13 @@ func getMMapedFile(filename string, filesize int, logger 
log.Logger) ([]byte, er
-               return nil, err
+@@ -112,24 +93,16 @@
+                       absPath = filename
+               }
+               level.Error(logger).Log("msg", "Error opening query log file", 
"file", absPath, "err", err)
+-              return nil, nil, err
++              return nil, err
        }
  
 -      err = file.Truncate(int64(filesize))
--      if err != nil {
++      mw, err := fileutil.NewMmapWriterWithSize(file, filesize)
+       if err != nil {
+-              file.Close()
 -              level.Error(logger).Log("msg", "Error setting filesize.", 
"filesize", filesize, "err", err)
--              return nil, err
+-              return nil, nil, err
 -      }
 -
 -      fileAsBytes, err := mmap.Map(file, mmap.RDWR, 0)
-+      mw, err := fileutil.NewMmapWriterWithSize(file, filesize)
-       if err != nil {
+-      if err != nil {
+-              file.Close()
                level.Error(logger).Log("msg", "Failed to mmap", "file", 
filename, "Attempted size", filesize, "err", err)
-               return nil, err
+-              return nil, nil, err
++              return nil, err
        }
  
--      return fileAsBytes, err
+-      return fileAsBytes, &mmapedFile{f: file, m: fileAsBytes}, err
 +      return mw, err
  }
  
  func NewActiveQueryTracker(localStoragePath string, maxConcurrent int, logger 
log.Logger) *ActiveQueryTracker {
-@@ -116,14 +110,17 @@ func NewActiveQueryTracker(localStoragePath string, 
maxConcurrent int, logger lo
+@@ -141,15 +114,17 @@
        filename, filesize := filepath.Join(localStoragePath, 
"queries.active"), 1+maxConcurrent*entrySize
        logUnfinishedQueries(filename, filesize, logger)
  
--      fileAsBytes, err := getMMapedFile(filename, filesize, logger)
+-      fileAsBytes, closer, err := getMMapedFile(filename, filesize, logger)
 +      mw, err := getMMapedFile(filename, filesize, logger)
        if err != nil {
                panic("Unable to create mmap-ed active query log")
@@ -95,11 +129,12 @@ index 716e7749b..8eb1afce0 100644
 +      }
        activeQueryTracker := ActiveQueryTracker{
 -              mmapedFile:    fileAsBytes,
+-              closer:        closer,
 +              mw:            mw,
                getNextIndex:  make(chan int, maxConcurrent),
                logger:        logger,
                maxConcurrent: maxConcurrent,
-@@ -180,19 +177,27 @@ func (tracker ActiveQueryTracker) GetMaxConcurrent() int 
{
+@@ -206,19 +181,27 @@
  }
  
  func (tracker ActiveQueryTracker) Delete(insertIndex int) {
@@ -131,11 +166,26 @@ index 716e7749b..8eb1afce0 100644
                return i, nil
        case <-ctx.Done():
                return 0, ctx.Err()
+@@ -227,11 +210,11 @@
+ 
+ // Close closes tracker.
+ func (tracker *ActiveQueryTracker) Close() error {
+-      if tracker == nil || tracker.closer == nil {
++      if tracker == nil || tracker.mw == nil {
+               return nil
+       }
+-      if err := tracker.closer.Close(); err != nil {
+-              return fmt.Errorf("close ActiveQueryTracker.closer: %w", err)
++      if err := tracker.mw.Close(); err != nil {
++              return fmt.Errorf("close ActiveQueryTracker.mw: %w", err)
+       }
+       return nil
+ }
+
 diff --git promql/query_logger_test.go promql/query_logger_test.go
-index ad76fb992..bd92b81af 100644
 --- promql/query_logger_test.go
 +++ promql/query_logger_test.go
-@@ -19,13 +19,22 @@ import (
+@@ -20,13 +20,20 @@
        "testing"
  
        "github.com/grafana/regexp"
@@ -145,12 +195,10 @@ index ad76fb992..bd92b81af 100644
  
  func TestQueryLogging(t *testing.T) {
 -      fileAsBytes := make([]byte, 4096)
-+      file, err := ioutil.TempFile("", "mmapedFile")
++      dir := t.TempDir()
++      file, err := os.CreateTemp(dir, "mmapedFile")
 +      require.NoError(t, err)
 +
-+      filename := file.Name()
-+      defer os.Remove(filename)
-+
 +      mw, err := fileutil.NewMmapWriterWithSize(file, 4096)
 +      require.NoError(t, err)
 +
@@ -160,7 +208,7 @@ index ad76fb992..bd92b81af 100644
                logger:       nil,
                getNextIndex: make(chan int, 4),
        }
-@@ -45,6 +54,7 @@ func TestQueryLogging(t *testing.T) {
+@@ -46,6 +53,7 @@
                `^{"query":"","timestamp_sec":\d+}\x00*,$`,
                `^{"query":"SpecialCharQuery{host=\\"2132132\\", 
id=123123}","timestamp_sec":\d+}\x00*,$`,
        }
@@ -168,17 +216,15 @@ index ad76fb992..bd92b81af 100644
  
        // Check for inserts of queries.
        for i := 0; i < 4; i++ {
-@@ -67,9 +77,17 @@ func TestQueryLogging(t *testing.T) {
+@@ -68,9 +76,15 @@
  }
  
  func TestIndexReuse(t *testing.T) {
 -      queryBytes := make([]byte, 1+3*entrySize)
-+      file, err := ioutil.TempFile("", "mmapedFile")
++      dir := t.TempDir()
++      file, err := os.CreateTemp(dir, "mmapedFile")
 +      require.NoError(t, err)
 +
-+      filename := file.Name()
-+      defer os.Remove(filename)
-+
 +      mw, err := fileutil.NewMmapWriterWithSize(file, 1+3*entrySize)
 +      require.NoError(t, err)
 +
@@ -188,7 +234,7 @@ index ad76fb992..bd92b81af 100644
                logger:       nil,
                getNextIndex: make(chan int, 3),
        }
-@@ -91,6 +109,7 @@ func TestIndexReuse(t *testing.T) {
+@@ -92,6 +106,7 @@
                
`^{"query":"ThisShouldBeInsertedAtIndex2","timestamp_sec":\d+}\x00*,$`,
                `^{"query":"TestQuery3","timestamp_sec":\d+}\x00*,$`,
        }
@@ -196,26 +242,27 @@ index ad76fb992..bd92b81af 100644
  
        // Check all bytes and verify new query was inserted at index 2
        for i := 0; i < 3; i++ {
-@@ -110,10 +129,12 @@ func TestMMapFile(t *testing.T) {
-       filename := file.Name()
-       defer os.Remove(filename)
+@@ -109,10 +124,12 @@
+       fpath := filepath.Join(dir, "mmapedFile")
+       const data = "ab"
  
--      fileAsBytes, err := getMMapedFile(filename, 2, nil)
-+      mw, err := getMMapedFile(filename, 2, nil)
+-      fileAsBytes, closer, err := getMMapedFile(fpath, 2, nil)
++      mw, err := getMMapedFile(fpath, 2, nil)
 +      require.NoError(t, err)
- 
-+      fileAsBytes := mw.Bytes()
-+      _, err = mw.Write([]byte("ab"))
++
++      _, err = mw.Write([]byte(data))
        require.NoError(t, err)
--      copy(fileAsBytes, "ab")
+-      copy(fileAsBytes, data)
+-      require.NoError(t, closer.Close())
++      require.NoError(t, mw.Close())
  
-       f, err := os.Open(filename)
+       f, err := os.Open(fpath)
        require.NoError(t, err)
+
 diff --git tsdb/fileutil/mmap.go tsdb/fileutil/mmap.go
-index 4dbca4f97..e1c522472 100644
 --- tsdb/fileutil/mmap.go
 +++ tsdb/fileutil/mmap.go
-@@ -20,8 +20,31 @@ import (
+@@ -19,8 +19,31 @@
  )
  
  type MmapFile struct {
@@ -236,27 +283,27 @@ index 4dbca4f97..e1c522472 100644
 +      if size <= 0 {
 +              info, err := f.Stat()
 +              if err != nil {
-+                      return nil, errors.Wrap(err, "stat")
++                      return nil, fmt.Errorf("stat: %w", err)
 +              }
 +              size = int(info.Size())
 +      }
 +
 +      b, err := mmapRw(f, size)
 +      if err != nil {
-+              return nil, errors.Wrapf(err, "mmap, size %d", size)
++              return nil, fmt.Errorf("mmap, size %d: %w", size, err)
 +      }
 +      return &MmapFile{f: f, b: b, rw: true}, nil
  }
  
  func OpenMmapFile(path string) (*MmapFile, error) {
-@@ -46,22 +69,53 @@ func OpenMmapFileWithSize(path string, size int) (mf 
*MmapFile, retErr error) {
+@@ -45,22 +68,53 @@
                size = int(info.Size())
        }
  
 -      b, err := mmap(f, size)
 +      b, err := mmapRo(f, size)
        if err != nil {
-               return nil, errors.Wrapf(err, "mmap, size %d", size)
+               return nil, fmt.Errorf("mmap, size %d: %w", size, err)
        }
 +      return &MmapFile{f: f, b: b, closeFile: true}, nil
 +}
@@ -265,11 +312,11 @@ index 4dbca4f97..e1c522472 100644
 +func (f *MmapFile) resize(size int) error {
 +      err := f.Sync()
 +      if err != nil {
-+              return errors.Wrap(err, "resize sync")
++              return fmt.Errorf("resize sync: %w", err)
 +      }
 +      err = munmap(f.b)
 +      if err != nil {
-+              return errors.Wrap(err, "resize munmap")
++              return fmt.Errorf("resize munmap: %w", err)
 +      }
 +      var b []byte
 +      if f.rw {
@@ -278,7 +325,7 @@ index 4dbca4f97..e1c522472 100644
 +              b, err = mmapRo(f.f, size)
 +      }
 +      if err != nil {
-+              return errors.Wrap(err, "resize mmap")
++              return fmt.Errorf("resize mmap: %w", err)
 +      }
 +      f.b = b
 +      return nil
@@ -296,22 +343,22 @@ index 4dbca4f97..e1c522472 100644
  
        if err0 != nil {
 -              return err0
-+              return errors.Wrap(err0, "close sync")
++              return fmt.Errorf("close sync: %w", err0)
 +      }
 +      if err1 != nil {
-+              return errors.Wrap(err1, "close munmap")
++              return fmt.Errorf("close munmap: %w", err1)
 +      }
 +      if err2 != nil {
-+              return errors.Wrap(err2, "close file")
++              return fmt.Errorf("close file: %w", err2)
        }
 -      return err1
 +      return nil
  }
  
  func (f *MmapFile) File() *os.File {
+
 diff --git tsdb/fileutil/mmap_openbsd.go tsdb/fileutil/mmap_openbsd.go
 new file mode 100644
-index 000000000..39b590ee5
 --- /dev/null
 +++ tsdb/fileutil/mmap_openbsd.go
 @@ -0,0 +1,25 @@
@@ -340,9 +387,9 @@ index 000000000..39b590ee5
 +func (f *MmapFile) Sync() error {
 +      return unix.Msync(f.b, unix.MS_SYNC)
 +}
+
 diff --git tsdb/fileutil/mmap_sync.go tsdb/fileutil/mmap_sync.go
 new file mode 100644
-index 000000000..31fd98e6d
 --- /dev/null
 +++ tsdb/fileutil/mmap_sync.go
 @@ -0,0 +1,21 @@
@@ -367,11 +414,20 @@ index 000000000..31fd98e6d
 +func (f *MmapFile) Sync() error {
 +      return nil
 +}
+
 diff --git tsdb/fileutil/mmap_unix.go tsdb/fileutil/mmap_unix.go
-index 1fd7f48ff..c83a32011 100644
 --- tsdb/fileutil/mmap_unix.go
 +++ tsdb/fileutil/mmap_unix.go
-@@ -22,10 +22,14 @@ import (
+@@ -11,7 +11,7 @@
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
+ 
+-//go:build !windows && !plan9 && !js
++//go:build !windows && !plan9 && !js && !wasm
+ 
+ package fileutil
+ 
+@@ -21,10 +21,14 @@
        "golang.org/x/sys/unix"
  )
  
@@ -387,11 +443,11 @@ index 1fd7f48ff..c83a32011 100644
  func munmap(b []byte) (err error) {
        return unix.Munmap(b)
  }
+
 diff --git tsdb/fileutil/mmap_windows.go tsdb/fileutil/mmap_windows.go
-index b94226412..9caf36622 100644
 --- tsdb/fileutil/mmap_windows.go
 +++ tsdb/fileutil/mmap_windows.go
-@@ -19,7 +19,26 @@ import (
+@@ -19,7 +19,26 @@
        "unsafe"
  )
  
@@ -419,9 +475,9 @@ index b94226412..9caf36622 100644
        low, high := uint32(size), uint32(size>>32)
        h, errno := syscall.CreateFileMapping(syscall.Handle(f.Fd()), nil, 
syscall.PAGE_READONLY, high, low, nil)
        if h == 0 {
+
 diff --git tsdb/fileutil/writer.go tsdb/fileutil/writer.go
 new file mode 100644
-index 000000000..86c1504e4
 --- /dev/null
 +++ tsdb/fileutil/writer.go
 @@ -0,0 +1,156 @@
@@ -581,11 +637,11 @@ index 000000000..86c1504e4
 +      err = mw.Sync()
 +      return
 +}
+
 diff --git tsdb/index/index.go tsdb/index/index.go
-index 29295c45f..451c80582 100644
 --- tsdb/index/index.go
 +++ tsdb/index/index.go
-@@ -257,6 +257,7 @@ func (w *Writer) addPadding(size int) error {
+@@ -273,6 +273,7 @@
  type FileWriter struct {
        f    *os.File
        fbuf *bufio.Writer
@@ -593,7 +649,7 @@ index 29295c45f..451c80582 100644
        pos  uint64
        name string
  }
-@@ -266,14 +267,20 @@ func NewFileWriter(name string) (*FileWriter, error) {
+@@ -282,9 +283,11 @@
        if err != nil {
                return nil, err
        }
@@ -606,16 +662,18 @@ index 29295c45f..451c80582 100644
                pos:  0,
                name: name,
        }, nil
+@@ -294,6 +297,10 @@
+       return fw.pos
  }
  
 +func (fw *FileWriter) Bytes() []byte {
 +      return fw.mw.Bytes()
 +}
 +
- func (fw *FileWriter) Pos() uint64 {
-       return fw.pos
- }
-@@ -304,7 +311,7 @@ func (fw *FileWriter) WriteAt(buf []byte, pos uint64) 
error {
+ func (fw *FileWriter) Write(bufs ...[]byte) error {
+       for _, b := range bufs {
+               n, err := fw.fbuf.Write(b)
+@@ -320,7 +327,7 @@
        if err := fw.Flush(); err != nil {
                return err
        }
@@ -624,7 +682,7 @@ index 29295c45f..451c80582 100644
        return err
  }
  
-@@ -326,7 +333,7 @@ func (fw *FileWriter) Close() error {
+@@ -342,7 +349,7 @@
        if err := fw.Flush(); err != nil {
                return err
        }
@@ -633,7 +691,7 @@ index 29295c45f..451c80582 100644
                return err
        }
        return fw.f.Close()
-@@ -987,11 +994,11 @@ func (w *Writer) writePostings() error {
+@@ -1039,11 +1046,11 @@
        if err := w.fP.Flush(); err != nil {
                return err
        }

Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/Makefile,v
diff -u -p -r1.23 Makefile
--- Makefile	25 Sep 2023 17:07:36 -0000	1.23
+++ Makefile	7 Mar 2026 15:56:42 -0000
@@ -1,6 +1,6 @@
 COMMENT =		systems monitoring and alerting toolkit
 
-V =			2.37.9
+V =			2.53.5
 GH_ACCOUNT =		prometheus
 GH_PROJECT =		prometheus
 GH_TAGNAME =		v${V}
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/distinfo,v
diff -u -p -r1.12 distinfo
--- distinfo	6 Sep 2023 10:28:49 -0000	1.12
+++ distinfo	7 Mar 2026 15:56:42 -0000
@@ -1,6 +1,6 @@
-SHA256 (prometheus-2.37.9.tar.gz) = gSoQplOidWqzAzS9TPBmH5TepeWUw3LTPRNwQHRgpGo=
-SHA256 (prometheus-vendor-2.37.9.tar.gz) = ea+tEdN2yBEMBYY78U6tPOLI7uorbEhNL3o5/JTxaPI=
-SHA256 (prometheus-web-ui-2.37.9.tar.gz) = 2z6Ohg/dUEwQ5NxTn1wfxwVrKOPJGAWgSXNxb2lX4MA=
-SIZE (prometheus-2.37.9.tar.gz) = 6048911
-SIZE (prometheus-vendor-2.37.9.tar.gz) = 11758451
-SIZE (prometheus-web-ui-2.37.9.tar.gz) = 2390133
+SHA256 (prometheus-2.53.5.tar.gz) = 3ulsQxSyfWLL9Cy6faJccx0+kagkEsIviLKICOC4qYc=
+SHA256 (prometheus-vendor-2.53.5.tar.gz) = Ib7Qstt7Pk+9c2ypzmILnGiDUaamdFvijmqWTLLjfTk=
+SHA256 (prometheus-web-ui-2.53.5.tar.gz) = QD0m3gyT3HAtI/mtYYiF6J+2RgAz4a7qLghC3VV33dM=
+SIZE (prometheus-2.53.5.tar.gz) = 6226039
+SIZE (prometheus-vendor-2.53.5.tar.gz) = 15356568
+SIZE (prometheus-web-ui-2.53.5.tar.gz) = 2438498
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-Makefile,v
diff -u -p -r1.7 patch-Makefile
--- patches/patch-Makefile	28 Feb 2023 17:54:21 -0000	1.7
+++ patches/patch-Makefile	7 Mar 2026 15:56:42 -0000
@@ -3,7 +3,7 @@ The react build is provided via extra di
 Index: Makefile
 --- Makefile.orig
 +++ Makefile
-@@ -83,7 +83,7 @@ ui-lint:
+@@ -67,7 +67,7 @@ ui-lint:
  	cd $(UI_PATH) && npm run lint
  
  .PHONY: assets
@@ -12,12 +12,12 @@ Index: Makefile
  
  .PHONY: assets-compress
  assets-compress: assets
-@@ -124,7 +124,7 @@ plugins/plugins.go: plugins.yml plugins/generate.go
+@@ -139,7 +139,7 @@ plugins/plugins.go: plugins.yml plugins/generate.go
  plugins: plugins/plugins.go
  
  .PHONY: build
--build: assets npm_licenses assets-compress common-build plugins
-+build: assets-compress common-build plugins
+-build: assets npm_licenses assets-compress plugins common-build
++build: assets-compress plugins common-build
  
  .PHONY: bench_tsdb
  bench_tsdb: $(PROMU)
Index: patches/patch-Makefile_common
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-Makefile_common,v
diff -u -p -r1.7 patch-Makefile_common
--- patches/patch-Makefile_common	28 Feb 2023 17:54:21 -0000	1.7
+++ patches/patch-Makefile_common	7 Mar 2026 15:56:42 -0000
@@ -3,8 +3,7 @@ Don't fetch promu form internet. This is
 Index: Makefile.common
 --- Makefile.common.orig
 +++ Makefile.common
-@@ -232,11 +232,7 @@ common-docker-manifest:
- promu: $(PROMU)
+@@ -243,11 +243,7 @@ promu: $(PROMU)
  
  $(PROMU):
 -	$(eval PROMU_TMP := $(shell mktemp -d))
Index: patches/patch-_promu_yml
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-_promu_yml,v
diff -u -p -r1.6 patch-_promu_yml
--- patches/patch-_promu_yml	6 Sep 2023 10:28:49 -0000	1.6
+++ patches/patch-_promu_yml	7 Mar 2026 15:56:42 -0000
@@ -3,18 +3,18 @@ Don't include user and hostname into bui
 Index: .promu.yml
 --- .promu.yml.orig
 +++ .promu.yml
-@@ -16,13 +16,13 @@ build:
-             - builtinassets
+@@ -18,12 +18,13 @@
          windows:
              - builtinassets
--    flags: -a
-+    flags: -v -a
-     ldflags: |
+             - stringlabels
+-    ldflags: |
 -        -X github.com/prometheus/common/version.Version={{.Version}}
 -        -X github.com/prometheus/common/version.Revision={{.Revision}}
 -        -X github.com/prometheus/common/version.Branch={{.Branch}}
 -        -X github.com/prometheus/common/version.BuildUser={{user}}@{{host}}
 -        -X github.com/prometheus/common/version.BuildDate={{date "20060102-15:04:05"}}
++    flags: -v
++    ldflags: |
 +        -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Version={{.Version}}
 +        -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Revision={{.Revision}}
 +        -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Branch={{.Branch}}
Index: patches/patch-mmap_openbsd
===================================================================
RCS file: /cvs/ports/sysutils/prometheus/patches/patch-mmap_openbsd,v
diff -u -p -r1.3 patch-mmap_openbsd
--- patches/patch-mmap_openbsd	15 Jun 2023 08:52:07 -0000	1.3
+++ patches/patch-mmap_openbsd	7 Mar 2026 15:56:42 -0000
@@ -3,35 +3,42 @@ and https://github.com/prometheus/promet
 to make tsdb only use mmap and work around missing UBC support.
 
 diff --git go.mod go.mod
-index 39c3fcb5b..760b39a8b 100644
 --- go.mod
 +++ go.mod
-@@ -13,7 +13,6 @@ require (
- 	github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245
- 	github.com/digitalocean/godo v1.81.0
- 	github.com/docker/docker v20.10.24+incompatible
+@@ -17,7 +17,6 @@
+ 	github.com/dennwc/varint v1.0.0
+ 	github.com/digitalocean/godo v1.117.0
+ 	github.com/docker/docker v26.1.5+incompatible
 -	github.com/edsrzf/mmap-go v1.1.0
- 	github.com/envoyproxy/go-control-plane v0.10.3
- 	github.com/envoyproxy/protoc-gen-validate v0.6.7
- 	github.com/fsnotify/fsnotify v1.5.4
+ 	github.com/envoyproxy/go-control-plane/envoy v1.32.4
+ 	github.com/envoyproxy/protoc-gen-validate v1.2.1
+ 	github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb
+
 diff --git go.sum go.sum
-index e7aee4a9b..6b323945d 100644
 --- go.sum
 +++ go.sum
-@@ -202,8 +202,6 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m
+@@ -160,8 +160,6 @@
  github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
  github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
  github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
 -github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
 -github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
- github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
- github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
- github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
+ github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
+ github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
+
 diff --git promql/query_logger.go promql/query_logger.go
-index 716e7749b..8eb1afce0 100644
 --- promql/query_logger.go
 +++ promql/query_logger.go
-@@ -22,13 +22,13 @@ import (
+@@ -16,7 +16,6 @@
+ import (
+ 	"context"
+ 	"encoding/json"
+-	"errors"
+ 	"fmt"
+ 	"io"
+ 	"os"
+@@ -25,16 +24,15 @@
  	"time"
  	"unicode/utf8"
  
@@ -46,43 +53,70 @@ index 716e7749b..8eb1afce0 100644
 +	mw            *fileutil.MmapWriter
  	getNextIndex  chan int
  	logger        log.Logger
+-	closer        io.Closer
  	maxConcurrent int
-@@ -81,7 +81,7 @@ func logUnfinishedQueries(filename string, filesize int, logger log.Logger) {
+ }
+ 
+@@ -87,24 +85,7 @@
  	}
  }
  
--func getMMapedFile(filename string, filesize int, logger log.Logger) ([]byte, error) {
+-type mmapedFile struct {
+-	f io.Closer
+-	m mmap.MMap
+-}
+-
+-func (f *mmapedFile) Close() error {
+-	err := f.m.Unmap()
+-	if err != nil {
+-		err = fmt.Errorf("mmapedFile: unmapping: %w", err)
+-	}
+-	if fErr := f.f.Close(); fErr != nil {
+-		return errors.Join(fmt.Errorf("close mmapedFile.f: %w", fErr), err)
+-	}
+-
+-	return err
+-}
+-
+-func getMMapedFile(filename string, filesize int, logger log.Logger) ([]byte, io.Closer, error) {
 +func getMMapedFile(filename string, filesize int, logger log.Logger) (*fileutil.MmapWriter, error) {
  	file, err := os.OpenFile(filename, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0o666)
  	if err != nil {
  		absPath, pathErr := filepath.Abs(filename)
-@@ -92,19 +92,13 @@ func getMMapedFile(filename string, filesize int, logger log.Logger) ([]byte, er
- 		return nil, err
+@@ -112,24 +93,16 @@
+ 			absPath = filename
+ 		}
+ 		level.Error(logger).Log("msg", "Error opening query log file", "file", absPath, "err", err)
+-		return nil, nil, err
++		return nil, err
  	}
  
 -	err = file.Truncate(int64(filesize))
--	if err != nil {
++	mw, err := fileutil.NewMmapWriterWithSize(file, filesize)
+ 	if err != nil {
+-		file.Close()
 -		level.Error(logger).Log("msg", "Error setting filesize.", "filesize", filesize, "err", err)
--		return nil, err
+-		return nil, nil, err
 -	}
 -
 -	fileAsBytes, err := mmap.Map(file, mmap.RDWR, 0)
-+	mw, err := fileutil.NewMmapWriterWithSize(file, filesize)
- 	if err != nil {
+-	if err != nil {
+-		file.Close()
  		level.Error(logger).Log("msg", "Failed to mmap", "file", filename, "Attempted size", filesize, "err", err)
- 		return nil, err
+-		return nil, nil, err
++		return nil, err
  	}
  
--	return fileAsBytes, err
+-	return fileAsBytes, &mmapedFile{f: file, m: fileAsBytes}, err
 +	return mw, err
  }
  
  func NewActiveQueryTracker(localStoragePath string, maxConcurrent int, logger log.Logger) *ActiveQueryTracker {
-@@ -116,14 +110,17 @@ func NewActiveQueryTracker(localStoragePath string, maxConcurrent int, logger lo
+@@ -141,15 +114,17 @@
  	filename, filesize := filepath.Join(localStoragePath, "queries.active"), 1+maxConcurrent*entrySize
  	logUnfinishedQueries(filename, filesize, logger)
  
--	fileAsBytes, err := getMMapedFile(filename, filesize, logger)
+-	fileAsBytes, closer, err := getMMapedFile(filename, filesize, logger)
 +	mw, err := getMMapedFile(filename, filesize, logger)
  	if err != nil {
  		panic("Unable to create mmap-ed active query log")
@@ -95,11 +129,12 @@ index 716e7749b..8eb1afce0 100644
 +	}
  	activeQueryTracker := ActiveQueryTracker{
 -		mmapedFile:    fileAsBytes,
+-		closer:        closer,
 +		mw:            mw,
  		getNextIndex:  make(chan int, maxConcurrent),
  		logger:        logger,
  		maxConcurrent: maxConcurrent,
-@@ -180,19 +177,27 @@ func (tracker ActiveQueryTracker) GetMaxConcurrent() int {
+@@ -206,19 +181,27 @@
  }
  
  func (tracker ActiveQueryTracker) Delete(insertIndex int) {
@@ -131,11 +166,26 @@ index 716e7749b..8eb1afce0 100644
  		return i, nil
  	case <-ctx.Done():
  		return 0, ctx.Err()
+@@ -227,11 +210,11 @@
+ 
+ // Close closes tracker.
+ func (tracker *ActiveQueryTracker) Close() error {
+-	if tracker == nil || tracker.closer == nil {
++	if tracker == nil || tracker.mw == nil {
+ 		return nil
+ 	}
+-	if err := tracker.closer.Close(); err != nil {
+-		return fmt.Errorf("close ActiveQueryTracker.closer: %w", err)
++	if err := tracker.mw.Close(); err != nil {
++		return fmt.Errorf("close ActiveQueryTracker.mw: %w", err)
+ 	}
+ 	return nil
+ }
+
 diff --git promql/query_logger_test.go promql/query_logger_test.go
-index ad76fb992..bd92b81af 100644
 --- promql/query_logger_test.go
 +++ promql/query_logger_test.go
-@@ -19,13 +19,22 @@ import (
+@@ -20,13 +20,20 @@
  	"testing"
  
  	"github.com/grafana/regexp"
@@ -145,12 +195,10 @@ index ad76fb992..bd92b81af 100644
  
  func TestQueryLogging(t *testing.T) {
 -	fileAsBytes := make([]byte, 4096)
-+	file, err := ioutil.TempFile("", "mmapedFile")
++	dir := t.TempDir()
++	file, err := os.CreateTemp(dir, "mmapedFile")
 +	require.NoError(t, err)
 +
-+	filename := file.Name()
-+	defer os.Remove(filename)
-+
 +	mw, err := fileutil.NewMmapWriterWithSize(file, 4096)
 +	require.NoError(t, err)
 +
@@ -160,7 +208,7 @@ index ad76fb992..bd92b81af 100644
  		logger:       nil,
  		getNextIndex: make(chan int, 4),
  	}
-@@ -45,6 +54,7 @@ func TestQueryLogging(t *testing.T) {
+@@ -46,6 +53,7 @@
  		`^{"query":"","timestamp_sec":\d+}\x00*,$`,
  		`^{"query":"SpecialCharQuery{host=\\"2132132\\", id=123123}","timestamp_sec":\d+}\x00*,$`,
  	}
@@ -168,17 +216,15 @@ index ad76fb992..bd92b81af 100644
  
  	// Check for inserts of queries.
  	for i := 0; i < 4; i++ {
-@@ -67,9 +77,17 @@ func TestQueryLogging(t *testing.T) {
+@@ -68,9 +76,15 @@
  }
  
  func TestIndexReuse(t *testing.T) {
 -	queryBytes := make([]byte, 1+3*entrySize)
-+	file, err := ioutil.TempFile("", "mmapedFile")
++	dir := t.TempDir()
++	file, err := os.CreateTemp(dir, "mmapedFile")
 +	require.NoError(t, err)
 +
-+	filename := file.Name()
-+	defer os.Remove(filename)
-+
 +	mw, err := fileutil.NewMmapWriterWithSize(file, 1+3*entrySize)
 +	require.NoError(t, err)
 +
@@ -188,7 +234,7 @@ index ad76fb992..bd92b81af 100644
  		logger:       nil,
  		getNextIndex: make(chan int, 3),
  	}
-@@ -91,6 +109,7 @@ func TestIndexReuse(t *testing.T) {
+@@ -92,6 +106,7 @@
  		`^{"query":"ThisShouldBeInsertedAtIndex2","timestamp_sec":\d+}\x00*,$`,
  		`^{"query":"TestQuery3","timestamp_sec":\d+}\x00*,$`,
  	}
@@ -196,26 +242,27 @@ index ad76fb992..bd92b81af 100644
  
  	// Check all bytes and verify new query was inserted at index 2
  	for i := 0; i < 3; i++ {
-@@ -110,10 +129,12 @@ func TestMMapFile(t *testing.T) {
- 	filename := file.Name()
- 	defer os.Remove(filename)
+@@ -109,10 +124,12 @@
+ 	fpath := filepath.Join(dir, "mmapedFile")
+ 	const data = "ab"
  
--	fileAsBytes, err := getMMapedFile(filename, 2, nil)
-+	mw, err := getMMapedFile(filename, 2, nil)
+-	fileAsBytes, closer, err := getMMapedFile(fpath, 2, nil)
++	mw, err := getMMapedFile(fpath, 2, nil)
 +	require.NoError(t, err)
- 
-+	fileAsBytes := mw.Bytes()
-+	_, err = mw.Write([]byte("ab"))
++
++	_, err = mw.Write([]byte(data))
  	require.NoError(t, err)
--	copy(fileAsBytes, "ab")
+-	copy(fileAsBytes, data)
+-	require.NoError(t, closer.Close())
++	require.NoError(t, mw.Close())
  
- 	f, err := os.Open(filename)
+ 	f, err := os.Open(fpath)
  	require.NoError(t, err)
+
 diff --git tsdb/fileutil/mmap.go tsdb/fileutil/mmap.go
-index 4dbca4f97..e1c522472 100644
 --- tsdb/fileutil/mmap.go
 +++ tsdb/fileutil/mmap.go
-@@ -20,8 +20,31 @@ import (
+@@ -19,8 +19,31 @@
  )
  
  type MmapFile struct {
@@ -236,27 +283,27 @@ index 4dbca4f97..e1c522472 100644
 +	if size <= 0 {
 +		info, err := f.Stat()
 +		if err != nil {
-+			return nil, errors.Wrap(err, "stat")
++			return nil, fmt.Errorf("stat: %w", err)
 +		}
 +		size = int(info.Size())
 +	}
 +
 +	b, err := mmapRw(f, size)
 +	if err != nil {
-+		return nil, errors.Wrapf(err, "mmap, size %d", size)
++		return nil, fmt.Errorf("mmap, size %d: %w", size, err)
 +	}
 +	return &MmapFile{f: f, b: b, rw: true}, nil
  }
  
  func OpenMmapFile(path string) (*MmapFile, error) {
-@@ -46,22 +69,53 @@ func OpenMmapFileWithSize(path string, size int) (mf *MmapFile, retErr error) {
+@@ -45,22 +68,53 @@
  		size = int(info.Size())
  	}
  
 -	b, err := mmap(f, size)
 +	b, err := mmapRo(f, size)
  	if err != nil {
- 		return nil, errors.Wrapf(err, "mmap, size %d", size)
+ 		return nil, fmt.Errorf("mmap, size %d: %w", size, err)
  	}
 +	return &MmapFile{f: f, b: b, closeFile: true}, nil
 +}
@@ -265,11 +312,11 @@ index 4dbca4f97..e1c522472 100644
 +func (f *MmapFile) resize(size int) error {
 +	err := f.Sync()
 +	if err != nil {
-+		return errors.Wrap(err, "resize sync")
++		return fmt.Errorf("resize sync: %w", err)
 +	}
 +	err = munmap(f.b)
 +	if err != nil {
-+		return errors.Wrap(err, "resize munmap")
++		return fmt.Errorf("resize munmap: %w", err)
 +	}
 +	var b []byte
 +	if f.rw {
@@ -278,7 +325,7 @@ index 4dbca4f97..e1c522472 100644
 +		b, err = mmapRo(f.f, size)
 +	}
 +	if err != nil {
-+		return errors.Wrap(err, "resize mmap")
++		return fmt.Errorf("resize mmap: %w", err)
 +	}
 +	f.b = b
 +	return nil
@@ -296,22 +343,22 @@ index 4dbca4f97..e1c522472 100644
  
  	if err0 != nil {
 -		return err0
-+		return errors.Wrap(err0, "close sync")
++		return fmt.Errorf("close sync: %w", err0)
 +	}
 +	if err1 != nil {
-+		return errors.Wrap(err1, "close munmap")
++		return fmt.Errorf("close munmap: %w", err1)
 +	}
 +	if err2 != nil {
-+		return errors.Wrap(err2, "close file")
++		return fmt.Errorf("close file: %w", err2)
  	}
 -	return err1
 +	return nil
  }
  
  func (f *MmapFile) File() *os.File {
+
 diff --git tsdb/fileutil/mmap_openbsd.go tsdb/fileutil/mmap_openbsd.go
 new file mode 100644
-index 000000000..39b590ee5
 --- /dev/null
 +++ tsdb/fileutil/mmap_openbsd.go
 @@ -0,0 +1,25 @@
@@ -340,9 +387,9 @@ index 000000000..39b590ee5
 +func (f *MmapFile) Sync() error {
 +	return unix.Msync(f.b, unix.MS_SYNC)
 +}
+
 diff --git tsdb/fileutil/mmap_sync.go tsdb/fileutil/mmap_sync.go
 new file mode 100644
-index 000000000..31fd98e6d
 --- /dev/null
 +++ tsdb/fileutil/mmap_sync.go
 @@ -0,0 +1,21 @@
@@ -367,11 +414,20 @@ index 000000000..31fd98e6d
 +func (f *MmapFile) Sync() error {
 +	return nil
 +}
+
 diff --git tsdb/fileutil/mmap_unix.go tsdb/fileutil/mmap_unix.go
-index 1fd7f48ff..c83a32011 100644
 --- tsdb/fileutil/mmap_unix.go
 +++ tsdb/fileutil/mmap_unix.go
-@@ -22,10 +22,14 @@ import (
+@@ -11,7 +11,7 @@
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
+ 
+-//go:build !windows && !plan9 && !js
++//go:build !windows && !plan9 && !js && !wasm
+ 
+ package fileutil
+ 
+@@ -21,10 +21,14 @@
  	"golang.org/x/sys/unix"
  )
  
@@ -387,11 +443,11 @@ index 1fd7f48ff..c83a32011 100644
  func munmap(b []byte) (err error) {
  	return unix.Munmap(b)
  }
+
 diff --git tsdb/fileutil/mmap_windows.go tsdb/fileutil/mmap_windows.go
-index b94226412..9caf36622 100644
 --- tsdb/fileutil/mmap_windows.go
 +++ tsdb/fileutil/mmap_windows.go
-@@ -19,7 +19,26 @@ import (
+@@ -19,7 +19,26 @@
  	"unsafe"
  )
  
@@ -419,9 +475,9 @@ index b94226412..9caf36622 100644
  	low, high := uint32(size), uint32(size>>32)
  	h, errno := syscall.CreateFileMapping(syscall.Handle(f.Fd()), nil, syscall.PAGE_READONLY, high, low, nil)
  	if h == 0 {
+
 diff --git tsdb/fileutil/writer.go tsdb/fileutil/writer.go
 new file mode 100644
-index 000000000..86c1504e4
 --- /dev/null
 +++ tsdb/fileutil/writer.go
 @@ -0,0 +1,156 @@
@@ -581,11 +637,11 @@ index 000000000..86c1504e4
 +	err = mw.Sync()
 +	return
 +}
+
 diff --git tsdb/index/index.go tsdb/index/index.go
-index 29295c45f..451c80582 100644
 --- tsdb/index/index.go
 +++ tsdb/index/index.go
-@@ -257,6 +257,7 @@ func (w *Writer) addPadding(size int) error {
+@@ -273,6 +273,7 @@
  type FileWriter struct {
  	f    *os.File
  	fbuf *bufio.Writer
@@ -593,7 +649,7 @@ index 29295c45f..451c80582 100644
  	pos  uint64
  	name string
  }
-@@ -266,14 +267,20 @@ func NewFileWriter(name string) (*FileWriter, error) {
+@@ -282,9 +283,11 @@
  	if err != nil {
  		return nil, err
  	}
@@ -606,16 +662,18 @@ index 29295c45f..451c80582 100644
  		pos:  0,
  		name: name,
  	}, nil
+@@ -294,6 +297,10 @@
+ 	return fw.pos
  }
  
 +func (fw *FileWriter) Bytes() []byte {
 +	return fw.mw.Bytes()
 +}
 +
- func (fw *FileWriter) Pos() uint64 {
- 	return fw.pos
- }
-@@ -304,7 +311,7 @@ func (fw *FileWriter) WriteAt(buf []byte, pos uint64) error {
+ func (fw *FileWriter) Write(bufs ...[]byte) error {
+ 	for _, b := range bufs {
+ 		n, err := fw.fbuf.Write(b)
+@@ -320,7 +327,7 @@
  	if err := fw.Flush(); err != nil {
  		return err
  	}
@@ -624,7 +682,7 @@ index 29295c45f..451c80582 100644
  	return err
  }
  
-@@ -326,7 +333,7 @@ func (fw *FileWriter) Close() error {
+@@ -342,7 +349,7 @@
  	if err := fw.Flush(); err != nil {
  		return err
  	}
@@ -633,7 +691,7 @@ index 29295c45f..451c80582 100644
  		return err
  	}
  	return fw.f.Close()
-@@ -987,11 +994,11 @@ func (w *Writer) writePostings() error {
+@@ -1039,11 +1046,11 @@
  	if err := w.fP.Flush(); err != nil {
  		return err
  	}

Reply via email to