Skip to content

Instantly share code, notes, and snippets.

@deltam
Last active May 16, 2018 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deltam/14e44c5adff91e723d2036f5f8e7ac25 to your computer and use it in GitHub Desktop.
Save deltam/14e44c5adff91e723d2036f5f8e7ac25 to your computer and use it in GitHub Desktop.
vgo build failed with kagome
$ go version
go version go1.10.2 darwin/amd64
$ go get -u golang.org/x/vgo
$ vgo version
go version go1.10.2 darwin/amd64 vgo:2018-02-20.1
$ mkdir test_vgo
$ cd test_vgo
$ echo >go.mod
$ wget https://gist.githubusercontent.com/deltam/14e44c5adff91e723d2036f5f8e7ac25/raw/8048a89bb73c3bf719f5d830917ee3673b52170e/main.go
$ vgo build
vgo: resolving import "github.com/ikawaha/kagome/tokenizer"
vgo: finding github.com/ikawaha/kagome (latest)
vgo: adding github.com/ikawaha/kagome v1.7.1
vgo: downloading github.com/ikawaha/kagome v1.7.1
vgo: import "github.com/deltam/kagome_user" ->
import "github.com/ikawaha/kagome/tokenizer": downloaded zip file too large
$ git clone https://github.com/golang/vgo
$ find ./vgo -name "*.go" |xargs grep "zip file too large"
./vendor/cmd/go/internal/modfetch/coderepo.go:          return "", fmt.Errorf("downloaded zip file too large")
./vendor/cmd/go/internal/modfetch/proxy.go:             return "", fmt.Errorf("downloaded zip file too large")

./vendor/cmd/go/internal/modfetch/coderepo.go:

     maxSize := int64(codehost.MaxZipFile)
     lr := &io.LimitedReader{R: dl, N: maxSize + 1}
     if _, err := io.Copy(f, lr); err != nil {
         dl.Close()
         return "", err
     }
     dl.Close()
     if lr.N <= 0 {
         return "", fmt.Errorf("downloaded zip file too large")
     }

./vendor/cmd/go/internal/modfetch/codehost/codehost.go:

// Downloaded size limits.
const (
    MaxGoMod   = 16 << 20  // maximum size of go.mod file
    MaxLICENSE = 16 << 20  // maximum size of LICENSE file
    MaxZipFile = 100 << 20 // maximum size of downloaded zip file
)

https://github.com/ikawaha/kagome/releases/tag/v1.7.1

$ wget https://github.com/ikawaha/kagome/archive/v1.7.1.zip
$ ls -l v1.7.1.zip
-rw-r--r--@ 1 deltam  staff  133686181 May 16 22:00 v1.7.1.zip

MaxZipFile = 100 << 20 = 104857600

$ git blame vendor/cmd/go/internal/modfetch/codehost/codehost.go

3579ffcf (Russ Cox 2018-04-17 16:35:23 -0400  27)    MaxZipFile = 100 << 20 // maximum size of downloaded zip file

Why is the maximum size of downloaded zip file 100 << 20 ?

package main // import "github.com/deltam/kagome_user"
import (
"fmt"
"strings"
"github.com/ikawaha/kagome/tokenizer"
)
func main() {
t := tokenizer.New()
tokens := t.Tokenize("寿司が食べたい。") // t.Analyze("寿司が食べたい。", tokenizer.Normal)
for _, token := range tokens {
if token.Class == tokenizer.DUMMY {
// BOS: Begin Of Sentence, EOS: End Of Sentence.
fmt.Printf("%s\n", token.Surface)
continue
}
features := strings.Join(token.Features(), ",")
fmt.Printf("%s\t%v\n", token.Surface, features)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment