-
Notifications
You must be signed in to change notification settings - Fork 387
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
[CI-NO-BUILD] [build] Introduce menu wrapper for build operations #1213
base: master
Are you sure you want to change the base?
Conversation
1. Menuing system providing: a) Management of environment variables: EWDK11_DIR EWDK11_24H2_DIR VIRTIO_WIN_NO_ARM _BUILD_DISABLE_SDV VIRTIO_WIN_SDV_2022 SKIP_SDV_ACTUAL CODEQL_OFFLINE_ONLY CODEQL_RUN_BLIND b) Launcher for build environments: UNINITIALIZED (dynamic) Cobalt EWDK Germanium EWDK c) Build launcher with options for targets, platforms (archs), analysis builds and environments d) Syntactically correct buildAll.bat parameter hints e) Launcher for signer (VirtIO Test Cert) f) Launcher for cleaners (includes quiet and debug options) 2. Launcher for Windows 11 to ensure the script runs in conhost. Signed-off-by: benyamin-codez <[email protected]>
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.
@benyamin-codez Thanks! Looks cool!
I have two comments:
- Let's choose a name that is more user-facing :) Something like "build_menu.bat" or even menuconfig.bat
- Can we improve the convoluted menus with some "functions" to improve readability? (not must)
I also suggest not to use the exact name for the "last" EWDK used for the build. It will change at some point. |
Thanks for the feedback..!
Whatever do you mean...?!? 8^D This raises the issue of the two titles. Presently they are:
Perhaps just replace the words Please advise.
Can you point me towards which part(s) you are finding convoluted? ( Please don't say the whole thing...!! 8^d )
I considered this at great length and tried various other labels. There were three factors that ultimately led me to use the named EWDKs. So the files needing updates would be this wrapper, If PR #1212 was to merge (which I'm very much hoping it will),... Given the above, I'm minded to leave this part of the wrapper as-is, but remain open to specific suggestions. FWIW, here are a couple of pics showing changes I'm about to add to PR #1212 as a result of the PR #1210 review: You will observe that the Win10 EWDK (legacy) references are very specific... Best regards, |
Addendum to 6e9ab47. 1. File rename. Signed-off-by: benyamin-codez <[email protected]>
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.
Renamed.
Addendum to 6e9ab47 and f5384f1.. 1. Correct contents following rename. Signed-off-by: benyamin-codez <[email protected]>
In general, I agree with this tool but all our usage is a CI or other automation tools. We can review and merge this menu tool but it will not be maintained. Do you agree to support this in the future, update the menu for any new MS requirements like build tools, code analysis tools, etc? |
That's certainly appropriate for your workflows, especially those geared towards WHCP requirements. I would say this tool is more suited to the workflows of bespoke and externally contributing developers and that of the casual or novice builder. It exposes all of the current build options and displays hints for For developers, multiple environments are exposed to facilitate refactoring the source for compilation in more recent EWDKs and various code analysis options have been made available, both established and new. This allows for rapid prototyping without requiring a Visual Studio IDE or the developer to repeatedly issue CLI commands.
To avoid any furtherance of doubt, my submission is provided on an entirely as-is basis without any warranty or guarantee whatsoever and according to the terms of the LICENSE at the time it was submitted. Furthermore, the terms of said LICENSE and the explicit and implied disclaimers, bars and indemnities expressed therein, shall extend severally and collectively also to my agents, representatives, heirs or substitutes, successors, and assigns. Having said that, I'll most likely assist with maintaining it, especially if I keep dropping PRs here. 8^d Anyone can, of course, submit a PR for any necessary or desired changes, including to the wrapper. I expect updates to this tool will track changes to the build environment and the wiki. As mentioned above, coincident changes to the build environment would notably be in |
Should I add |
Yes, please |
Yes |
I'm afraid I have to disagree with the above statement on the deep philosophical level :) Here is how the development flow works:
Again, very similar way of thinking here. In most cases, we want to support two eWDK environments. Maybe 3 (in a separate branch) when there is a vNext Windows versions. We specifically avoid compiling each Windows version with own eWDK. We don't want to have 5 packages for Windows 10 and 3 packages for Windows 11 (for now, and more going forward). We want to (as long as it will be possible), to have one package for Windows 10, one package for Windows 11.
That's an important part, otherwise this script will become unusable very fast. Again - our workflow is different. We already have all the platforms set in the VS.
|
Thanks for the further feedback...!
I'm not sure how we disagree... 8^d By way of explanation, note my emphasis above, i.e. re "...so the casual or novice builder...". The point I was raising here, might be best served by an example of a novice builder wanting the latest Regarding your point:
I note that the build script I propose in #1212 will clearly show warnings and errors at the end of the build if one builds without SDV options. If skipping targets or architectures is also a concern, I could add warnings for this too (targets partially done already via DVL outcome logging)... I do note however, that most of these build options already exist, and there's nothing to stop developers employing them to skip elements and then rely on the checks when submitting PRs. I guess this wrapper does - by design - make it easier for devs to do that. For this reason, I'm happy to add those warnings and I could also add a summary warning about whether the build is suitably configured to produce artefacts for WHCP submission, if you think that would be helpful.
Again, I'm not sure how we disagree. I'm not proposing to have additional packages. In the wrapper, we recommend
The MS codenames here are actually MS internal development codenames that track with the semester-based engineering milestones. These milestones are NOT necessarily equivalent to the Windows version. Some examples of this would include Titanium EWDK which is semester 19H1 but is for Windows version 1903, or Nickel EWDK which is semester 22H2 but covers Windows versions 22H2 and 22H3. So these development codenames track one-to-one with the relevant development semester and NOT the Windows version. I think it is important to not confuse development semesters with Windows versions and an effective way of doing this is to use the development codename instead of the semester. This is one reason MS use them internally. Furthermore, the Build Lab determines the maximum available NTDDI_VERSION or ABRACADABRA value for that EWDK. The development code names also now track well with the Build Lab names (less the Release and Build tags), e.g. following the Titanium (19H1) EWDK, MS uses the two letter codes from the periodic table of elements, e.g. Germanium is I also avoided using build numbers because, again, these relate more to Windows versions than development semesters. Given the above explanations, how do you think we should proceed?
Please accept my apologies - I'm unsure as to what "important part" you are referring to here... 8^d If I presume you mean maintaining this wrapper script, I can only undertake to use my best endeavours to do so under the aforementioned provisos. I hope and trust this would be sufficient. I also previously raised the following:
Happy to leave it otherwise... 8^d Let me know what you think about this and the above and we can go from there. Best regards, |
Menuing system providing:
a) Management of environment variables:
EWDK11_DIR
EWDK11_24H2_DIR
VIRTIO_WIN_NO_ARM
_BUILD_DISABLE_SDV
VIRTIO_WIN_SDV_2022
SKIP_SDV_ACTUAL
CODEQL_OFFLINE_ONLY
CODEQL_RUN_BLIND
b) Launcher for build environments:
UNINITIALIZED (dynamic)
Cobalt EWDK
Germanium EWDK
c) Build launcher with options for targets, platforms (archs), analysis builds and environments
d) Syntactically correct buildAll.bat parameter hints
e) Launcher for signer (VirtIO Test Cert)
f) Launcher for cleaners (includes quiet and debug options)
Launcher for Windows 11 to ensure the script runs in conhost.