Closed Bug 1721208 Opened 3 years ago Closed 3 years ago

Fails to build with Windows 11 SDK (10.0.22000.194)

Categories

(Firefox Build System :: General, defect, P3)

defect

Tracking

(firefox95 fixed)

RESOLVED FIXED
95 Branch
Tracking Status
firefox95 --- fixed

People

(Reporter: saschanaz, Assigned: ahochheiden)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

It's highly possible that this is an SDK bug since it's still preview, but it shouldn't harm to log it here.

> ./mach build
MozillaBuild Install Directory: C:\mozilla-build\
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
unable to start ssh-agent service, error :1058
Error connecting to agent: No such file or directory
 0:01.22 Clobber not needed.
 0:03.19 Adding make options from C:\Users\Kagami\Documents\GitHub\gecko-dev\mozconfig
    AUTOCLOBBER=1
    MOZ_OBJDIR=C:/Users/Kagami/Documents/GitHub/gecko-dev/obj-x86_64-pc-mingw32
    OBJDIR=C:/Users/Kagami/Documents/GitHub/gecko-dev/obj-x86_64-pc-mingw32
    FOUND_MOZCONFIG=C:/Users/Kagami/Documents/GitHub/gecko-dev/mozconfig
    export FOUND_MOZCONFIG
 0:03.19 C:/Users/Kagami/.mozbuild/mozmake/mozmake.exe -f client.mk -s
 0:04.11 Elapsed: 0.00s; From dist/private: Kept 0 existing; Added/updated 0; Removed 0 files and 0 directories.
 0:04.13 Elapsed: 0.00s; From dist/public: Kept 0 existing; Added/updated 0; Removed 0 files and 0 directories.
 0:04.33 Elapsed: 0.19s; From dist/xpi-stage: Kept 0 existing; Added/updated 94; Removed 0 files and 0 directories.
 0:05.53 Elapsed: 1.38s; From _tests: Kept 0 existing; Added/updated 1247; Removed 0 files and 0 directories.
 0:06.00 Elapsed: 1.85s; From dist/bin: Kept 0 existing; Added/updated 2653; Removed 0 files and 0 directories.
 0:07.93 Elapsed: 3.82s; From dist/include: Kept 0 existing; Added/updated 6557; Removed 0 files and 0 directories.
 0:08.07 ./buildid.h.stub
 0:08.07 ./source-repo.h.stub
 0:08.63 ./application.ini.stub
 0:09.25 ./application.ini.h.stub
 0:10.16 toolkit/library/rust/force-cargo-library-build
 0:10.18 testing/geckodriver/module.res
 0:10.34 accessible/aom
 0:10.37 accessible/base
 0:10.40 accessible/html
 0:10.41 accessible/basetypes
 0:10.46 accessible/generic
 0:10.55 accessible/interfaces/gecko
 0:10.84 In file included from module.rc:6:
 0:10.85 In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\um\winuser.h:61:
 0:10.87 In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\um\libloaderapi.h:18:
 0:10.90 In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\shared\minwindef.h:182:
 0:10.92 C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\um\winnt.h(253,2): error: Must define a target architecture.
 0:10.93 #error Must define a target architecture.
 0:10.95  ^
 0:10.96 1 error generated.
 0:10.99 mozmake[4]: *** [C:/Users/Kagami/Documents/GitHub/gecko-dev/config/rules.mk:814: module.res] Error 1
 0:11.03 mozmake[3]: *** [C:/Users/Kagami/Documents/GitHub/gecko-dev/config/recurse.mk:72: testing/geckodriver/target] Error 2
 0:11.03 mozmake[3]: *** Waiting for unfinished jobs....
 0:24.95 warning: using `procedural-masquerade` crate
 0:24.95   --> toolkit\components\cascade_bloom_filter\src\lib.rs:24:1
 0:24.95    |
 0:24.96 24 | / rental! {
 0:24.96 25 | |     mod rentals {
 0:24.96 26 | |         use super::Cascade;
 0:24.96 27 | |
 0:24.96 ...  |
 0:24.96 33 | |     }
 0:24.96 34 | | }
 0:24.96    | |_^
 0:24.96    |
 0:24.96    = note: `#[warn(proc_macro_back_compat)]` on by default
 0:24.96    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 0:24.96    = note: for more information, see issue #83125 <https://github.com/rust-lang/rust/issues/83125>
 0:24.96    = note: The `procedural-masquerade` crate has been unnecessary since Rust 1.30.0. Versions of this crate below 0.1.7 will eventually stop compiling.
 0:24.96    = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:24.96 warning: 1 warning emitted
 0:24.96 warning: using `procedural-masquerade` crate
 0:24.96    --> security\manager\ssl\cert_storage\src\lib.rs:134:1
 0:24.96     |
 0:24.96 134 | / rental! {
 0:24.96 135 | |     mod holding {
 0:24.96 136 | |         use super::{Cascade, Mmap};
 0:24.96 137 | |
 0:24.96 ...   |
 0:24.96 143 | |     }
 0:24.96 144 | | }
 0:24.96     | |_^
 0:24.96     |
 0:24.96     = note: `#[warn(proc_macro_back_compat)]` on by default
 0:24.96     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 0:24.96     = note: for more information, see issue #83125 <https://github.com/rust-lang/rust/issues/83125>
 0:24.96     = note: The `procedural-masquerade` crate has been unnecessary since Rust 1.30.0. Versions of this crate below 0.1.7 will eventually stop compiling.
 0:24.96     = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:24.96 warning: 1 warning emitted
 0:24.96     Finished release [unoptimized] target(s) in 14.78s
 0:26.68 mozmake[2]: *** [C:/Users/Kagami/Documents/GitHub/gecko-dev/config/recurse.mk:34: compile] Error 2
 0:26.68 mozmake[1]: *** [C:/Users/Kagami/Documents/GitHub/gecko-dev/config/rules.mk:360: default] Error 2
 0:26.68 mozmake: *** [client.mk:65: build] Error 2
 0:26.71 280 compiler warnings present.

Going to mark as P5, but will investigate more closely if this is released into non-preview 👍

Priority: -- → P5
Summary: Fails to build with Windows 11 SDK (10.0.22000.71) → Fails to build with Windows 11 SDK (10.0.22000.120)

(Beta-stage .120 still has the same issue)

Severity: -- → S4
Summary: Fails to build with Windows 11 SDK (10.0.22000.120) → Fails to build with Windows 11 SDK (10.0.22000.168)

Where are you getting the Windows 11 SDK? It doesn't appear in VS 2022 preview (17.0.0 Preview 3.1).

Flags: needinfo?(krosylight)

Additional question: this is not blocking Windows 11 support in a practical way, is it? (we don't need the Windows 11 SDK to support Windows 11, that would be a first)

It's in https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewSDK.

Windows 11 support itself doesn't require this SDK, as you said.

Flags: needinfo?(krosylight)

The final Windows 11 SDK is still problematic. :mhentges should we be concerned?

Flags: needinfo?(mhentges)
Summary: Fails to build with Windows 11 SDK (10.0.22000.168) → Fails to build with Windows 11 SDK (10.0.22000.194)

Seemingly the relevant change is in winnt.h:

In 19041:

#ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
#if defined(_AMD64_) || defined(_X86_)
#define SYSTEM_CACHE_ALIGNMENT_SIZE 64
#else
#define SYSTEM_CACHE_ALIGNMENT_SIZE 128
#endif
#endif

In 22000:

#ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
#if defined(_AMD64_) || defined(_X86_)
#define SYSTEM_CACHE_ALIGNMENT_SIZE X86_CACHE_ALIGNMENT_SIZE
#elif defined(_ARM64_) || defined(_ARM_)
#define SYSTEM_CACHE_ALIGNMENT_SIZE ARM_CACHE_ALIGNMENT_SIZE
#else
#error Must define a target architecture.
#endif
#endif // SYSTEM_CACHE_ALIGNMENT_SIZE

ARM_CACHE_ALIGNMENT_SIZE is 128 so it doesn't cause a difference in ARM builds.

And it's included from obj/testing/geckodriver/module.rc, probably without target architecture macro as the error says.

Edit: ... which is generated by config/create_rc.py

Interestingly there is this comment:

//
// Note: RC_INVOKED is checked in PROBE_ALIGNMENT to maintain compatibility with previous
//       versions of the SDK which did not block inclusion in an .RC file.
//

#if defined(_AMD64_) || defined(_X86_) || defined(_ARM64EC_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_) || defined(_ARM_) || defined(_ARM64_)

//
// TODO: WOWXX - Unblock ARM. Make all alignment checks DWORD for now.
//

#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif !defined(RC_INVOKED)
#error "No Target Architecture"
#endif

I guess someone missed this for SYSTEM_CACHE_ALIGNMENT_SIZE?

Assignee: nobody → ahochheiden
Status: NEW → ASSIGNED

I filed https://github.com/microsoft/Windows-Dev-Performance/issues/98 btw, but not sure that is the correct place. This is a breaking change from SDK side anyway.

Nice, thanks! Chatted with Alex about this today, he's going to take a look into this.
Thanks for the report :)

Flags: needinfo?(mhentges)
Priority: P5 → P3

On SDK versions older than 10.0.22000.x we defaulted to 128, but with
this update, Microsoft removed the default and created a compiler error
if the CPU architecture was not specified. This change explicitly
defines the CPU architecture, resolving the compiler error.

Depends on D128318

Pushed by mh@glandium.org:
https://hg.mozilla.org/integration/autoland/rev/53b33618fc53
Added a preprocessor #define for the CPU architecture in created .res files to resolve a build breakwith with Windows SDK 10.0.22000.x. r=mhentges,glandium
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 95 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: