Merge branch 'master' into add-table-row-index

This commit is contained in:
Júlio César Batista 2022-11-16 11:54:06 -03:00
commit 58d9640089
No known key found for this signature in database
GPG key ID: 10C4B861BF314878
11 changed files with 112 additions and 85 deletions

View file

@ -1,2 +1,3 @@
<!-- Please title the PR with a scope prefix like cli: performance improvements. --> <!-- Please title the PR with a scope prefix like cli: performance improvements. -->
<!-- Please add screenshots or screencasts for ui/autolayout changes. --> <!-- Please add screenshots or screencasts for ui/autolayout changes. -->
<!-- Remember to update ci/release/changelogs/next.md, the manpage and cli help documentation. -->

View file

@ -194,7 +194,7 @@ EOF
if ! manpath | grep -qF "$PREFIX/share/man"; then if ! manpath | grep -qF "$PREFIX/share/man"; then
logcat >&2 <<EOF logcat >&2 <<EOF
Extend your \$MANPATH to view d2's manpages: Extend your \$MANPATH to view d2's manpages:
export MANPATH=$PREFIX/share/man\${MANPATH+:\$MANPATH} export MANPATH=$PREFIX/share/man:\$MANPATH
Then run: Then run:
man d2 man d2
EOF EOF

View file

@ -118,10 +118,10 @@ build() {
macos) macos)
case $ARCH in case $ARCH in
amd64) amd64)
RHOST=$TSTRUCT_MACOS_AMD64_BUILDER build_rhost_macos REMOTE_HOST=$TSTRUCT_MACOS_AMD64_BUILDER build_remote_macos
;; ;;
arm64) arm64)
RHOST=$TSTRUCT_MACOS_ARM64_BUILDER build_rhost_macos REMOTE_HOST=$TSTRUCT_MACOS_ARM64_BUILDER build_remote_macos
;; ;;
*) *)
warn "no builder for OS=$OS ARCH=$ARCH, building locally..." warn "no builder for OS=$OS ARCH=$ARCH, building locally..."
@ -132,10 +132,10 @@ build() {
linux) linux)
case $ARCH in case $ARCH in
amd64) amd64)
RHOST=$TSTRUCT_LINUX_AMD64_BUILDER build_rhost_linux REMOTE_HOST=$TSTRUCT_LINUX_AMD64_BUILDER build_remote_linux
;; ;;
arm64) arm64)
RHOST=$TSTRUCT_LINUX_ARM64_BUILDER build_rhost_linux REMOTE_HOST=$TSTRUCT_LINUX_ARM64_BUILDER build_remote_linux
;; ;;
*) *)
warn "no builder for OS=$OS ARCH=$ARCH, building locally..." warn "no builder for OS=$OS ARCH=$ARCH, building locally..."
@ -160,10 +160,12 @@ build_local() {
sh_c ./ci/release/_build.sh sh_c ./ci/release/_build.sh
} }
build_rhost_macos() { build_remote_macos() {
sh_c ssh "$RHOST" mkdir -p src sh_c lockfile_ssh "$REMOTE_HOST" .d2-build-lock
sh_c rsync --archive --human-readable --delete ./ "$RHOST:src/d2/" trap unlockfile_ssh EXIT
sh_c ssh -tttt "$RHOST" "DRY_RUN=${DRY_RUN-} \ sh_c ssh "$REMOTE_HOST" mkdir -p src
sh_c rsync --archive --human-readable --delete ./ "$REMOTE_HOST:src/d2/"
sh_c ssh -tttt "$REMOTE_HOST" "DRY_RUN=${DRY_RUN-} \
HW_BUILD_DIR=$HW_BUILD_DIR \ HW_BUILD_DIR=$HW_BUILD_DIR \
VERSION=$VERSION \ VERSION=$VERSION \
OS=$OS \ OS=$OS \
@ -173,13 +175,15 @@ TERM=$TERM \
PATH=\\\"/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin\\\${PATH+:\\\$PATH}\\\" \ PATH=\\\"/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin\\\${PATH+:\\\$PATH}\\\" \
./src/d2/ci/release/_build.sh" ./src/d2/ci/release/_build.sh"
sh_c mkdir -p "$HW_BUILD_DIR" sh_c mkdir -p "$HW_BUILD_DIR"
sh_c rsync --archive --human-readable "$RHOST:src/d2/$ARCHIVE" "$ARCHIVE" sh_c rsync --archive --human-readable "$REMOTE_HOST:src/d2/$ARCHIVE" "$ARCHIVE"
} }
build_rhost_linux() { build_remote_linux() {
sh_c ssh "$RHOST" mkdir -p src sh_c lockfile_ssh "$REMOTE_HOST" .d2-build-lock
sh_c rsync --archive --human-readable --delete ./ "$RHOST:src/d2/" trap unlockfile_ssh EXIT
sh_c ssh -tttt "$RHOST" "DRY_RUN=${DRY_RUN-} \ sh_c ssh "$REMOTE_HOST" mkdir -p src
sh_c rsync --archive --human-readable --delete ./ "$REMOTE_HOST:src/d2/"
sh_c ssh -tttt "$REMOTE_HOST" "DRY_RUN=${DRY_RUN-} \
HW_BUILD_DIR=$HW_BUILD_DIR \ HW_BUILD_DIR=$HW_BUILD_DIR \
VERSION=$VERSION \ VERSION=$VERSION \
OS=$OS \ OS=$OS \
@ -188,7 +192,7 @@ ARCHIVE=$ARCHIVE \
TERM=$TERM \ TERM=$TERM \
./src/d2/ci/release/build_docker.sh" ./src/d2/ci/release/build_docker.sh"
sh_c mkdir -p "$HW_BUILD_DIR" sh_c mkdir -p "$HW_BUILD_DIR"
sh_c rsync --archive --human-readable "$RHOST:src/d2/$ARCHIVE" "$ARCHIVE" sh_c rsync --archive --human-readable "$REMOTE_HOST:src/d2/$ARCHIVE" "$ARCHIVE"
} }
ssh() { ssh() {

View file

@ -0,0 +1,61 @@
#!/bin/sh
set -eu
cd -- "$(dirname "$0")/../../.."
. ./ci/sub/lib.sh
help() {
cat <<EOF
usage: $0 [--dry-run] -i keys.pub
$0 copies keys.pub to each builder and then deduplicates its .authorized_keys.
EOF
}
main() {
while :; do
flag_parse "$@"
case "$FLAG" in
h|help)
help
return 0
;;
dry-run)
flag_noarg && shift "$FLAGSHIFT"
DRY_RUN=1
;;
i)
flag_nonemptyarg && shift "$FLAGSHIFT"
KEY_FILE=$FLAGARG
;;
'')
shift "$FLAGSHIFT"
break
;;
*)
flag_errusage "unrecognized flag $FLAGRAW"
;;
esac
done
if [ -z "${KEY_FILE-}" ]; then
echoerr "-i is required"
exit 1
fi
header linux-amd64
REMOTE_HOST=$TSTRUCT_LINUX_AMD64_BUILDER copy_keys
header linux-arm64
REMOTE_HOST=$TSTRUCT_LINUX_ARM64_BUILDER copy_keys
header macos-amd64
REMOTE_HOST=$TSTRUCT_MACOS_AMD64_BUILDER copy_keys
header macos-arm64
REMOTE_HOST=$TSTRUCT_MACOS_ARM64_BUILDER copy_keys
}
copy_keys() {
sh_c ssh-copy-id -fi "$KEY_FILE" "$REMOTE_HOST"
sh_c ssh "$REMOTE_HOST" 'cat .ssh/authorized_keys \| sort -u \> .ssh/authorized_keys.dedup'
sh_c ssh "$REMOTE_HOST" 'cp .ssh/authorized_keys.dedup .ssh/authorized_keys'
sh_c ssh "$REMOTE_HOST" 'rm .ssh/authorized_keys.dedup'
}
main "$@"

View file

@ -41,12 +41,12 @@ main() {
fi fi
if [ -z "${SKIP_CREATE-}" ]; then if [ -z "${SKIP_CREATE-}" ]; then
create_rhosts create_remote_hosts
fi fi
init_rhosts init_remote_hosts
} }
create_rhosts() { create_remote_hosts() {
KEY_NAME=$(aws ec2 describe-key-pairs | jq -r .KeyPairs[0].KeyName) KEY_NAME=$(aws ec2 describe-key-pairs | jq -r .KeyPairs[0].KeyName)
VPC_ID=$(aws ec2 describe-vpcs | jq -r .Vpcs[0].VpcId) VPC_ID=$(aws ec2 describe-vpcs | jq -r .Vpcs[0].VpcId)
@ -194,15 +194,15 @@ create_rhosts() {
done done
} }
init_rhosts() { init_remote_hosts() {
header linux-amd64 header linux-amd64
RHOST=$TSTRUCT_LINUX_AMD64_BUILDER init_rhost_linux REMOTE_HOST=$TSTRUCT_LINUX_AMD64_BUILDER init_remote_linux
header linux-arm64 header linux-arm64
RHOST=$TSTRUCT_LINUX_ARM64_BUILDER init_rhost_linux REMOTE_HOST=$TSTRUCT_LINUX_ARM64_BUILDER init_remote_linux
header macos-amd64 header macos-amd64
RHOST=$TSTRUCT_MACOS_AMD64_BUILDER init_rhost_macos REMOTE_HOST=$TSTRUCT_MACOS_AMD64_BUILDER init_remote_macos
header macos-arm64 header macos-arm64
RHOST=$TSTRUCT_MACOS_ARM64_BUILDER init_rhost_macos REMOTE_HOST=$TSTRUCT_MACOS_ARM64_BUILDER init_remote_macos
COLOR=2 header summary COLOR=2 header summary
log "export TSTRUCT_LINUX_AMD64_BUILDER=$TSTRUCT_LINUX_AMD64_BUILDER" log "export TSTRUCT_LINUX_AMD64_BUILDER=$TSTRUCT_LINUX_AMD64_BUILDER"
@ -211,32 +211,32 @@ init_rhosts() {
log "export TSTRUCT_MACOS_ARM64_BUILDER=$TSTRUCT_MACOS_ARM64_BUILDER" log "export TSTRUCT_MACOS_ARM64_BUILDER=$TSTRUCT_MACOS_ARM64_BUILDER"
} }
init_rhost_linux() { init_remote_linux() {
while true; do while true; do
if sh_c ssh "$RHOST" :; then if sh_c ssh "$REMOTE_HOST" :; then
break break
fi fi
sleep 5 sleep 5
done done
sh_c ssh "$RHOST" 'sudo yum upgrade -y' sh_c ssh "$REMOTE_HOST" 'sudo yum upgrade -y'
sh_c ssh "$RHOST" 'sudo yum install -y docker' sh_c ssh "$REMOTE_HOST" 'sudo yum install -y docker'
sh_c ssh "$RHOST" 'sudo systemctl start docker' sh_c ssh "$REMOTE_HOST" 'sudo systemctl start docker'
sh_c ssh "$RHOST" 'sudo systemctl enable docker' sh_c ssh "$REMOTE_HOST" 'sudo systemctl enable docker'
sh_c ssh "$RHOST" 'sudo usermod -a -G docker ec2-user' sh_c ssh "$REMOTE_HOST" 'sudo usermod -a -G docker ec2-user'
sh_c ssh "$RHOST" 'sudo reboot' || true sh_c ssh "$REMOTE_HOST" 'sudo reboot' || true
} }
init_rhost_macos() { init_remote_macos() {
while true; do while true; do
if sh_c ssh "$RHOST" :; then if sh_c ssh "$REMOTE_HOST" :; then
break break
fi fi
sleep 5 sleep 5
done done
sh_c ssh "$RHOST" '": | /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""' sh_c ssh "$REMOTE_HOST" '": | /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""'
sh_c ssh "$RHOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew update' sh_c ssh "$REMOTE_HOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew update'
sh_c ssh "$RHOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew upgrade' sh_c ssh "$REMOTE_HOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew upgrade'
sh_c ssh "$RHOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew install go' sh_c ssh "$REMOTE_HOST" 'PATH="/usr/local/bin:/opt/homebrew/bin:\$PATH" brew install go'
} }
main "$@" main "$@"

View file

@ -1,43 +0,0 @@
#!/bin/sh
set -eu
cd -- "$(dirname "$0")/../../.."
. ./ci/sub/lib.sh
help() {
cat <<EOF
usage: $0 [--dry-run] [...args]
$0 runs ssh-copy-id on each builder.
args are passed to ssh-copy-id directly.
EOF
}
main() {
while :; do
flag_parse "$@"
case "$FLAG" in
h|help)
help
return 0
;;
dry-run)
flag_noarg && shift "$FLAGSHIFT"
DRY_RUN=1
;;
'')
shift "$FLAGSHIFT"
break
;;
*)
flag_errusage "unrecognized flag $FLAGRAW"
;;
esac
done
sh_c ssh-copy-id "$@" "\$TSTRUCT_LINUX_AMD64_BUILDER"
sh_c ssh-copy-id "$@" "\$TSTRUCT_LINUX_ARM64_BUILDER"
sh_c ssh-copy-id "$@" "\$TSTRUCT_MACOS_AMD64_BUILDER"
sh_c ssh-copy-id "$@" "\$TSTRUCT_MACOS_ARM64_BUILDER"
}
main "$@"

View file

@ -4,14 +4,14 @@ cd -- "$(dirname "$0")/.."
. ./scripts/lib.sh . ./scripts/lib.sh
main() { main() {
if [ ! -e "${PREFIX-}" ]; then if [ -z "${PREFIX-}" ]; then
echoerr "\$PREFIX must be set to a unix prefix directory in which to install d2 like /usr/local" echoerr "\$PREFIX must be set to a unix prefix directory in which to install d2 like /usr/local"
return 1 return 1
fi fi
sh_c mkdir -p "$PREFIX/bin" sh_c mkdir -p "$PREFIX/bin"
sh_c mkdir -p "$PREFIX/share/man/man1"
sh_c install ./bin/d2 "$PREFIX/bin/d2" sh_c install ./bin/d2 "$PREFIX/bin/d2"
sh_c mkdir -p "$PREFIX/share/man/man1"
sh_c install ./man/d2.1 "$PREFIX/share/man/man1" sh_c install ./man/d2.1 "$PREFIX/share/man/man1"
} }

View file

@ -1,5 +1,9 @@
#!/bin/sh #!/bin/sh
if [ -n "${DEBUG-}" ]; then
set -x
fi
rand() { rand() {
seed="$1" seed="$1"
range="$2" range="$2"

View file

@ -4,7 +4,7 @@ cd -- "$(dirname "$0")/.."
. ./scripts/lib.sh . ./scripts/lib.sh
main() { main() {
if [ ! -e "${PREFIX-}" ]; then if [ -z "${PREFIX-}" ]; then
echoerr "\$PREFIX must be set to a unix prefix directory from which to uninstall d2 like /usr/local" echoerr "\$PREFIX must be set to a unix prefix directory from which to uninstall d2 like /usr/local"
return 1 return 1
fi fi

2
ci/sub

@ -1 +1 @@
Subproject commit 2fd92e49721b984e3a3ce9ea64810947c5eaf442 Subproject commit 65baeaa0e48fff12b12b1d04a0b013ba71e20add

View file

@ -628,7 +628,7 @@ EOF
if ! manpath | grep -qF "$PREFIX/share/man"; then if ! manpath | grep -qF "$PREFIX/share/man"; then
logcat >&2 <<EOF logcat >&2 <<EOF
Extend your \$MANPATH to view d2's manpages: Extend your \$MANPATH to view d2's manpages:
export MANPATH=$PREFIX/share/man\${MANPATH+:\$MANPATH} export MANPATH=$PREFIX/share/man:\$MANPATH
Then run: Then run:
man d2 man d2
EOF EOF