Skip to content

Build script to build liboqs#2417

Open
charishma1407 wants to merge 16 commits intoopen-quantum-safe:mainfrom
charishma1407:charishma_build_script
Open

Build script to build liboqs#2417
charishma1407 wants to merge 16 commits intoopen-quantum-safe:mainfrom
charishma1407:charishma_build_script

Conversation

@charishma1407
Copy link
Copy Markdown

@charishma1407 charishma1407 commented May 5, 2026

Purpose

This PR adds a build script (build_liboqs.sh) to simplify the compilation process for liboqs. The script automates the CMake configuration and build steps, making it easier for developers to build the library with common options.

Changes

  • Added build_liboqs.sh script to automate the build process such as installing the dependencies and building.
  • Script handles CMake configuration and compilation
  • Provides a convenient wrapper for common build operations

Testing

The script has been tested locally and successfully builds the liboqs library.

Checklist

  1. Does this PR change the input/output behaviour of a cryptographic algorithm (i.e., does it change known answer test values)?
    No - This PR only adds a build convenience script and does not modify any cryptographic algorithms.
  2. Does this PR change the list of algorithms available -- either adding, removing, or renaming? Does this PR otherwise change an API?
    No - This PR does not modify the algorithm list or any APIs. It only adds a build helper script.

AI Assistance

This contribution was created with the use of generative AI for builld-script-test.yml workflow

Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
@charishma1407 charishma1407 force-pushed the charishma_build_script branch from dcac969 to 32aacf1 Compare May 5, 2026 06:07
Copy link
Copy Markdown
Member

@baentsch baentsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this PR @charishma1407 ! I like it as it makes life easier for users -- and is even more complete than the similar build script we have in the even more user-focused oqs-provider project.

That said, some questions:

  • Who is the target audience for this? liboqs is a library that not too many users would (arguably, should :) build for themselves: One could argue that not having a build script excludes people from building the project that may have a propensity to "shoot themselves into the foot" having/wrongly using such script.
  • Why no Windows support?
  • Why no CI (testing)?
  • Who would maintain this going forward (e.g., when new config options or algs get added/changed)?

Copy link
Copy Markdown
Member

@bhess bhess left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @charishma1407, thanks for the PR, I agree this is a useful convenience for users. To echo and build on @baentsch's last points: my main concern is long‑term maintainability. The script hard‑codes build options and algorithms but isn't exercised in CI, so as new options or algorithms are added it could easily drift out of sync. Adding CI coverage for the script, or otherwise deriving its options from a single source of truth, would help reduce that risk. On the other hand, this might add quite some complexity that counters the goal to simplify the build.

P Charishma Kumari added 3 commits May 5, 2026 15:33
- Tests script on Ubuntu and macOS with multiple configurations
- Validates drift detection between script and CMake options
- Includes syntax and quality checks
- Addresses maintainer feedback about keeping script in sync

Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
@baentsch
Copy link
Copy Markdown
Member

baentsch commented May 5, 2026

Thanks @charishma1407 for adding thorough CI testing! This addresses those parts of the questions of @bhess and myself -- but it has one drawback: It requires an awful lot of compute cycles covering many --but surely not all-- current option-configs; also it will conceptually never be able to address the maintenance question (new config options added in the future).

So allow me to make a "wild" proposal: Would it be conceivable that a) at minimum this PR adds a feature to the script to issue a build-time warning if it discovers that any config file it depends upon and that are checked in (e.g., CONFIGURE.md, CMakeLists.txt) is more current than the build script? Even better (but I don't know whether it's possible) would be b) that such "build-script-out-of-date" check (in CI) triggers a Copilot "agent" creating an "AI-written" update to the build script taking the latest config options into account and ideally, even generating a PR for that?

P Charishma Kumari added 3 commits May 5, 2026 16:33
- Reduced test matrix from 13 to 4 essential configurations
- 69% reduction in test jobs, ~70% reduction in compute time
- Focuses on: default, minimal, shared+no-openssl, and cross-platform
- Staleness detection provides early warning for drift
- Addresses maintainer concern about compute cost

Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
@charishma1407
Copy link
Copy Markdown
Author

charishma1407 commented May 5, 2026

Hi @baentsch and @bhess I made changes according to the comments

  1. Created the workflow .yml file to run a CI test, and reduced it from 13 to 4 jobs to prevent the cycle.
  2. Updated the build script with the stale code check in it.
  3. As integrating it to copilot, I am not sure that copilot has the feature of creating the PR on its own.
  4. Build script can make dynamically but one problem with that is it make the script more complex and also it looses it's simplicity.

@charishma1407 charishma1407 requested review from baentsch and bhess May 5, 2026 11:40
P Charishma Kumari added 4 commits May 6, 2026 11:32
Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
…ed on CMake options

Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
@charishma1407 charishma1407 force-pushed the charishma_build_script branch from 8a95d63 to bc367cc Compare May 6, 2026 07:55
P Charishma Kumari and others added 2 commits May 6, 2026 13:44
Signed-off-by: P Charishma Kumari <pcharishmakumari@mac.j9d-in.ibm.com>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Comment thread build_liboqs.sh Outdated
P Charishma Kumari added 2 commits May 6, 2026 19:51
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
@charishma1407 charishma1407 requested a review from baentsch May 7, 2026 04:07
Signed-off-by: P Charishma Kumari <pcharishmakumari@Ps-MacBook-Pro.local>
@coveralls
Copy link
Copy Markdown

Coverage Status

coverage: 82.269% (-0.001%) from 82.27% — charishma1407:charishma_build_script into open-quantum-safe:main

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

Successfully merging this pull request may close these issues.

4 participants