-
Notifications
You must be signed in to change notification settings - Fork 211
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trace: add script to generate experimental API from a Go checkout
For golang/go#62627. Change-Id: I48080a9e55ea3e5979a51f303a0c99de9218fd13 Reviewed-on: https://go-review.googlesource.com/c/exp/+/546737 LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Michael Pratt <[email protected]>
- Loading branch information
Showing
1 changed file
with
78 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
#!/usr/bin/env bash | ||
# Copyright 2023 The Go Authors. All rights reserved. | ||
# Use of this source code is governed by a BSD-style | ||
# license that can be found in the LICENSE file. | ||
|
||
# This script copies this directory to golang.org/x/exp/trace. | ||
# Just point it at a Go commit or a local Go checkout. | ||
|
||
set -e | ||
|
||
if [ "$#" -ne 1 ]; then | ||
echo 'gen.bash expects one argument: a go.googlesource.com/go commit hash to generate the package from or a path to a Go checkout' | ||
exit 1 | ||
fi | ||
|
||
# Determine the source. | ||
if [ -d $1 ]; then | ||
echo "assuming Go checkout at $1..." | ||
|
||
# Select the Go checkout. | ||
GODIR=$1 | ||
else | ||
echo "using $1 as a commit hash..." | ||
|
||
# Check out Go. | ||
TMP=$(mktemp -d) | ||
git -C $TMP clone https://go.googlesource.com/go | ||
git -C $TMP/go checkout $1 | ||
GODIR=$TMP/go | ||
fi | ||
|
||
# Define src and dst. | ||
SRC=$GODIR/src/internal/trace/v2 | ||
DST=$(dirname $0) | ||
|
||
# Copy. | ||
cp -r $SRC/* $DST | ||
rm $DST/mkexp.bash | ||
|
||
# Remove the trace_test.go file and the testprogs it invokes. | ||
# This really tests the tracer, it's not necessary to it bring along | ||
# The trace tests are also problematic because they fail to run on | ||
# Go versions before tip. The testprog directory is problematic because | ||
# of //go:build ignore, so we'd have to complicate the logic below to | ||
# support it. | ||
rm $DST/trace_test.go | ||
rm -r $DST/testdata/testprog | ||
|
||
# Remove mktests.go because its a //go:build ignore file, so it would | ||
# complicate the logic below. This codebase isn't the source of truth | ||
# anyway. | ||
rm $DST/testdata/mktests.go | ||
|
||
# Make some packages internal. | ||
mv $DST/raw $DST/internal/raw | ||
mv $DST/event $DST/internal/event | ||
mv $DST/version $DST/internal/version | ||
mv $DST/testtrace $DST/internal/testtrace | ||
|
||
# Move the debug commands out of testdata. | ||
mv $DST/testdata/cmd $DST/cmd | ||
|
||
# Fix up import paths. | ||
find $DST -name '*.go' | xargs -- sed -i 's/internal\/trace\/v2/golang.org\/x\/exp\/trace/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/raw/golang.org\/x\/exp\/trace\/internal\/raw/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/event/golang.org\/x\/exp\/trace\/internal\/event/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/event\/go122/golang.org\/x\/exp\/trace\/internal\/event\/go122/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/version/golang.org\/x\/exp\/trace\/internal\/version/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/testtrace/golang.org\/x\/exp\/trace\/internal\/testtrace/' | ||
find $DST -name '*.go' | xargs -- sed -i 's/internal\/txtar/golang.org\/x\/tools\/txtar/' | ||
|
||
# Add build tag for Go 1.21 and generated code comment. | ||
find $DST -name '*.go' | xargs -- sed -i '/LICENSE file./a \ | ||
\ | ||
// Code generated by "gen.bash" from internal/trace/v2; DO NOT EDIT.\n\n//go:build go1.21' | ||
|
||
# Format the files. | ||
find $DST -name '*.go' | xargs -- gofmt -w -s |