Skip to content

Commit 6e5b3fd

Browse files
committed
make compatible with go 1.19
1 parent 7e8f254 commit 6e5b3fd

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
BOTO_CONFIG: /dev/null
3131
GO111MODULE: "on"
3232
GOPROXY: "https://proxy.golang.org"
33-
GOVER: '1.21'
33+
GOVER: '1.19'
3434

3535
steps:
3636
- name: Checkout repository
@@ -99,7 +99,7 @@ jobs:
9999
- name: Ubuntu-20
100100
image: "ubuntu:20.04"
101101
suite: focal
102-
GOVER: '1.21'
102+
GOVER: '1.19'
103103
install: "make ca-certificates git curl"
104104
- name: Ubuntu-22
105105
image: "ubuntu:22.04"
@@ -108,12 +108,12 @@ jobs:
108108
- name: Debian-10
109109
image: "debian:buster"
110110
suite: buster
111-
GOVER: '1.21'
111+
GOVER: '1.19'
112112
install: "make ca-certificates git curl"
113113
- name: Debian-11
114114
image: "debian:bullseye"
115115
suite: bullseye
116-
GOVER: '1.21'
116+
GOVER: '1.19'
117117
install: "make ca-certificates git curl"
118118
- name: Debian-12
119119
image: "debian:bookworm"

deb/reflist.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,10 @@ func bucketRefPrefix(ref []byte) []byte {
428428
ref = ref[len(libPrefix):]
429429
}
430430

431-
prefixLen := min(maxPrefixLen, len(ref))
431+
prefixLen := len(ref)
432+
if maxPrefixLen < prefixLen {
433+
prefixLen = maxPrefixLen
434+
}
432435
prefix, _, _ := bytes.Cut(ref[:prefixLen], []byte{' '})
433436
return prefix
434437
}
@@ -715,9 +718,16 @@ func (set *RefListDigestSet) ForEach(handler func(digest []byte) error) error {
715718
return nil
716719
}
717720

721+
// workaround for: conversion of slices to arrays requires go1.20 or later
722+
func newRefListArray(digest []byte) reflistDigestArray {
723+
var array reflistDigestArray
724+
copy(array[:], digest)
725+
return array
726+
}
727+
718728
// Add adds digest to set, doing nothing if the digest was already present
719729
func (set *RefListDigestSet) Add(digest []byte) {
720-
set.items[reflistDigestArray(digest)] = struct{}{}
730+
set.items[newRefListArray(digest)] = struct{}{}
721731
}
722732

723733
// AddAllInRefList adds all the bucket digests in a SplitRefList to the set
@@ -731,13 +741,13 @@ func (set *RefListDigestSet) AddAllInRefList(sl *SplitRefList) {
731741

732742
// Has checks whether a digest is part of set
733743
func (set *RefListDigestSet) Has(digest []byte) bool {
734-
_, ok := set.items[reflistDigestArray(digest)]
744+
_, ok := set.items[newRefListArray(digest)]
735745
return ok
736746
}
737747

738748
// Remove removes a digest from set
739749
func (set *RefListDigestSet) Remove(digest []byte) {
740-
delete(set.items, reflistDigestArray(digest))
750+
delete(set.items, newRefListArray(digest))
741751
}
742752

743753
// RemoveAll removes all the digests in other from the current set
@@ -776,10 +786,20 @@ func segmentPrefix(encodedDigest string) []byte {
776786
return []byte(fmt.Sprintf("F%s-", encodedDigest))
777787
}
778788

789+
// workaround for go 1.19 instead of bytes.Clone
790+
func cloneBytes(b []byte) []byte {
791+
if b == nil {
792+
return nil
793+
}
794+
cloned := make([]byte, len(b))
795+
copy(cloned, b)
796+
return cloned
797+
}
798+
779799
func segmentIndexKey(prefix []byte, idx int) []byte {
780800
// Assume most buckets won't have more than 0xFFFF = ~65k segments (which
781801
// would be an extremely large bucket!).
782-
return append(bytes.Clone(prefix), []byte(fmt.Sprintf("%04x", idx))...)
802+
return append(cloneBytes(prefix), []byte(fmt.Sprintf("%04x", idx))...)
783803
}
784804

785805
// AllBucketDigests returns a set of all the bucket digests in the database
@@ -861,7 +881,7 @@ func (collection *RefListCollection) loadBuckets(sl *SplitRefList) error {
861881
var bucket *PackageRefList
862882

863883
if digest := sl.Buckets[idx]; len(digest) > 0 {
864-
cacheKey := reflistDigestArray(digest)
884+
cacheKey := newRefListArray(digest)
865885
bucket = collection.cache[cacheKey]
866886
if bucket == nil {
867887
bucket = NewPackageRefList()

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/aptly-dev/aptly
22

3-
go 1.21
3+
go 1.19
44

55
require (
66
github.com/AlekSi/pointer v1.2.0

system/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ FROM debian:bookworm-slim
22

33
RUN apt-get update -y && apt-get install -y --no-install-recommends curl gnupg && apt-get clean && rm -rf /var/lib/apt/lists/*
44

5-
RUN echo deb http://deb.debian.org/debian bookworm-backports main > /etc/apt/sources.list.d/backports.list
5+
#RUN echo deb http://deb.debian.org/debian bookworm-backports main > /etc/apt/sources.list.d/backports.list
66
RUN apt-get update && \
7-
apt-get install -y --no-install-recommends apg bzip2 xz-utils ca-certificates golang/bookworm-backports golang-go/bookworm-backports golang-doc/bookworm-backports golang-src/bookworm-backports make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto && \
7+
apt-get install -y --no-install-recommends apg bzip2 xz-utils ca-certificates golang golang-go golang-doc golang-src make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto g++ && \
88
apt-get clean && rm -rf /var/lib/apt/lists/*
99

1010
RUN useradd -m --shell /bin/sh --home-dir /var/lib/aptly aptly

0 commit comments

Comments
 (0)