Skip to content

Proposal: make compilation using Appveyor easier for parties other than NV Access #16216

@XLTechie

Description

@XLTechie

Is your feature request related to a problem? Please describe.

If developers outside of NV Access wish to make their own Appveyor based builds of NVDA, it is currently necessary for them to modify several scripts and a configuration file in order to generate a successful build.

Those files must either be patched on every push, or an elaborate system for causing Appveyor to download both appveyor.yml, and many of the build scripts under the appveyor/ directory, must be put in place.

I designed a method for that in my original "Personal Compiles via Appveyor" document, published in 2022. However it involved causing appveyor.yml to fetch all of the build scripts from a separate branch from the one being worked on, in addition to the appveyor.yml file itself, and overwriting all of the build scripts provided by NV Access with slightly altered ones. One needed to carefully modify the install section, and those scripts, making the process very fragile, and complex merge conflicts with appveyor.yml inevitable. It was also sensitive to NV Access changing the build scripts, as happened a time or two I believe.

In recently attempting to update this how-to in response to some people desiring to build with Appveyor, I decided that there had to be a better way.

Describe the solution you'd like

With some minor modifications to the build scripts and to appveyor.yml, it would be possible to cause the troublesome parts of the build process to be easily disabled by variable.

By allowing NV Access specific build steps which fail for everybody else (at least if unmodified) to be easily disabled by commenting out a line in appveyor.yml, and by making other NV Access specific tasks only run if it's being done on an actual nvaccess owned repo, the process for third party builders becomes much easier:

  • Copy the appveyor.yml file to a gist, web page, or separate branch.
  • Comment out or change a few lines in the environment section of that file.
  • Tell Appveyor where to find the file.

And that's it.
The NV Access build scripts don't have to be changed at all, if they are responsive to variables in appveyor.yml.
That dramatically simplifies the process.

Describe alternatives you've considered

Continue using the current clunky methodology.

Additional context

While I know it's not the standard method for a proposal, in order to test my assumptions about how this could be simplified, it was necessary to actually do the work. As such I will forward a pull request as soon as I debug an annoying Appx build issue that has appeared.

Metadata

Metadata

Assignees

No one assigned

    Labels

    audience/nvda-devPR or issue is relevant to NVDA / Add-on developerscomponent/buildp5https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions