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

feat(neard): print all enabled features in neard --version #11166

Merged
merged 1 commit into from
Apr 29, 2024

Conversation

jancionear
Copy link
Contributor

@jancionear jancionear commented Apr 26, 2024

Print all of the build time features enabled using the --features flag in the output of neard --version

Examples:

$ cargo run -p neard -- --version
...
neard (release trunk) (build 1.36.1-489-gdf22f90b9) (rustc 1.77.0) (protocol 67) (db 39)
features: [default, json_rpc, rosetta_rpc]
$ cargo run -p neard --features statelessnet_protocol,new_epoch_sync -- --version
...
neard (release trunk) (build 1.36.1-489-gdf22f90b9) (rustc 1.77.0) (protocol 85) (db 39)
features: [default, json_rpc, near_epoch_sync_tool, new_epoch_sync, rosetta_rpc, statelessnet_protocol]
$ cargo run -p neard --features nightly -- --version
...
neard (release trunk) (build 1.36.1-489-gdf22f90b9) (rustc 1.77.0) (protocol 140) (db 39)
features: [default, json_rpc, nightly, nightly_protocol, protocol_feature_fix_staking_threshold, protocol_feature_nonrefundable_transfer_nep491, rosetta_rpc, yield_resume]
$ ./neard --version
neard (release trunk) (build 1.36.1-489-gdf22f90b9) (rustc 1.77.0) (protocol 67) (db 39)
features: [default, json_rpc, rosetta_rpc]

Sometimes I have a neard binary, but I'm not sure which features were enabled during the build. It would be nice to be able to get this information somehow.
I can get the git commit from --version, but it didn't print the features, so now I added the feature of printing features.

We can can get the features from environment variables available to the build.rs script (e.g build-rs-env.txt). Then build.rs exposes an environment variable in a way that's visible from the neard crate (e.g. cargo-run-env.txt)

@jancionear jancionear requested a review from wacban April 26, 2024 15:02
@jancionear jancionear requested a review from a team as a code owner April 26, 2024 15:02
@jancionear jancionear requested a review from Ekleog-NEAR April 26, 2024 15:02
@jancionear jancionear changed the title Print all enabled features in neard --version feat(neard): print all enabled features in neard --version Apr 26, 2024
Copy link

codecov bot commented Apr 26, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 71.22%. Comparing base (3b7b82a) to head (df22f90).

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #11166      +/-   ##
==========================================
- Coverage   71.22%   71.22%   -0.01%     
==========================================
  Files         773      773              
  Lines      153862   153862              
  Branches   153862   153862              
==========================================
- Hits       109595   109586       -9     
- Misses      39839    39844       +5     
- Partials     4428     4432       +4     
Flag Coverage Δ
backward-compatibility 0.24% <0.00%> (ø)
db-migration 0.24% <0.00%> (ø)
genesis-check 1.42% <100.00%> (ø)
integration-tests 36.99% <0.00%> (+0.01%) ⬆️
linux 69.59% <100.00%> (-0.04%) ⬇️
linux-nightly 70.70% <100.00%> (-0.02%) ⬇️
macos 54.39% <100.00%> (+0.01%) ⬆️
pytests 1.65% <100.00%> (ø)
sanity-checks 1.44% <100.00%> (ø)
unittests 66.85% <100.00%> (-0.02%) ⬇️
upgradability 0.29% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@wacban
Copy link
Contributor

wacban commented Apr 28, 2024

I love the idea it's definitely worth adding.

Is it a foolproof way to get all the features? For example would it work in the recent case where new_epoch_sync was getting enabled unintentionally? If there are some known or suspected cases where this would break perhaps you can add a comment or even short message in the logs that this can happen.

@Ekleog-NEAR
Copy link
Collaborator

AFAIK this should work for all the features that are defined on the neard itself. However, it will not list features defined and enabled in other crates, and eg. new_epoch_sync is IIRC defined in a few crates. So we could still have a case of it being enabled in an upstream crate, but not in neard itself, as the dependency is directional.

This being said, I do think this change makes sense :)

@jancionear
Copy link
Contributor Author

AFAIK this should work for all the features that are defined on the neard itself. However, it will not list features defined and enabled in other crates, and eg. new_epoch_sync is IIRC defined in a few crates. So we could still have a case of it being enabled in an upstream crate, but not in neard itself, as the dependency is directional.

👍, it works only with direct neard features, it wouldn't print the nearcore/new_epoch_sync from the recent issue.

As a test I reverted Waclaw's fix (400bdf1) and compiled neard with cargo build --bin neard. It didn't print nearcore/new_epoch_sync, even though afaiu it's enabled:

$ ./target/debug/neard --version
neard (release trunk) (build 1.36.1-490-g85c823b84) (rustc 1.77.0) (protocol 67) (db 39)
features: [default, json_rpc, rosetta_rpc]

Printing features of all dependencies is much harder, I'm not sure how to do it. For now I'll merge this PR, and open an issue about printing features of all dependencies.

@jancionear
Copy link
Contributor Author

open an issue about printing features of all dependencies.

Opened: #11176

Merged via the queue into near:master with commit 09b8b40 Apr 29, 2024
29 checks passed
@jancionear jancionear deleted the featurette branch April 29, 2024 12:05
jancionear pushed a commit to jancionear/nearcore that referenced this pull request May 13, 2024
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade react-router
from 6.21.1 to 6.21.3.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **4 versions** ahead of your current
version.
- The recommended version was released **a month ago**, on 2024-01-18.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>react-router</b></summary>
    <ul>
      <li>
<b>6.21.3</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.21.3">2024-01-18</a></br><p>react-router-native@6.21.3</p>
      </li>
      <li>
<b>6.21.3-pre.0</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.21.3-pre.0">2024-01-16</a></br><p>react-router-native@6.21.3-pre.0</p>
      </li>
      <li>
        <b>6.21.2</b> - 2024-01-11
      </li>
      <li>
        <b>6.21.2-pre.0</b> - 2024-01-09
      </li>
      <li>
        <b>6.21.1</b> - 2023-12-21
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases">react-router
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>react-router</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/44b391ad27dacc07bb1298bd79315c00845d5a2c">44b391a</a>
chore: Update version for release (near#11203)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/82c48435350d239b376e435e8693ea51296c5848">82c4843</a>
Exit prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1551285c2e821994d01b0a86cd2839c63898dabc">1551285</a>
Change release date</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/8fc701a910788d69c358565c974665384ca462fb">8fc701a</a>
Prep release notes</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b4bf9271bc3e2a5a1fec73485392563cf3c8a7e2">b4bf927</a>
chore: Update version for release (pre) (near#11196)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/84e5fb9f6df09e8324e43541d2ab660c383a025e">84e5fb9</a>
Enter prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/858f6f125d4dad94483f87fdfb8cc23cbbe68d59">858f6f1</a>
Merge branch &#x27;main&#x27; into release-next</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b541b8dd5a582b1e95a2fd0111eeac2ab92f738b">b541b8d</a>
Fix NavLink isPending with a basename (near#11195)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/552662ab867fd09e865adb33bb6631207a16ca53">552662a</a>
Remove leftover &#x60;unstable_&#x60; prefix from
&#x60;Blocker&#x60;/&#x60;BlockerFunction&#x60; types (near#11187)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/04d653bcdb5b641485e4b9081fe196cfeac12716">04d653b</a>
Copy remix script to remove prereleases from changelogs (near#11183)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/6837a1111a8ae1c60ab665b9ff2d9eb20b2f2f40">6837a11</a>
Fix date in changelog</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c418410cb8b7277655d51e8ad2756059ad19fbeb">c418410</a>
Merge branch &#x27;release-next&#x27; into dev</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/274027eba64e614442106678c5a0676834202491">274027e</a>
Fix date in changelog</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/6be8e6c57d347c2dd975fa76b5aef6d39fd71d0e">6be8e6c</a>
Merge branch &#x27;release-next&#x27;</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/4e528c0bcee338c8f26d948affb3092257f6ee85">4e528c0</a>
chore: Update version for release (near#11182)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c8742d464d539bfdad452d59b7d5ce55b3628980">c8742d4</a>
Exit prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f9780210d84257c21f628c31de165e91f3474263">f978021</a>
Prep release notes</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/cfce7e61655b46f7894fa8cadd336a66d58d1a00">cfce7e6</a>
Unbold date</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/038ad94452d81d882f1042395b28b0d80c3b4f40">038ad94</a>
Add dates to prior releases in changelog</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c2c0826c6e4a9e213b4f43bc4e95d4f85bf2d96e">c2c0826</a>
chore: Update version for release (pre) (near#11178)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/5cd3a45d625d947c795bd85aab8026a5e6b29614">5cd3a45</a>
Enter prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/03ce0377f5bed5fca3eb94d875c33eab9414b116">03ce037</a>
Merge branch &#x27;main&#x27; into release-next</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/0ef18963d274ea78592479cab9a48be2c5ec3c6a">0ef1896</a>
Do not attempt to deserialize empty json responses (near#11164)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/e0d106bbe765ef12d3ad31e223127e2d08cab8e1">e0d106b</a>
Leverage useId for internal fetcher keys when available (near#11166)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/remix-run/react-router/compare/08cda17f450ebe19481be3fc080d243ec5ef509f...44b391ad27dacc07bb1298bd79315c00845d5a2c">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiI1YjE0ODcwNy0yNzZhLTQ2M2EtOGU0Mi01YTQ2ZGRlOWViNWEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjViMTQ4NzA3LTI3NmEtNDYzYS04ZTQyLTVhNDZkZGU5ZWI1YSJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?pkg&#x3D;react-router&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"5b148707-276a-463a-8e42-5a46dde9eb5a","prPublicId":"5b148707-276a-463a-8e42-5a46dde9eb5a","dependencies":[{"name":"react-router","from":"6.21.1","to":"6.21.3"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"98480bdc-d80b-4fd1-89d7-c4c56a706763","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":4,"publishedDate":"2024-01-18T19:49:25.374Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants