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

Add support for aarch64-pc-windows-msvc #1614

Closed
mokeyish opened this issue Jun 16, 2023 · 18 comments
Closed

Add support for aarch64-pc-windows-msvc #1614

mokeyish opened this issue Jun 16, 2023 · 18 comments
Milestone

Comments

@mokeyish
Copy link

mokeyish commented Jun 16, 2023

Hi
Currently, it looks like there is no support for aarch64-pc-windows-msvc

PR: mokeyish/smartdns-rs#152

It failed to build in my CI task. https://github.com/mokeyish/smartdns-rs/actions/runs/6280532933/job/17057868305?pr=152

jeremyd2019 referenced this issue in msys2/MINGW-packages Jun 25, 2023
thread 'main' panicked at '"C:\\Users\\Administrator\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\ring-0.16.20\\pregenerated\\aesv8-armx-linux64.obj": Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\ring-0.16.20\build.rs:769:10
@jeremyd2019
Copy link

Also fails on aarch64-pc-windows-gnullvm with an error about not finding a linux object file:

thread 'main' panicked at '"C:\\Users\\Administrator\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\ring-0.16.20\\pregenerated\\aesv8-armx-linux64.obj": Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\ring-0.16.20\build.rs:769:10

@jeremyd2019
Copy link

It actually looks like this may have been done on main, but there just hasn't been a release with such support yet. See #1339 (comment)

@mobeicanyue
Copy link

Me too, build failed. So painful..........

@mjm918
Copy link

mjm918 commented Jul 13, 2023

Me too, build failed. So painful..........

did you manage to solve it ? @mobeicanyue

@mobeicanyue
Copy link

Me too, build failed. So painful..........

did you manage to solve it ? @mobeicanyue

no, i said i build my program failed because of ring do not support arm Windows

@BRAVO68WEB
Copy link

Same here. Fails for aarch64-pc-windows-msvc

Compiling ring v0.16.20
   Compiling adler v1.0.2
   Compiling idna v0.4.0
   Compiling form_urlencoded v1.2.0
   Compiling miniz_oxide v0.7.1
   Compiling crc32fast v1.3.2
error: failed to run custom build command for `ring v0.16.20`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

Caused by:
  process didn't exit successfully: `/home/bravo68web/oss/is-it-taken/target/release/build/ring-a28a5f5a7daed329/build-script-build` (exit status: 101)
  --- stdout
  OPT_LEVEL = Some("3")
  TARGET = Some("aarch64-pc-windows-msvc")
  HOST = Some("aarch64-unknown-linux-gnu")
  cargo:rerun-if-env-changed=CC_aarch64-pc-windows-msvc
  CC_aarch64-pc-windows-msvc = None
  cargo:rerun-if-env-changed=CC_aarch64_pc_windows_msvc
  CC_aarch64_pc_windows_msvc = None
  cargo:rerun-if-env-changed=TARGET_CC
  TARGET_CC = None
  cargo:rerun-if-env-changed=CC
  CC = None
  RUSTC_LINKER = None
  cargo:rerun-if-env-changed=CROSS_COMPILE
  CROSS_COMPILE = None
  cargo:rerun-if-env-changed=CFLAGS_aarch64-pc-windows-msvc
  CFLAGS_aarch64-pc-windows-msvc = None
  cargo:rerun-if-env-changed=CFLAGS_aarch64_pc_windows_msvc
  CFLAGS_aarch64_pc_windows_msvc = None
  cargo:rerun-if-env-changed=TARGET_CFLAGS
  TARGET_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("neon")

  --- stderr
  running "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-I" "include" "-Wall" "-Wextra" "/GS" "/Gy" "/EHsc" "/GR-" "/Zc:wchar_t" "/Zc:forScope" "/Zc:inline" "/Zc:rvalueCast" "/sdl" "/Wall" "/wd4127" "/wd4464" "/wd4514" "/wd4710" "/wd4711" "/wd4820" "/wd5045" "/Ox" "-DNDEBUG" "-c" "/Fo/home/bravo68web/oss/is-it-taken/target/aarch64-pc-windows-msvc/release/build/ring-5f5c2d44d2cf2bcd/out/aes_nohw.obj" "crypto/fipsmodule/aes/aes_nohw.c"
  cc: error: -E or -x required when input is from standard input
  thread 'main' panicked at 'execution failed', /home/bravo68web/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ring-0.16.20/build.rs:656:9
  stack backtrace:
     0:     0xaaaac01ff6f4 - std::backtrace_rs::backtrace::libunwind::trace::h5ba5357b9a083fa0
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
     1:     0xaaaac01ff6f4 - std::backtrace_rs::backtrace::trace_unsynchronized::h50209a046e340266
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
     2:     0xaaaac01ff6f4 - std::sys_common::backtrace::_print_fmt::hc1f0fe6a809af61e
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:65:5
     3:     0xaaaac01ff6f4 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1dc727a23fab6b83
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:44:22
     4:     0xaaaac021e0ac - core::fmt::rt::Argument::fmt::hdb7178e51bb87859
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/rt.rs:138:9
     5:     0xaaaac021e0ac - core::fmt::write::h93016cb9b016717f
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/mod.rs:1094:21
     6:     0xaaaac01fc4a4 - std::io::Write::write_fmt::hd05d9d1974faeacd
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/io/mod.rs:1713:15
     7:     0xaaaac01ff540 - std::sys_common::backtrace::_print::h63e8991360658009
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:47:5
     8:     0xaaaac01ff540 - std::sys_common::backtrace::print::hc0e015b240e04d4b
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:34:9
     9:     0xaaaac0200fc0 - std::panicking::default_hook::{{closure}}::h578d14e5d7d719df
    10:     0xaaaac0200db0 - std::panicking::default_hook::h79df13a143e47d78
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:288:9
    11:     0xaaaac02014b0 - std::panicking::rust_panic_with_hook::hacc6c775e464554f
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:705:13
    12:     0xaaaac01dad20 - std::panicking::begin_panic::{{closure}}::h9e39c03e704ddfd3
    13:     0xaaaac01d36e0 - std::sys_common::backtrace::__rust_end_short_backtrace::h66f3a34c1e247c6b
    14:     0xaaaac01daca0 - std::panicking::begin_panic::hae4183af54595807
    15:     0xaaaac0193a38 - build_script_build::run_command::h784dbfac6faa0050
    16:     0xaaaac0192914 - build_script_build::compile::h428f8b57d71ee242
    17:     0xaaaac01925c4 - build_script_build::build_library::{{closure}}::hb64d46a00167f97b
    18:     0xaaaac01905c8 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::hd0ebd765439b13c2
    19:     0xaaaac019d110 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::h73f0614de5307ab1
    20:     0xaaaac018f6f4 - alloc::vec::Vec<T,A>::extend_desugared::hfb08430509aee558
    21:     0xaaaac01903e4 - <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend::h1888bb51ddfb8f66
    22:     0xaaaac018e1b8 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter::h25b9c781f723946e
    23:     0xaaaac0190464 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter::hc154a4b9efac3104
    24:     0xaaaac01902ac - <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter::h4a1425442bdefd97
    25:     0xaaaac019d674 - core::iter::traits::iterator::Iterator::collect::h58c0a563a9d79063
    26:     0xaaaac0191f94 - build_script_build::build_library::hf28b375e474d6466
    27:     0xaaaac0191e60 - build_script_build::build_c_code::{{closure}}::h1012d6a186694582
    28:     0xaaaac01995dc - <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::for_each::h373109bfce0b1aa2
    29:     0xaaaac0191a70 - build_script_build::build_c_code::h2eab6a48a1afd9a2
    30:     0xaaaac0190d5c - build_script_build::ring_build_rs_main::h6c38dde2ea6cda77
    31:     0xaaaac0190784 - build_script_build::main::h981556d85af82eee
    32:     0xaaaac0196e20 - core::ops::function::FnOnce::call_once::h3ae995a7db6bd04c
    33:     0xaaaac019e384 - std::sys_common::backtrace::__rust_begin_short_backtrace::h179f1f91657ce377
    34:     0xaaaac0196c24 - std::rt::lang_start::{{closure}}::he5e4e7370ea74b62
    35:     0xaaaac01f8180 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h73815c2202ebf835
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/ops/function.rs:284:13
    36:     0xaaaac01f8180 - std::panicking::try::do_call::he322c5687dc063fd
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
    37:     0xaaaac01f8180 - std::panicking::try::ha3511b468d1804e7
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
    38:     0xaaaac01f8180 - std::panic::catch_unwind::h8c170d233f7cd995
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
    39:     0xaaaac01f8180 - std::rt::lang_start_internal::{{closure}}::h5cc1c467dbf6d971
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:48
    40:     0xaaaac01f8180 - std::panicking::try::do_call::h36c542733478ec5a
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
    41:     0xaaaac01f8180 - std::panicking::try::hee0bb4cfc47b6510
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
    42:     0xaaaac01f8180 - std::panic::catch_unwind::h9b64a86ee6377576
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
    43:     0xaaaac01f8180 - std::rt::lang_start_internal::he7ee06d9cfc4d35a
                                 at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:20
    44:     0xaaaac0196c00 - std::rt::lang_start::h5ad4b7351efd8f40
    45:     0xaaaac01952e8 - main
    46:     0xffff906673fc - <unknown>
    47:     0xffff906674cc - __libc_start_main
    48:     0xaaaac018df30 - _start
    49:                0x0 - <unknown>

@Alovchin91
Copy link
Contributor

Alovchin91 commented Jul 23, 2023

Hi everyone,

Quite some folks have managed to patch 0.16.x to build on aarch64-pc-windows-msvc: #1554

I’d suggest to use one of those forks for now (1Password’s one might be a good choice).

@mobeicanyue
Copy link

Hi everyone,

Quite some folks have managed to patch 0.16.x to build on aarch64-pc-windows-msvc: #1554

I’d suggest to use one of those forks for now (1Password’s one might be a good choice).

Why not merge it and release 0.16.21😂😂,not familiar with path dependencies

@Alovchin91
Copy link
Contributor

@mobeicanyue I’m not a maintainer here 🤷‍♂️ I’m blocked on a bunch of projects myself by this.

I believe @briansmith’s main concern about the existing PR (the one that I’ve linked) is the amount of changes suggested.

If we could use 1Password’s branch mentioned there by @complexspaces to open a new PR, maybe that could be an easier change for @briansmith.

Or maybe @svenpaulsen would prefer to update his PR? I believe there’s an unanswered question from @briansmith there.

@tr3ysmith
Copy link

Any status on this? Not being able to work with a lot of libraries on Windows ARM is pretty big show stopper since major libraries like Rustls rely on Ring...

@carlocorradini
Copy link

Any update?

@briansmith
Copy link
Owner

Any update?

Hi friends, I have just returned from a long break. I have spent most of my ring-related time working on big-picture issues (funding and governance) for the project going forward. I understand that this is an issue that is blocking some projects from moving forward and it is tantalizingly close to being done. I am also frustrated about the situation and I'm actively working on a solution. Stay tuned.

@briansmith
Copy link
Owner

OK, friends, I think this is happening now.

Could anybody volunteer some solution for running the tests on ARM64 Windows in GitHub Actions?

The current story doesn't look good from reading actions/runner-images#768 and actions/runner-images#6175 and actions/runner-images#7507 (comment).

When we originally did the Windows Aarch64 work, I used a Surface Pro X over SSH to test this. This is hardly a sustainable solution for a production release though.

My understanding is that I could set something up on Azure to build a Windows ARM64 private builder. But...I don't know how and I don't really want to spend time to figure it out.

@briansmith
Copy link
Owner

Also, if you have the ability to test the main branch on Aarch64 Windows (building ring from Git requires installing Perl; sorry in advance), it would be great if you could comment on #1595 about your experience with that change. Presumably it is good and it works. If some (non-anonymous) people can verify it works I can merge that PR presumptively until I can dig out my Surface Pro X to verify it.

Regardless, I will need to dig out the Surface Pro X for the verification before doing the final 0.17 release.

@carlocorradini
Copy link

Can we use cross?

@mokeyish
Copy link
Author

mokeyish commented Sep 23, 2023

Probably because the version is not satisfied, I cannot test by add crate patch.

https://github.com/mokeyish/smartdns-rs/pull/152/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542R51

image

@briansmith
Copy link
Owner

Friends, I merged PR #1595 and now I'm looking at merging PR #1542, which removes the windows-sys dependency too. I would appreciate people taking a look at #1542 and testing it out on Aarch64 Windows systems.

@briansmith
Copy link
Owner

First of all, this is a duplicate of issue #1167, which I didn't even notice until now. Regardless, as I said in that issue:

Closing this as completed with the ring 0.17.0 release. I was able to build and test both natively on ARM64 Windows and cross-compile from x86_64 Windows. PR #1691 clarifies the documentation. I also filed issue #882 for cc-rs to help make this easier so that modifying %PATH% will no longer be required in the future.

Thanks for all the help here! I really appreciate it.

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

No branches or pull requests

9 participants