Wait until vpp is ready + Update vendor
[govpp.git] / vendor / golang.org / x / sys / unix / mkpost.go
index d3ff659..ed50d90 100644 (file)
@@ -8,11 +8,10 @@
 // modify the generated types. It is used to clean up
 // the sys API in an architecture specific manner.
 //
-// mkpost is run after cgo -godefs; see README.md.
+// mkpost is run after cgo -godefs by mkall.sh.
 package main
 
 import (
-       "bytes"
        "fmt"
        "go/format"
        "io/ioutil"
@@ -22,67 +21,42 @@ import (
 )
 
 func main() {
-       // Get the OS and architecture (using GOARCH_TARGET if it exists)
-       goos := os.Getenv("GOOS")
-       goarch := os.Getenv("GOARCH_TARGET")
-       if goarch == "" {
-               goarch = os.Getenv("GOARCH")
-       }
-       // Check that we are using the new build system if we should be.
-       if goos == "linux" && goarch != "sparc64" {
-               if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
-                       os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n")
-                       os.Stderr.WriteString("See README.md\n")
-                       os.Exit(1)
-               }
-       }
-
        b, err := ioutil.ReadAll(os.Stdin)
        if err != nil {
                log.Fatal(err)
        }
+       s := string(b)
 
-       // If we have empty Ptrace structs, we should delete them. Only s390x emits
-       // nonempty Ptrace structs.
-       ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
-       b = ptraceRexexp.ReplaceAll(b, nil)
-
-       // Replace the control_regs union with a blank identifier for now.
-       controlRegsRegex := regexp.MustCompile(`(Control_regs)\s+\[0\]uint64`)
-       b = controlRegsRegex.ReplaceAll(b, []byte("_ [0]uint64"))
-
-       // Remove fields that are added by glibc
-       // Note that this is unstable as the identifers are private.
-       removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
-       b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-
-       // We refuse to export private fields on s390x
+       goarch := os.Getenv("GOARCH")
+       goos := os.Getenv("GOOS")
        if goarch == "s390x" && goos == "linux" {
-               // Remove cgo padding fields
-               removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
-               b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
+               // Export the types of PtraceRegs fields.
+               re := regexp.MustCompile("ptrace(Psw|Fpregs|Per)")
+               s = re.ReplaceAllString(s, "Ptrace$1")
 
-               // Remove padding, hidden, or unused fields
-               removeFieldsRegex = regexp.MustCompile(`X_\S+`)
-               b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-       }
+               // Replace padding fields inserted by cgo with blank identifiers.
+               re = regexp.MustCompile("Pad_cgo[A-Za-z0-9_]*")
+               s = re.ReplaceAllString(s, "_")
 
-       // Remove the first line of warning from cgo
-       b = b[bytes.IndexByte(b, '\n')+1:]
-       // Modify the command in the header to include:
-       //  mkpost, our own warning, and a build tag.
-       replacement := fmt.Sprintf(`$1 | go run mkpost.go
-// Code generated by the command above; see README.md. DO NOT EDIT.
+               // Replace other unwanted fields with blank identifiers.
+               re = regexp.MustCompile("X_[A-Za-z0-9_]*")
+               s = re.ReplaceAllString(s, "_")
 
-// +build %s,%s`, goarch, goos)
-       cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)
-       b = cgoCommandRegex.ReplaceAll(b, []byte(replacement))
+               // Replace the control_regs union with a blank identifier for now.
+               re = regexp.MustCompile("(Control_regs)\\s+\\[0\\]uint64")
+               s = re.ReplaceAllString(s, "_ [0]uint64")
+       }
 
        // gofmt
-       b, err = format.Source(b)
+       b, err = format.Source([]byte(s))
        if err != nil {
                log.Fatal(err)
        }
 
-       os.Stdout.Write(b)
+       // Append this command to the header to show where the new file
+       // came from.
+       re := regexp.MustCompile("(cgo -godefs [a-zA-Z0-9_]+\\.go.*)")
+       b = re.ReplaceAll(b, []byte("$1 | go run mkpost.go"))
+
+       fmt.Printf("%s", b)
 }