Fri Aug 25 18:29:24 2023 UTC ()
go120: update to 1.20.7 (security)

go1.20.7 (released 2023-08-01) includes a security fix to the crypto/tls
package, as well as bug fixes to the assembler and the compiler. See the Go
1.20.7 milestone on our issue tracker for details.


(bsiegert)
diff -r1.184 -r1.185 pkgsrc/lang/go/version.mk
diff -r1.2 -r1.3 pkgsrc/lang/go120/Makefile
diff -r1.7 -r1.8 pkgsrc/lang/go120/distinfo

cvs diff -r1.184 -r1.185 pkgsrc/lang/go/version.mk (switch to unified diff)

--- pkgsrc/lang/go/version.mk 2023/08/12 13:02:54 1.184
+++ pkgsrc/lang/go/version.mk 2023/08/25 18:29:24 1.185
@@ -1,67 +1,67 @@ @@ -1,67 +1,67 @@
1# $NetBSD: version.mk,v 1.184 2023/08/12 13:02:54 bsiegert Exp $ 1# $NetBSD: version.mk,v 1.185 2023/08/25 18:29:24 bsiegert Exp $
2 2
3# 3#
4# If bsd.prefs.mk is included before go-package.mk in a package, then this 4# If bsd.prefs.mk is included before go-package.mk in a package, then this
5# file must be included directly in the package prior to bsd.prefs.mk. 5# file must be included directly in the package prior to bsd.prefs.mk.
6# 6#
7.include "go-vars.mk" 7.include "go-vars.mk"
8 8
9GO120_VERSION= 1.20.6 9GO120_VERSION= 1.20.7
10GO119_VERSION= 1.19.12 10GO119_VERSION= 1.19.12
11GO118_VERSION= 1.18.10 11GO118_VERSION= 1.18.10
12GO14_VERSION= 1.4.3 12GO14_VERSION= 1.4.3
13 13
14.include "../../mk/bsd.prefs.mk" 14.include "../../mk/bsd.prefs.mk"
15 15
16GO_VERSION_DEFAULT?= 120 16GO_VERSION_DEFAULT?= 120
17 17
18.if !empty(GO_VERSION_DEFAULT) 18.if !empty(GO_VERSION_DEFAULT)
19GOVERSSUFFIX= ${GO_VERSION_DEFAULT} 19GOVERSSUFFIX= ${GO_VERSION_DEFAULT}
20.endif 20.endif
21 21
22# How to find the Go tool 22# How to find the Go tool
23GO= ${PREFIX}/go${GOVERSSUFFIX}/bin/go 23GO= ${PREFIX}/go${GOVERSSUFFIX}/bin/go
24 24
25# Build dependency for Go 25# Build dependency for Go
26GO_PACKAGE_DEP= go${GOVERSSUFFIX}-${GO${GOVERSSUFFIX}_VERSION}*:../../lang/go${GOVERSSUFFIX} 26GO_PACKAGE_DEP= go${GOVERSSUFFIX}-${GO${GOVERSSUFFIX}_VERSION}*:../../lang/go${GOVERSSUFFIX}
27 27
28ONLY_FOR_PLATFORM= *-*-i386 *-*-x86_64 *-*-earmv[67]hf *-*-aarch64 28ONLY_FOR_PLATFORM= *-*-i386 *-*-x86_64 *-*-earmv[67]hf *-*-aarch64
29NOT_FOR_PLATFORM= SunOS-*-i386 29NOT_FOR_PLATFORM= SunOS-*-i386
30.if ${MACHINE_ARCH} == "i386" 30.if ${MACHINE_ARCH} == "i386"
31GOARCH= 386 31GOARCH= 386
32GOCHAR= 8 32GOCHAR= 8
33.elif ${MACHINE_ARCH} == "x86_64" 33.elif ${MACHINE_ARCH} == "x86_64"
34GOARCH= amd64 34GOARCH= amd64
35GOCHAR= 6 35GOCHAR= 6
36# go118 hardcodes GOARCH=arm64 even when running in an x86_64 chroot 36# go118 hardcodes GOARCH=arm64 even when running in an x86_64 chroot
37. if ${OPSYS} == "Darwin" 37. if ${OPSYS} == "Darwin"
38GOOPT+= GOHOSTARCH=amd64 38GOOPT+= GOHOSTARCH=amd64
39. endif 39. endif
40.elif ${MACHINE_ARCH} == "earmv6hf" || ${MACHINE_ARCH} == "earmv7hf" 40.elif ${MACHINE_ARCH} == "earmv6hf" || ${MACHINE_ARCH} == "earmv7hf"
41GOARCH= arm 41GOARCH= arm
42GOCHAR= 5 42GOCHAR= 5
43.elif ${MACHINE_ARCH} == "aarch64" 43.elif ${MACHINE_ARCH} == "aarch64"
44GOARCH= arm64 44GOARCH= arm64
45GOOPT= GOARM=7 45GOOPT= GOARM=7
46# GOHOSTARCH is being misdetected as arm on NetBSD. Unclear why. 46# GOHOSTARCH is being misdetected as arm on NetBSD. Unclear why.
47GOOPT+= GOHOSTARCH=arm64 47GOOPT+= GOHOSTARCH=arm64
48.endif 48.endif
49.if ${MACHINE_ARCH} == "earmv6hf" 49.if ${MACHINE_ARCH} == "earmv6hf"
50GOOPT= GOARM=6 50GOOPT= GOARM=6
51.elif ${MACHINE_ARCH} == "earmv7hf" 51.elif ${MACHINE_ARCH} == "earmv7hf"
52GOOPT= GOARM=7 52GOOPT= GOARM=7
53.endif 53.endif
54 54
55.if ${OPSYS} == "SunOS" && ${OS_VARIANT} != "Solaris" 55.if ${OPSYS} == "SunOS" && ${OS_VARIANT} != "Solaris"
56GO_PLATFORM= illumos_${GOARCH} 56GO_PLATFORM= illumos_${GOARCH}
57.else 57.else
58GO_PLATFORM= ${LOWER_OPSYS}_${GOARCH} 58GO_PLATFORM= ${LOWER_OPSYS}_${GOARCH}
59.endif 59.endif
60 60
61PLIST_SUBST+= GO_PLATFORM=${GO_PLATFORM:Q} GOARCH=${GOARCH:Q} 61PLIST_SUBST+= GO_PLATFORM=${GO_PLATFORM:Q} GOARCH=${GOARCH:Q}
62PLIST_SUBST+= GOCHAR=${GOCHAR:Q} 62PLIST_SUBST+= GOCHAR=${GOCHAR:Q}
63 63
64PRINT_PLIST_AWK+= { sub("/${GO_PLATFORM}/", "/$${GO_PLATFORM}/") } 64PRINT_PLIST_AWK+= { sub("/${GO_PLATFORM}/", "/$${GO_PLATFORM}/") }
65 65
66TOOLS_CREATE+= go 66TOOLS_CREATE+= go
67TOOLS_PATH.go= ${GO} 67TOOLS_PATH.go= ${GO}

cvs diff -r1.2 -r1.3 pkgsrc/lang/go120/Makefile (switch to unified diff)

--- pkgsrc/lang/go120/Makefile 2023/07/15 10:52:59 1.2
+++ pkgsrc/lang/go120/Makefile 2023/08/25 18:29:24 1.3
@@ -1,122 +1,121 @@ @@ -1,122 +1,121 @@
1# $NetBSD: Makefile,v 1.2 2023/07/15 10:52:59 bsiegert Exp $ 1# $NetBSD: Makefile,v 1.3 2023/08/25 18:29:24 bsiegert Exp $
2 2
3PKGREVISION= 1 
4.include "../../lang/go/version.mk" 3.include "../../lang/go/version.mk"
5# Minimum Go version for bootstrapping is 1.17.13. 4# Minimum Go version for bootstrapping is 1.17.13.
6# Go 1.17 has some concurrency issues that have been fixed in 1.18. 5# Go 1.17 has some concurrency issues that have been fixed in 1.18.
7GO_BOOTSTRAP_REQD= 118 6GO_BOOTSTRAP_REQD= 118
8.include "../../lang/go/bootstrap.mk" 7.include "../../lang/go/bootstrap.mk"
9 8
10GOVERSSUFFIX= 120 9GOVERSSUFFIX= 120
11 10
12DISTNAME= go${GO${GOVERSSUFFIX}_VERSION}.src 11DISTNAME= go${GO${GOVERSSUFFIX}_VERSION}.src
13PKGNAME= go${GOVERSSUFFIX}-${GO${GOVERSSUFFIX}_VERSION} 12PKGNAME= go${GOVERSSUFFIX}-${GO${GOVERSSUFFIX}_VERSION}
14CATEGORIES= lang 13CATEGORIES= lang
15MASTER_SITES= https://storage.googleapis.com/golang/ 14MASTER_SITES= https://storage.googleapis.com/golang/
16 15
17MAINTAINER= bsiegert@NetBSD.org 16MAINTAINER= bsiegert@NetBSD.org
18HOMEPAGE= https://golang.org/ 17HOMEPAGE= https://golang.org/
19COMMENT= The Go programming language 18COMMENT= The Go programming language
20LICENSE= modified-bsd 19LICENSE= modified-bsd
21 20
22WRKSRC= ${WRKDIR}/go 21WRKSRC= ${WRKDIR}/go
23USE_TOOLS+= bash:run perl:run pax 22USE_TOOLS+= bash:run perl:run pax
24 23
25# cgo compiles under TMPDIR 24# cgo compiles under TMPDIR
26TMPDIR?= /tmp 25TMPDIR?= /tmp
27BUILDLINK_PASSTHRU_DIRS+= ${TMPDIR} 26BUILDLINK_PASSTHRU_DIRS+= ${TMPDIR}
28 27
29GOROOT_FINAL= ${PREFIX}/go${GOVERSSUFFIX} 28GOROOT_FINAL= ${PREFIX}/go${GOVERSSUFFIX}
30INSTALLATION_DIRS= bin go${GOVERSSUFFIX} 29INSTALLATION_DIRS= bin go${GOVERSSUFFIX}
31 30
32REPLACE_BASH+= lib/time/update.bash 31REPLACE_BASH+= lib/time/update.bash
33REPLACE_BASH+= misc/arm/a 32REPLACE_BASH+= misc/arm/a
34REPLACE_BASH+= misc/cgo/fortran/test.bash 33REPLACE_BASH+= misc/cgo/fortran/test.bash
35REPLACE_BASH+= misc/wasm/go_js_wasm_exec 34REPLACE_BASH+= misc/wasm/go_js_wasm_exec
36REPLACE_BASH+= src/all.bash 35REPLACE_BASH+= src/all.bash
37REPLACE_BASH+= src/bootstrap.bash 36REPLACE_BASH+= src/bootstrap.bash
38REPLACE_BASH+= src/buildall.bash 37REPLACE_BASH+= src/buildall.bash
39REPLACE_BASH+= src/clean.bash 38REPLACE_BASH+= src/clean.bash
40REPLACE_BASH+= src/cmd/compile/internal/ssa/_gen/cover.bash 39REPLACE_BASH+= src/cmd/compile/internal/ssa/_gen/cover.bash
41REPLACE_BASH+= src/cmd/go/mkalldocs.sh 40REPLACE_BASH+= src/cmd/go/mkalldocs.sh
42REPLACE_BASH+= src/cmd/vendor/golang.org/x/sys/unix/mkall.sh 41REPLACE_BASH+= src/cmd/vendor/golang.org/x/sys/unix/mkall.sh
43REPLACE_BASH+= src/cmd/vendor/golang.org/x/sys/unix/mkerrors.sh 42REPLACE_BASH+= src/cmd/vendor/golang.org/x/sys/unix/mkerrors.sh
44REPLACE_BASH+= src/crypto/internal/boring/build.sh 43REPLACE_BASH+= src/crypto/internal/boring/build.sh
45REPLACE_BASH+= src/crypto/internal/boring/build-boring.sh 44REPLACE_BASH+= src/crypto/internal/boring/build-boring.sh
46REPLACE_BASH+= src/crypto/internal/boring/build-goboring.sh 45REPLACE_BASH+= src/crypto/internal/boring/build-goboring.sh
47REPLACE_BASH+= src/go/doc/comment/mkstd.sh 46REPLACE_BASH+= src/go/doc/comment/mkstd.sh
48REPLACE_BASH+= src/internal/trace/mkcanned.bash 47REPLACE_BASH+= src/internal/trace/mkcanned.bash
49REPLACE_BASH+= src/make.bash 48REPLACE_BASH+= src/make.bash
50REPLACE_BASH+= src/race.bash 49REPLACE_BASH+= src/race.bash
51REPLACE_BASH+= src/run.bash 50REPLACE_BASH+= src/run.bash
52REPLACE_BASH+= src/runtime/race/mkcgo.sh 51REPLACE_BASH+= src/runtime/race/mkcgo.sh
53REPLACE_BASH+= src/syscall/mkall.sh 52REPLACE_BASH+= src/syscall/mkall.sh
54REPLACE_BASH+= src/syscall/mkerrors.sh 53REPLACE_BASH+= src/syscall/mkerrors.sh
55REPLACE_BASH+= src/syscall/mksysnum_plan9.sh 54REPLACE_BASH+= src/syscall/mksysnum_plan9.sh
56 55
57REPLACE_PERL+= src/net/http/cgi/testdata/test.cgi 56REPLACE_PERL+= src/net/http/cgi/testdata/test.cgi
58REPLACE_PERL+= src/regexp/syntax/make_perl_groups.pl 57REPLACE_PERL+= src/regexp/syntax/make_perl_groups.pl
59REPLACE_PERL+= src/syscall/*.pl 58REPLACE_PERL+= src/syscall/*.pl
60 59
61# uses own linker, which does not support relro on NetBSD 60# uses own linker, which does not support relro on NetBSD
62CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/bin/go 61CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/bin/go
63CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/bin/gofmt 62CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/bin/gofmt
64CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/asm 63CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/asm
65CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/compile 64CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/compile
66CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/link 65CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/link
67CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/cgo 66CHECK_RELRO_SKIP+= go${GOVERSSUFFIX}/pkg/bootstrap/bin/cgo
68# also does not support SSP at this time 67# also does not support SSP at this time
69CHECK_SSP_SKIP= ${CHECK_RELRO_SKIP} 68CHECK_SSP_SKIP= ${CHECK_RELRO_SKIP}
70 69
71# uses /bin/rc (for Plan 9) 70# uses /bin/rc (for Plan 9)
72CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/include/plan9/mklibc.rc 71CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/include/plan9/mklibc.rc
73CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/all.rc 72CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/all.rc
74CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/clean.rc 73CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/clean.rc
75CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/make.rc 74CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/make.rc
76CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/run.rc 75CHECK_INTERPRETER_SKIP+= go${GOVERSSUFFIX}/src/run.rc
77 76
78SUBST_CLASSES+= paths 77SUBST_CLASSES+= paths
79SUBST_STAGE.paths= pre-configure 78SUBST_STAGE.paths= pre-configure
80SUBST_FILES.paths= src/crypto/x509/root_solaris.go 79SUBST_FILES.paths= src/crypto/x509/root_solaris.go
81SUBST_VARS.paths= PKG_SYSCONFDIR 80SUBST_VARS.paths= PKG_SYSCONFDIR
82 81
83# Required until we bootstrap from a native illumos kit. This is obviously 82# Required until we bootstrap from a native illumos kit. This is obviously
84# terrible and should be fixed properly. 83# terrible and should be fixed properly.
85.if ${OPSYS} == "SunOS" && ${OS_VARIANT} != "Solaris" 84.if ${OPSYS} == "SunOS" && ${OS_VARIANT} != "Solaris"
86SUBST_CLASSES+= grplist 85SUBST_CLASSES+= grplist
87SUBST_STAGE.grplist= pre-configure 86SUBST_STAGE.grplist= pre-configure
88SUBST_FILES.grplist= src/os/user/getgrouplist_unix.go 87SUBST_FILES.grplist= src/os/user/getgrouplist_unix.go
89SUBST_SED.grplist= -e 's,return getgrouplist.*,return 0;,' 88SUBST_SED.grplist= -e 's,return getgrouplist.*,return 0;,'
90.endif 89.endif
91 90
92PLIST_SUBST+= GOVERSSUFFIX=${GOVERSSUFFIX} 91PLIST_SUBST+= GOVERSSUFFIX=${GOVERSSUFFIX}
93 92
94PRINT_PLIST_AWK+= /^bin\/go${GOVERSSUFFIX}/ { print "bin/go$${GOVERSSUFFIX}"; next; } 93PRINT_PLIST_AWK+= /^bin\/go${GOVERSSUFFIX}/ { print "bin/go$${GOVERSSUFFIX}"; next; }
95PRINT_PLIST_AWK+= /^bin\/gofmt${GOVERSSUFFIX}/ { print "bin/gofmt$${GOVERSSUFFIX}"; next; } 94PRINT_PLIST_AWK+= /^bin\/gofmt${GOVERSSUFFIX}/ { print "bin/gofmt$${GOVERSSUFFIX}"; next; }
96 95
97post-extract: 96post-extract:
98 ${RM} -r -f ${WRKSRC}/test/fixedbugs/issue27836* 97 ${RM} -r -f ${WRKSRC}/test/fixedbugs/issue27836*
99 98
100do-build: 99do-build:
101 cd ${WRKSRC}/src && \ 100 cd ${WRKSRC}/src && \
102 env \ 101 env \
103 GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:Q} \ 102 GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:Q} \
104 GOROOT_FINAL=${GOROOT_FINAL:Q} \ 103 GOROOT_FINAL=${GOROOT_FINAL:Q} \
105 ${GOOPT} \ 104 ${GOOPT} \
106 GOCACHE=${WRKDIR}/.cache/go-build \ 105 GOCACHE=${WRKDIR}/.cache/go-build \
107 ${BASH} ./make.bash -v 106 ${BASH} ./make.bash -v
108# for RELRO build: 107# for RELRO build:
109# cd ${WRKSRC}/src && env GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:Q} GOROOT_FINAL=${GOROOT_FINAL:Q} GO_LDFLAGS="-buildmode=pie" ${GOOPT} ${BASH} ./make.bash 108# cd ${WRKSRC}/src && env GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:Q} GOROOT_FINAL=${GOROOT_FINAL:Q} GO_LDFLAGS="-buildmode=pie" ${GOOPT} ${BASH} ./make.bash
110 109
111do-install: 110do-install:
112 cd ${WRKSRC} && rm -rf pkg/obj pkg/bootstrap 111 cd ${WRKSRC} && rm -rf pkg/obj pkg/bootstrap
113 cd ${WRKSRC} && pax -rw . ${DESTDIR}${PREFIX}/go${GOVERSSUFFIX} 112 cd ${WRKSRC} && pax -rw . ${DESTDIR}${PREFIX}/go${GOVERSSUFFIX}
114 find ${DESTDIR}${PREFIX}/go${GOVERSSUFFIX} -name \*.orig -exec rm {} \; 113 find ${DESTDIR}${PREFIX}/go${GOVERSSUFFIX} -name \*.orig -exec rm {} \;
115.for cmd in go gofmt 114.for cmd in go gofmt
116 ${LN} -sf ${PREFIX}/go${GOVERSSUFFIX}/bin/${cmd} ${DESTDIR}${PREFIX}/bin/${cmd}${GOVERSSUFFIX} 115 ${LN} -sf ${PREFIX}/go${GOVERSSUFFIX}/bin/${cmd} ${DESTDIR}${PREFIX}/bin/${cmd}${GOVERSSUFFIX}
117.endfor 116.endfor
118 117
119do-test: 118do-test:
120 cd ${WRKSRC}/src && GOROOT=${WRKSRC} PATH=${WRKSRC}/bin:${PATH} ${GOOPT} ${BASH} run.bash --no-rebuild --banner "" 119 cd ${WRKSRC}/src && GOROOT=${WRKSRC} PATH=${WRKSRC}/bin:${PATH} ${GOOPT} ${BASH} run.bash --no-rebuild --banner ""
121 120
122.include "../../mk/bsd.pkg.mk" 121.include "../../mk/bsd.pkg.mk"

cvs diff -r1.7 -r1.8 pkgsrc/lang/go120/distinfo (switch to unified diff)

--- pkgsrc/lang/go120/distinfo 2023/07/15 10:40:37 1.7
+++ pkgsrc/lang/go120/distinfo 2023/08/25 18:29:24 1.8
@@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
1$NetBSD: distinfo,v 1.7 2023/07/15 10:40:37 bsiegert Exp $ 1$NetBSD: distinfo,v 1.8 2023/08/25 18:29:24 bsiegert Exp $
2 2
3BLAKE2s (go1.20.6.src.tar.gz) = ec2db20ad86617288f47694668a7ccd79e07acabf0f8a1c35f57b1b9d1580fb5 3BLAKE2s (go1.20.7.src.tar.gz) = a052931d633519bc4461b38bd378a3efd51a489a2556f7bd74a429b09dcbf2de
4SHA512 (go1.20.6.src.tar.gz) = 509ade7c2a76bd46b26dda4522692ceef5023aae21461b866006341f98544e7ea755aee230a9fea789ed7afb1c49a693c34c8337892e308dfb051aef2b08c975 4SHA512 (go1.20.7.src.tar.gz) = c3dae709d0db8ab32a68bda2d260ffe86ee77c703bdbf34eefd0e1f745dd0aa04e3d17833877e7f06aa066686da501a85361591e510a341affc0244dde2b9946
5Size (go1.20.6.src.tar.gz) = 26194491 bytes 5Size (go1.20.7.src.tar.gz) = 26192928 bytes
6SHA1 (patch-misc_ios_clangwrap.sh) = 0a06403609cb7bce2e6f65444fd322f486761afe 6SHA1 (patch-misc_ios_clangwrap.sh) = 0a06403609cb7bce2e6f65444fd322f486761afe
7SHA1 (patch-src_cmd_dist_util.go) = 2d9c2f59e27672d56f5f1a0e3f9d5101a05546a7 7SHA1 (patch-src_cmd_dist_util.go) = 2d9c2f59e27672d56f5f1a0e3f9d5101a05546a7
8SHA1 (patch-src_crypto_x509_root__bsd.go) = 0b5dead901450967109303f873a2696c65ccac35 8SHA1 (patch-src_crypto_x509_root__bsd.go) = 0b5dead901450967109303f873a2696c65ccac35
9SHA1 (patch-src_crypto_x509_root__solaris.go) = d636a1599ede225ac339388fba2b6e253112d461 9SHA1 (patch-src_crypto_x509_root__solaris.go) = d636a1599ede225ac339388fba2b6e253112d461
10SHA1 (patch-src_syscall_zsysnum__solaris__amd64.go) = ec28a0fa37ba9599ec1651c8e9337a2efc48a26b 10SHA1 (patch-src_syscall_zsysnum__solaris__amd64.go) = ec28a0fa37ba9599ec1651c8e9337a2efc48a26b