Skip to content

Commit 0c066e2

Browse files
committed
make compatible with go 1.19
1 parent c8920b2 commit 0c066e2

File tree

3 files changed

+31
-11
lines changed

3 files changed

+31
-11
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
@@ -100,7 +100,7 @@ jobs:
100100
- name: Ubuntu-20
101101
image: "ubuntu:20.04"
102102
suite: focal
103-
GOVER: '1.21'
103+
GOVER: '1.19'
104104
install: "make ca-certificates git curl"
105105
- name: Ubuntu-22
106106
image: "ubuntu:22.04"
@@ -109,12 +109,12 @@ jobs:
109109
- name: Debian-10
110110
image: "debian:buster"
111111
suite: buster
112-
GOVER: '1.21'
112+
GOVER: '1.19'
113113
install: "make ca-certificates git curl"
114114
- name: Debian-11
115115
image: "debian:bullseye"
116116
suite: bullseye
117-
GOVER: '1.21'
117+
GOVER: '1.19'
118118
install: "make ca-certificates git curl"
119119
- name: Debian-12
120120
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

0 commit comments

Comments
 (0)