Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync Subnet EVM to ae0d0a3b #641

Draft
wants to merge 25 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions .github/workflows/sync-subnet-evm-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
remoteBranch:
description: "Subnet EVM Branch"
required: true
default: "master"
default: "coreth-test-0"

jobs:
sync_branch:
Expand All @@ -17,4 +17,49 @@ jobs:
- uses: actions/setup-go@v5
with:
go-version: "~1.21.12"
check-latest: true
check-latest: true

- name: Add Remote
run: |
git remote add subnet-evm https://github.com/ava-labs/subnet-evm

# TODO: Replace test branch with actual (eg, coreth)
- name: Fetch Remote Branch (${{ github.event.inputs.remoteBranch }})
id: fetch_remote_branch
run: |
git fetch subnet-evm ${{ github.event.inputs.remoteBranch }}
git fetch subnet-evm coreth-diff-script
result=$(git rev-parse --short=8 subnet-evm/${{ github.event.inputs.remoteBranch }})
echo result="${result}" >> "${GITHUB_OUTPUT}"

# TODO: Remove this step when the script is checked in
- name: Checkout script
run: |
git checkout subnet-evm/coreth-diff-script -- ./scripts/apply_diff_and_rename.sh

- name: Apply diff
run: |
./scripts/apply_diff_and_rename.sh subnet-evm/${{ github.event.inputs.remoteBranch }}

# TODO: Should this step be removed?
- name: Restore .github/workflows
run: |
git checkout -- .github/workflows

# TODO: Using a single branch to iterate for now (avoid maing noise in notifications)
- name: Create Pull Request
id: create_pr
uses: peter-evans/create-pull-request@v6
with:
commit-message: "Sync subnet-evm to ${{ steps.fetch_remote_branch.outputs.result }}"
branch: auto-sync-subnet-evm
title: "Sync Subnet EVM to ${{ steps.fetch_remote_branch.outputs.result }}"
body: |
This PR was created automatically by a GitHub Action.
draft: true

- name: PR Outputs
if: ${{ steps.create_pr.outputs.pull-request-number }}
run: |
echo "Pull Request Number - ${{ steps.create_pr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.create_pr.outputs.pull-request-url }}"
150 changes: 150 additions & 0 deletions contracts/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
/dist

/.idea
*.tsbuildinfo

.DS_Store

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

node_modules/
.env*
!.env*.default
.vscode/*
!.vscode/settings.json.default

cache/
artifacts/

.yalc
yalc.lock

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.production

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

local_rpc.json

# TypeChain files
/typechain
/typechain-types
52 changes: 26 additions & 26 deletions core/gen_genesis.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 34 additions & 0 deletions scripts/apply_diff_and_rename.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# Add other repo as a remote: `git remote add -f coreth git@github.com:ava-labs/coreth.git`.
# Usage: ./scripts/apply_diff_and_rename.sh coreth/master (or subnet-evm/master)

set -e;
set -u;

ROOT=$(git rev-parse --show-toplevel);
cd "${ROOT}";

BASE="${1}";

git diff .."${BASE}" --binary | git apply --whitespace=nowarn

if [[ "${BASE}" == coreth* ]]; then
echo "Replacing coreth with subnet-evm"
sed_command='s!github.com/ava-labs/coreth!github.com/ava-labs/subnet-evm!g'
else
echo "Replacing subnet-evm with coreth"
sed_command='s!github.com/ava-labs/subnet-evm!github.com/ava-labs/coreth!g'
fi

# TODO: improve this command that finds all the "coreth" references and replaces them with "subnet-evm"
sed_inplace=(sed -i) # Linux
if [[ $(uname) == "Darwin" ]]; then
sed_inplace=(sed -i '')
fi
LANG=C find . -type f \! -name 'apply_diff_and_rename.sh' \! -path './.git/*' \! -path './contracts/node_modules/*' -exec "${sed_inplace[@]}" -e "${sed_command}" {} \;
gofmt -w .
go mod tidy

# Restore contracts/.gitignore
git checkout -- contracts/.gitignore 2>/dev/null || true # Ignore if the file doesn't exist