Skip to content

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
justsmth committed Apr 11, 2024
1 parent d43191c commit 33bc331
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 19 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,37 @@ jobs:
# See: https://github.com/rust-lang/cargo/issues/8531
run: AWS_LC_FIPS_SYS_STATIC=${{ matrix.static }} cargo test --tests --features fips

build-env-fips-external-bindgen-test:
if: github.repository == 'aws/aws-lc-rs'
name: aws-lc-rs FIPS - External bindgen test
runs-on: ${{ matrix.os }}
env:
AWS_LC_FIPS_SYS_EXTERNAL_BINDGEN: 1
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-12, macos-13-xlarge, windows-latest ]
steps:
- if: ${{ matrix.os == 'windows-latest' }}
uses: ilammy/setup-nasm@v1
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- uses: dtolnay/rust-toolchain@stable
- name: Install ninja-build tool
uses: seanmiddleditch/gha-setup-ninja@v4
- uses: actions/setup-go@v4
with:
go-version: '>=1.18'
- name: Install bindgen-cli
run: cargo install --locked bindgen-cli
- name: Remove bindings
run: |
rm ./aws-lc-fips-sys/src/x86_64*
rm ./aws-lc-fips-sys/src/aarch64*
- name: Run cargo test
run: cargo test --tests -p aws-lc-rs --no-default-features --features fips

careful:
if: github.repository == 'aws/aws-lc-rs'
name: Run carefully
Expand Down
2 changes: 1 addition & 1 deletion aws-lc-fips-sys/builder/cmake_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ fn test_perl_command() -> bool {
fn test_go_command() -> bool {
let result = test_command("go".as_ref(), &["version".as_ref()]);
if !result.status && result.executed {
eprintln!("Go stdout:\n--------\n{}\n--------", result.stdout);
eprintln!("Go stderr:\n--------\n{}\n--------", result.stderr);
}
result.status
}
Expand Down
44 changes: 26 additions & 18 deletions aws-lc-fips-sys/builder/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,14 +302,14 @@ fn initialize() {
}

fn is_bindgen_required() -> bool {
is_internal_no_prefix()
is_no_prefix()
|| is_internal_bindgen()
|| is_external_bindgen()
|| has_bindgen_feature()
|| !has_pregenerated()
}

fn is_internal_no_prefix() -> bool {
fn is_no_prefix() -> bool {
unsafe { AWS_LC_FIPS_SYS_NO_PREFIX }
}

Expand All @@ -335,7 +335,7 @@ fn main() {
let manifest_dir = current_dir();
let manifest_dir = dunce::canonicalize(Path::new(&manifest_dir)).unwrap();
let prefix_str = prefix_string();
let prefix = if is_internal_no_prefix() {
let prefix = if is_no_prefix() {
None
} else {
Some(prefix_str)
Expand Down Expand Up @@ -373,10 +373,9 @@ fn main() {
bindings_available = true;
}

if !bindings_available && !cfg!(feature = "ssl") && prefix.is_some() {
if !bindings_available && !cfg!(feature = "ssl") {
let gen_bindings_path = out_dir().join("bindings.rs");
let result =
invoke_external_bindgen(&manifest_dir, prefix.unwrap().as_str(), &gen_bindings_path);
let result = invoke_external_bindgen(&manifest_dir, &prefix, &gen_bindings_path);
match result {
Ok(()) => {
emit_rustc_cfg("use_bindgen_generated");
Expand Down Expand Up @@ -454,13 +453,14 @@ pub(crate) struct BindingOptions {

fn invoke_external_bindgen(
manifest_dir: &Path,
prefix: &str,
prefix: &Option<String>,
gen_bindings_path: &PathBuf,
) -> Result<(), String> {
if !test_command("bindgen".as_ref(), &["--version".as_ref()]).status {
return Err("External bindgen command not found.".to_string());
}
let options = BindingOptions {
// We collect the symbols w/o the prefix added
build_prefix: None,
include_ssl: false,
disable_prelude: true,
Expand All @@ -471,17 +471,22 @@ fn invoke_external_bindgen(
.join("rust_wrapper.h")
.display()
.to_string();
let sym_prefix = if target_os().to_lowercase() == "macos" || target_os().to_lowercase() == "ios"
{
format!("_{prefix}_")
} else {
format!("{prefix}_")
};
let mut bindgen_params = vec![
"--prefix-link-name",
&sym_prefix,

let sym_prefix: String;
let mut bindgen_params = vec![];
if let Some(prefix_str) = prefix {
sym_prefix = if target_os().to_lowercase() == "macos" || target_os().to_lowercase() == "ios"
{
format!("_{prefix_str}_")
} else {
format!("{prefix_str}_")
};
bindgen_params.extend(vec!["--prefix-link-name", sym_prefix.as_str()]);
}

bindgen_params.extend(vec![
"--rust-target",
r"1.64",
r"1.59",
"--with-derive-default",
"--with-derive-eq",
"--allowlist-file",
Expand All @@ -500,7 +505,7 @@ fn invoke_external_bindgen(
COPYRIGHT,
header.as_str(),
"--",
];
]);
clang_args
.iter()
.for_each(|x| bindgen_params.push(x.as_str()));
Expand Down Expand Up @@ -536,6 +541,9 @@ fn prepare_clang_args(manifest_dir: &Path, options: &BindingOptions) -> Vec<Stri
);

if options.build_prefix.is_some() {
// NOTE: It's possible that the prefix embedded in the header files doesn't match the prefix
// specified. This only happens when the version number as changed in Cargo.toml, but the
// new headers have not yet been generated.
add_header_include_path(
&mut clang_args,
get_generated_include_path(manifest_dir)
Expand Down

0 comments on commit 33bc331

Please sign in to comment.