9261da7fb1
* save progress * tidy * Update go.yml * make CI happy * gosec * revert back * Update go.yml * change go version * remove fixed test case * fix ci * fix updates * fix up * fix race tests * fix bad mock * lock it * fix it * fix e2e builds * use gotags * Revert "use gotags" This reverts commit 808863f427399723a3e7e2b70bcc4771d108e8e6. * Revert "fix e2e builds" This reverts commit eb351e7d319b13fea2642271390e1f2863fc6d72. * Revert "fix it" This reverts commit 9e99dac94f68538e0cd3f8958b7f10f1fe433b26. * Revert "lock it" This reverts commit 1a3c60ad41b76c651af2d64edff2eaf864ad64ec. * different approach * better Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com> |
||
---|---|---|
.. | ||
blst | ||
herumi | ||
usb | ||
BUILD.bazel | ||
com_github_ethereum_go_ethereum_secp256k1.patch | ||
com_github_gogo_protobuf-equal.patch | ||
com_github_prysmaticlabs_ethereumapis-tags.patch | ||
io_bazel_rules_go_test.patch | ||
README.md |
Third Party Package Patching
This directory includes local patches to third party dependencies we use in Prysm. Sometimes, we need to make a small change to some dependency for ease of use in Prysm without wanting to maintain our own fork of the dependency ourselves. Our build tool, Bazel allows us to include patches in a seamless manner based on simple diff rules.
This README outlines how patching works in Prysm and an explanation of previously created patches.
Given maintaining a patch can be difficult and tedious, patches are NOT the recommended way of modifying dependencies in Prysm unless really needed
Table of Contents
Prerequisites
Bazel Installation:
- The latest release of Bazel
- A modern UNIX operating system (MacOS included)
Creating a Patch
To create a patch, we need an original version of a dependency which we will refer to as a
and the patched version referred to as b
.
cd /tmp
git clone https://github.com/someteam/somerepo a
git clone https://github.com/someteam/somerepo b && cd b
Then, make all your changes in b
and finally create the diff of all your changes as follows:
cd ..
diff -ur --exclude=".git" a b > $GOPATH/src/github.com/prysmaticlabs/prysm/third_party/YOURPATCH.patch
Next, we need to tell the Bazel WORKSPACE to patch the specific dependency. Here's an example for a patch we use today for the Ethereum APIs dependency:
go_repository(
name = "com_github_prysmaticlabs_ethereumapis",
commit = "367ca574419a062ae26818f60bdeb5751a6f538",
patch_args = ["-p1"],
patches = [
"//third_party:com_github_prysmaticlabs_ethereumapis-tags.patch",
],
importpath = "github.com/prysmaticlabs/ethereumapis",
)
Now, when used in Prysm, the dependency you patched will have the patched modifications when you run your code.