Skip to content

Commit 0dde990

Browse files
authored
feature: improve extract, add unrestricted syscalls
1 parent 4cfeb19 commit 0dde990

File tree

479 files changed

+3428
-2032
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

479 files changed

+3428
-2032
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*.dot
44
.idea/
55
/yaegi
6-
cmd/goexports/goexports
6+
internal/cmd/extract/extract
77
example/inception/inception
88
_test/tmp/
99
/dist

.goreleaser.yml

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,31 +26,6 @@ builds:
2626
- goos: darwin
2727
goarch: 386
2828

29-
- id: goexports
30-
binary: goexports
31-
main: ./cmd/goexports/
32-
33-
goos:
34-
- darwin
35-
- linux
36-
# - windows
37-
- freebsd
38-
- openbsd
39-
- solaris
40-
goarch:
41-
- amd64
42-
- 386
43-
- arm
44-
- arm64
45-
goarm:
46-
- 7
47-
- 6
48-
- 5
49-
50-
ignore:
51-
- goos: darwin
52-
goarch: 386
53-
5429
changelog:
5530
sort: asc
5631
filters:

Makefile

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ check:
33
golangci-lint run
44

55
# Generate stdlib/syscall/syscall_GOOS_GOARCH.go for all platforms
6-
gen_all_syscall: cmd/goexports/goexports
7-
@cd stdlib/syscall && \
8-
for v in $$(go tool dist list); do \
6+
gen_all_syscall: internal/cmd/extract/extract
7+
@for v in $$(go tool dist list); do \
98
echo syscall_$${v%/*}_$${v#*/}.go; \
10-
GOOS=$${v%/*} GOARCH=$${v#*/} go generate; \
9+
GOOS=$${v%/*} GOARCH=$${v#*/} go generate ./stdlib/syscall ./stdlib/unrestricted; \
1110
done
1211

13-
cmd/goexports/goexports: cmd/goexports/goexports.go
14-
go generate cmd/goexports/goexports.go
12+
internal/cmd/extract/extract:
13+
rm -f internal/cmd/extract/extract
14+
go generate ./internal/cmd/extract
1515

1616
generate: gen_all_syscall
1717
go generate
@@ -21,7 +21,7 @@ tests:
2121
GO111MODULE=off go test -race ./interp
2222

2323
# https://github.com/goreleaser/godownloader
24-
generate_downloader:
25-
godownloader --repo=traefik/yaegi -o install.sh
24+
install.sh: .goreleaser.yml
25+
godownloader --repo=traefik/yaegi -o install.sh .goreleaser.yml
2626

27-
.PHONY: check gen_all_syscall gen_tests generate_downloader
27+
.PHONY: check gen_all_syscall gen_tests generate_downloader internal/cmd/extract/extract

cmd/goexports/goexports.go

Lines changed: 0 additions & 137 deletions
This file was deleted.

cmd/yaegi/extract.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,20 @@ import (
1010
"path"
1111
"strings"
1212

13-
"github.com/traefik/yaegi/extract"
13+
"github.com/traefik/yaegi/internal/extract"
1414
)
1515

1616
func extractCmd(arg []string) error {
1717
var licensePath string
18-
var importPath string
18+
var name string
19+
var exclude string
20+
var include string
1921

2022
eflag := flag.NewFlagSet("run", flag.ContinueOnError)
2123
eflag.StringVar(&licensePath, "license", "", "path to a LICENSE file")
22-
eflag.StringVar(&importPath, "import_path", "", "the namespace for the extracted symbols")
24+
eflag.StringVar(&name, "name", "", "the namespace for the extracted symbols")
25+
eflag.StringVar(&exclude, "exclude", "", "comma separated list of regexp matching symbols to exclude")
26+
eflag.StringVar(&include, "include", "", "comma separated list of regexp matching symbols to include")
2327
eflag.Usage = func() {
2428
fmt.Println("Usage: yaegi extract [options] packages...")
2529
fmt.Println("Options:")
@@ -45,20 +49,32 @@ func extractCmd(arg []string) error {
4549
return err
4650
}
4751

52+
if name == "" {
53+
name = path.Base(wd)
54+
}
4855
ext := extract.Extractor{
49-
Dest: path.Base(wd),
56+
Dest: name,
5057
License: license,
5158
}
5259

60+
if exclude != "" {
61+
ext.Exclude = strings.Split(exclude, ",")
62+
}
63+
if include != "" {
64+
ext.Include = strings.Split(include, ",")
65+
}
66+
67+
r := strings.NewReplacer("/", "-", ".", "_")
68+
5369
for _, pkgIdent := range args {
5470
var buf bytes.Buffer
55-
importPath, err := ext.Extract(pkgIdent, importPath, &buf)
71+
importPath, err := ext.Extract(pkgIdent, name, &buf)
5672
if err != nil {
5773
fmt.Fprintln(os.Stderr, err)
5874
continue
5975
}
6076

61-
oFile := strings.ReplaceAll(importPath, "/", "_") + ".go"
77+
oFile := r.Replace(importPath) + ".go"
6278
f, err := os.Create(oFile)
6379
if err != nil {
6480
return err

cmd/yaegi/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func run(arg []string) error {
5151
i.Use(unsafe.Symbols)
5252
}
5353
if useUnrestricted {
54-
// Use of unrestricted symbols should always follow use of stdlib symbols, to update them.
54+
// Use of unrestricted symbols should always follow stdlib and syscall symbols, to update them.
5555
i.Use(unrestricted.Symbols)
5656
}
5757

generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package yaegi
22

3+
//go:generate go generate github.com/traefik/yaegi/internal/extract
34
//go:generate go generate github.com/traefik/yaegi/interp
4-
//go:generate go generate github.com/traefik/yaegi/cmd/goexports
55
//go:generate go generate github.com/traefik/yaegi/stdlib
66
//go:generate go generate github.com/traefik/yaegi/stdlib/syscall
77
//go:generate go generate github.com/traefik/yaegi/stdlib/unsafe

install.sh

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/sh
22
set -e
3-
# Code generated by godownloader on 2020-09-19T15:21:58Z. DO NOT EDIT.
3+
# Code generated by godownloader on 2020-09-27T12:53:27Z. DO NOT EDIT.
44
#
55

66
usage() {
@@ -62,35 +62,35 @@ execute() {
6262
}
6363
get_binaries() {
6464
case "$PLATFORM" in
65-
darwin/amd64) BINARIES="yaegi goexports" ;;
66-
darwin/arm64) BINARIES="yaegi goexports" ;;
67-
darwin/armv5) BINARIES="yaegi goexports" ;;
68-
darwin/armv6) BINARIES="yaegi goexports" ;;
69-
darwin/armv7) BINARIES="yaegi goexports" ;;
70-
freebsd/386) BINARIES="yaegi goexports" ;;
71-
freebsd/amd64) BINARIES="yaegi goexports" ;;
72-
freebsd/arm64) BINARIES="yaegi goexports" ;;
73-
freebsd/armv5) BINARIES="yaegi goexports" ;;
74-
freebsd/armv6) BINARIES="yaegi goexports" ;;
75-
freebsd/armv7) BINARIES="yaegi goexports" ;;
76-
linux/386) BINARIES="yaegi goexports" ;;
77-
linux/amd64) BINARIES="yaegi goexports" ;;
78-
linux/arm64) BINARIES="yaegi goexports" ;;
79-
linux/armv5) BINARIES="yaegi goexports" ;;
80-
linux/armv6) BINARIES="yaegi goexports" ;;
81-
linux/armv7) BINARIES="yaegi goexports" ;;
82-
openbsd/386) BINARIES="yaegi goexports" ;;
83-
openbsd/amd64) BINARIES="yaegi goexports" ;;
84-
openbsd/arm64) BINARIES="yaegi goexports" ;;
85-
openbsd/armv5) BINARIES="yaegi goexports" ;;
86-
openbsd/armv6) BINARIES="yaegi goexports" ;;
87-
openbsd/armv7) BINARIES="yaegi goexports" ;;
88-
solaris/386) BINARIES="yaegi goexports" ;;
89-
solaris/amd64) BINARIES="yaegi goexports" ;;
90-
solaris/arm64) BINARIES="yaegi goexports" ;;
91-
solaris/armv5) BINARIES="yaegi goexports" ;;
92-
solaris/armv6) BINARIES="yaegi goexports" ;;
93-
solaris/armv7) BINARIES="yaegi goexports" ;;
65+
darwin/amd64) BINARIES="yaegi" ;;
66+
darwin/arm64) BINARIES="yaegi" ;;
67+
darwin/armv5) BINARIES="yaegi" ;;
68+
darwin/armv6) BINARIES="yaegi" ;;
69+
darwin/armv7) BINARIES="yaegi" ;;
70+
freebsd/386) BINARIES="yaegi" ;;
71+
freebsd/amd64) BINARIES="yaegi" ;;
72+
freebsd/arm64) BINARIES="yaegi" ;;
73+
freebsd/armv5) BINARIES="yaegi" ;;
74+
freebsd/armv6) BINARIES="yaegi" ;;
75+
freebsd/armv7) BINARIES="yaegi" ;;
76+
linux/386) BINARIES="yaegi" ;;
77+
linux/amd64) BINARIES="yaegi" ;;
78+
linux/arm64) BINARIES="yaegi" ;;
79+
linux/armv5) BINARIES="yaegi" ;;
80+
linux/armv6) BINARIES="yaegi" ;;
81+
linux/armv7) BINARIES="yaegi" ;;
82+
openbsd/386) BINARIES="yaegi" ;;
83+
openbsd/amd64) BINARIES="yaegi" ;;
84+
openbsd/arm64) BINARIES="yaegi" ;;
85+
openbsd/armv5) BINARIES="yaegi" ;;
86+
openbsd/armv6) BINARIES="yaegi" ;;
87+
openbsd/armv7) BINARIES="yaegi" ;;
88+
solaris/386) BINARIES="yaegi" ;;
89+
solaris/amd64) BINARIES="yaegi" ;;
90+
solaris/arm64) BINARIES="yaegi" ;;
91+
solaris/armv5) BINARIES="yaegi" ;;
92+
solaris/armv6) BINARIES="yaegi" ;;
93+
solaris/armv7) BINARIES="yaegi" ;;
9494
*)
9595
log_crit "platform $PLATFORM is not supported. Make sure this script is up-to-date and file request at https://github.com/${PREFIX}/issues/new"
9696
exit 1
@@ -250,8 +250,8 @@ uname_arch_check() {
250250
untar() {
251251
tarball=$1
252252
case "${tarball}" in
253-
*.tar.gz | *.tgz) tar -xzf "${tarball}" ;;
254-
*.tar) tar -xf "${tarball}" ;;
253+
*.tar.gz | *.tgz) tar --no-same-owner -xzf "${tarball}" ;;
254+
*.tar) tar --no-same-owner -xf "${tarball}" ;;
255255
*.zip) unzip "${tarball}" ;;
256256
*)
257257
log_err "untar unknown archive format for ${tarball}"

0 commit comments

Comments
 (0)