From faf0bf207b45656a4c92fd2ae8d85fc0b9bc491e Mon Sep 17 00:00:00 2001 From: ketlrznt Date: Mon, 8 Aug 2022 10:19:39 +0800 Subject: [PATCH 1/2] add package: v2raya --- srcpkgs/v2raya/files/v2raya/run | 11 +++++++++ srcpkgs/v2raya/template | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 srcpkgs/v2raya/files/v2raya/run create mode 100644 srcpkgs/v2raya/template diff --git a/srcpkgs/v2raya/files/v2raya/run b/srcpkgs/v2raya/files/v2raya/run new file mode 100644 index 000000000000..7f53fbe90cdb --- /dev/null +++ b/srcpkgs/v2raya/files/v2raya/run @@ -0,0 +1,11 @@ +#! /bin/bash + +# v2raya config +export V2RAYA_CONFIG=/etc/v2raya +# v2raya log +export V2RAYA_LOG_FILE=/var/log/v2raya/v2raya.log +# v2ray router data +export XDG_DATA_HOME="/usr/share" + +exec /usr/bin/v2raya + diff --git a/srcpkgs/v2raya/template b/srcpkgs/v2raya/template new file mode 100644 index 000000000000..171caba94fa6 --- /dev/null +++ b/srcpkgs/v2raya/template @@ -0,0 +1,43 @@ +# Template file for 'v2raya' +pkgname=v2raya +version=1.5.9.1698.1 +revision=1 +wrksrc="v2rayA-${version}" +build_style="go" +go_import_path="github.com/v2rayA/v2rayA" +go_ldflags='-X github.com/v2rayA/v2rayA/conf.Version=unstable-'"$version"' -s -w' +hostmakedepends="go nodejs yarn" +depends="v2ray>=4.37.0-1" +short_desc="Web GUI client of Project V which supports various protocals" +maintainer="ketlrznt " +license="AGPL-3.0" +homepage="https://github.com/v2rayA/v2rayA" +distfiles="https://github.com/v2rayA/v2rayA/archive/v${version}.tar.gz" +checksum="247a357230c616bf48309c61d119686e4ad56939c05afef584c45051e9dc6220" + +export GO11MODULE=on + +do_build() { + cd gui + yarn --check-files + OUTPUT_DIR="${wrksrc}/service/server/router/web" yarn build + cd ../service + go build -ldflags="$go_ldflags" -o "${GOPATH}/bin/v2raya" +} + +do_install() { + # binary + vbin ${GOPATH}/bin/v2raya + # desktop entry + vinstall install/universal/v2raya.desktop 0644 usr/share/applications + # configurationo dir + vmkdir etc/$pkgname 0750 + # service + vsv v2raya + # icon + vinstall gui/public/img/icons/android-chrome-512x512.png \ + 0644 usr/share/icons/hicolor/512x512/apps/ v2raya.png + # license + vlicense LICENSE +} + From 6e401ed433619ffd3d5681caf39b381f0c90f70e Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Sat, 6 Aug 2022 15:12:02 +0530 Subject: [PATCH 2/2] go: update to 1.19, add tests --- srcpkgs/go/patches/fix-32bit-tests.patch | 13 ++ srcpkgs/go/patches/fix-musl-tests.patch | 29 +++++ srcpkgs/go/patches/fix-tests.patch | 150 +++++++++++++++++++++++ srcpkgs/go/template | 29 ++++- 4 files changed, 218 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/go/patches/fix-32bit-tests.patch create mode 100644 srcpkgs/go/patches/fix-musl-tests.patch create mode 100644 srcpkgs/go/patches/fix-tests.patch diff --git a/srcpkgs/go/patches/fix-32bit-tests.patch b/srcpkgs/go/patches/fix-32bit-tests.patch new file mode 100644 index 000000000000..f5d8083b19f0 --- /dev/null +++ b/srcpkgs/go/patches/fix-32bit-tests.patch @@ -0,0 +1,13 @@ +Fixes go1.19 error on i686 - + runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel + +--- a/go/src/cmd/go/script_test.go ++++ b/go/src/cmd/go/script_test.go +@@ -148,6 +148,7 @@ var extraEnvKeys = []string{ + "GO_TESTING_GOTOOLS", // for gccgo testing + "GCCGO", // for gccgo testing + "GCCGOTOOLDIR", // for gccgo testing ++ "CGO_CFLAGS", // for working around go1.19 "unknown symbol __stack_chk_fail_local" error on x86 + } + + // setup sets up the test execution temporary directory and environment. diff --git a/srcpkgs/go/patches/fix-musl-tests.patch b/srcpkgs/go/patches/fix-musl-tests.patch new file mode 100644 index 000000000000..f70cb456857b --- /dev/null +++ b/srcpkgs/go/patches/fix-musl-tests.patch @@ -0,0 +1,29 @@ +These tests fail on musl because /proc/../status doesn't contain the "Groups" +field, because musl lacks the getgroups() syscall. + +--- a/go/src/syscall/syscall_linux_test.go ++++ b/go/src/syscall/syscall_linux_test.go +@@ -530,10 +530,6 @@ func TestSetuidEtc(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, +--- a/go/misc/cgo/test/issue1435.go ++++ b/go/misc/cgo/test/issue1435.go +@@ -165,10 +165,6 @@ func test1435(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, diff --git a/srcpkgs/go/patches/fix-tests.patch b/srcpkgs/go/patches/fix-tests.patch new file mode 100644 index 000000000000..c93415611413 --- /dev/null +++ b/srcpkgs/go/patches/fix-tests.patch @@ -0,0 +1,150 @@ +Inside user namespaces, if GID == OVERFLOWGID (65534), then chown won't work. +https://github.com/golang/go/issues/42525 + +--- a/go/src/os/os_unix_test.go ++++ b/go/src/os/os_unix_test.go +@@ -39,144 +39,6 @@ func checkUidGid(t *testing.T, path string, uid, gid int) { + } + } + +-func TestChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Chown(f.Name(), -1, gid); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Chown(f.Name(), -1, g); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestFileChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestFileChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = f.Chown(-1, g); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestLchown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestLchown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- linkname := f.Name() + "2" +- if err := Symlink(f.Name(), linkname); err != nil { +- if runtime.GOOS == "android" && IsPermission(err) { +- t.Skip("skipping test on Android; permission error creating symlink") +- } +- t.Fatalf("link %s -> %s: %v", f.Name(), linkname, err) +- } +- defer Remove(linkname) +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Lchown(linkname, -1, gid); err != nil { +- if err, ok := err.(*PathError); ok && err.Err == syscall.ENOSYS { +- t.Skip("lchown is unavailable") +- } +- t.Fatalf("lchown %s -1 %d: %s", linkname, gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, linkname, int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Lchown(linkname, -1, g); err != nil { +- t.Fatalf("lchown %s -1 %d: %s", linkname, g, err) +- } +- checkUidGid(t, linkname, int(sys.Uid), g) +- +- // Check that link target's gid is unchanged. +- checkUidGid(t, f.Name(), int(sys.Uid), int(sys.Gid)) +- } +-} +- + // Issue 16919: Readdir must return a non-empty slice or an error. + func TestReaddirRemoveRace(t *testing.T) { + oldStat := *LstatP diff --git a/srcpkgs/go/template b/srcpkgs/go/template index 2db64b795ed8..a5fce0f153b6 100644 --- a/srcpkgs/go/template +++ b/srcpkgs/go/template @@ -1,17 +1,18 @@ # Template file for 'go' pkgname=go -version=1.18.3 +version=1.19 revision=1 create_wrksrc=yes build_wrksrc=go hostmakedepends="go1.12-bootstrap" +checkdepends="iana-etc clang gcc-fortran" short_desc="Go Programming Language" maintainer="Michael Aldridge " license="BSD-3-Clause" homepage="https://go.dev/" changelog="https://go.dev/doc/devel/release.html" distfiles="https://go.dev/dl/go${version}.src.tar.gz" -checksum=0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d +checksum=9419cc70dc5a2523f29a77053cafff658ed21ef3561d9b6b020280ebceab28b9 nostrip=yes noverifyrdeps=yes @@ -31,11 +32,24 @@ if [ "$CROSS_BUILD" ]; then fi fi +# Workaround for go-1.19 compilation error on i686 +# runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel +if [ "$XBPS_MACHINE" = i686 ]; then + export CGO_CFLAGS="-fno-stack-protector" +fi + +post_extract() { + if [ "$(df . --output=fstype | tail -1)" = zfs ]; then + # https://github.com/golang/go/issues/39905 + rm -v go/src/cmd/link/internal/ld/fallocate_test.go + fi +} + do_build() { unset GCC CC CXX LD CFLAGS # FIXME: work around leaking go build-style vars when built as a # dependency - unset CGO_CXXFLAGS CGO_CFLAGS CGO_ENABLED + unset CGO_CXXFLAGS CGO_ENABLED # CGO_CFLAGS export GOROOT_BOOTSTRAP="/usr/lib/go1.12" export GOROOT=$PWD @@ -47,6 +61,15 @@ do_build() { bash make.bash -v } +do_check() { + if [ "$XBPS_LIBC" = musl ]; then + # https://github.com/golang/go/issues/39857 + ./bin/go tool dist test -v -run "!^cgo_test$" + else + ./bin/go tool dist test -v + fi +} + do_install() { local bindir