-
Notifications
You must be signed in to change notification settings - Fork 313
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
xtask: Use reqwest to fetch gen_init_cpio.c
#1208
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,7 +10,6 @@ use std::{ | |
}; | ||
|
||
use anyhow::{Context as _, Result, anyhow, bail}; | ||
use base64::engine::Engine as _; | ||
use cargo_metadata::{Artifact, CompilerMessage, Message, Target}; | ||
use clap::Parser; | ||
use xtask::{AYA_BUILD_INTEGRATION_BPF, Errors}; | ||
|
@@ -29,12 +28,6 @@ enum Environment { | |
#[clap(long)] | ||
cache_dir: PathBuf, | ||
|
||
/// The Github API token to use if network requests to Github are made. | ||
/// | ||
/// This may be required if Github rate limits are exceeded. | ||
#[clap(long)] | ||
github_api_token: Option<String>, | ||
|
||
/// The kernel images to use. | ||
/// | ||
/// You can download some images with: | ||
|
@@ -180,7 +173,6 @@ pub fn run(opts: Options) -> Result<()> { | |
} | ||
Environment::VM { | ||
cache_dir, | ||
github_api_token, | ||
kernel_image, | ||
} => { | ||
// The user has asked us to run the tests on a VM. This is involved; strap in. | ||
|
@@ -206,31 +198,17 @@ pub fn run(opts: Options) -> Result<()> { | |
.try_exists() | ||
.context("failed to check existence of gen_init_cpio")? | ||
{ | ||
// TODO(https://github.com/oxidecomputer/third-party-api-clients/issues/96): Use ETag-based caching. | ||
let client = octorust::Client::new( | ||
String::from("aya-xtask-integration-test-run"), | ||
github_api_token.map(octorust::auth::Credentials::Token), | ||
)?; | ||
let octorust::Response { | ||
status: _, | ||
headers: _, | ||
body: octorust::types::ContentFile { mut content, .. }, | ||
} = tokio::runtime::Builder::new_current_thread() | ||
let content = tokio::runtime::Builder::new_current_thread() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd rather use: https://docs.rs/reqwest/latest/reqwest/blocking/index.html |
||
.enable_all() | ||
.build() | ||
.unwrap() | ||
.block_on(client.repos().get_content_file( | ||
"torvalds", | ||
"linux", | ||
"usr/gen_init_cpio.c", | ||
"master", | ||
)) | ||
.block_on(async { | ||
reqwest::get("https://github.com/torvalds/linux/raw/refs/heads/master/usr/gen_init_cpio.c") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You'll want to use https://docs.rs/reqwest/latest/reqwest/blocking/struct.Client.html This doc suggests it would be wise to:
Furthermore, I would suggest using the same API endpoint as https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28 You'll then want to parse the reponse with |
||
.await? | ||
.bytes() | ||
.await | ||
}) | ||
.context("failed to download gen_init_cpio.c")?; | ||
// Github very helpfully wraps their base64 at 10 columns /s. | ||
content.retain(|c| !c.is_whitespace()); | ||
let content = base64::engine::general_purpose::STANDARD | ||
.decode(content) | ||
.context("failed to decode gen_init_cpio.c")?; | ||
|
||
let mut clang = Command::new("clang"); | ||
clang | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This served a purpose. We frequently were getting rate limited in CI. Please reinstate it.