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

WIP: Add script that builds and test Boost library with our toolchain #199

Draft
wants to merge 18 commits into
base: main
Choose a base branch
from

Conversation

vejbomar
Copy link
Member

@vejbomar vejbomar commented Sep 20, 2024

Adds a script that builds and tests the Boost library with our toolchain. It's not a part of GitHub actions as we currently don't have an ARM Windows runner with WSL.

Build log from building Boost library on Linux x64 for Windows x64: x64_boost_build.log
Test log from quick testsuit of Boost library built on Linux x64 for Windows x64: x64_boost-test.log

@@ -0,0 +1,71 @@
#!/bin/bash
Copy link
Member

Choose a reason for hiding this comment

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

Please split the script to a separate ones for the build and test phase so it can be used separately both locally and as a separate job steps on GitHub Actions.


echo "using gcc : : /home/vejby/cross-aarch64-w64-mingw32-msvcrt/bin/aarch64-w64-mingw32-g++ ;" > "user-config.jam"

echo "Running Boost bootstrap.."
Copy link
Member

Choose a reason for hiding this comment

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

Please use https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#grouping-log-lines even when this script cannot be used in GitHub Actions for now for consistency with the rest of the scripts

# a library that defines a set of compiler architecture, operating system, library, and other
# version numbers it can gather from predefined macros
# -> needs to have specified target for MinGW Win ARM 64 as well
time ./b2 --user-config=./user-config.jam --prefix=./build --debug-configuration target-os=windows address-model=64 variant=debug debug-symbols=on install --without-context --without-cobalt --without-coroutine --without-fiber --without-charconv --without-json --without-predef --without-program_options > boost-build.log
Copy link
Member

Choose a reason for hiding this comment

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

When the script will be split to the build an test phase, please, remote the time command. Locally it can be specified by the user when executing the script, on the GitHub Actions the time of a job is measured anyway.

time ./b2 --user-config=./user-config.jam --prefix=./build --debug-configuration target-os=windows address-model=64 variant=debug debug-symbols=on install --without-context --without-cobalt --without-coroutine --without-fiber --without-charconv --without-json --without-predef --without-program_options > boost-build.log

echo "Running Boost test.."
cd status
Copy link
Member

Choose a reason for hiding this comment

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

I'd prefer to use pusd/popd.

# a library that defines a set of compiler architecture, operating system, library, and other
# version numbers it can gather from predefined macros
# -> needs to have specified target for MinGW Win ARM 64 as well
time ./b2 --user-config=./user-config.jam --prefix=./build --debug-configuration target-os=windows address-model=64 variant=debug debug-symbols=on install --without-context --without-cobalt --without-coroutine --without-fiber --without-charconv --without-json --without-predef --without-program_options > boost-build.log
Copy link
Member

Choose a reason for hiding this comment

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

Please, wrap the long lines . I'd suggest to target 100 columns.

@@ -0,0 +1,71 @@
#!/bin/bash

BOOST_BUILD_DIR=$1
Copy link
Member

Choose a reason for hiding this comment

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

Prefer to use sourcing config.sh so the invocation of the script requires no explicit parameters specification because the reasonable defaults will be defined there which will also ensure the placement of the source, build, test and installation artifacts to be consistent with the other packages.

time cp -r $BOOST_TEMPLATE_DIR/* $BOOST_BUILD_DIR
else
echo "Cloning Boost GitHub repository.."
time git clone --recursive https://github.com/boostorg/boost.git $BOOST_BUILD_DIR
Copy link
Member

Choose a reason for hiding this comment

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

Currently, we have a specific script for toolchain sources cloning (update-sources.sh) but nothing like that for individual tested packages and their sources must be either clonned manually or in the GitHub Actions workflow. This would deserve some refactoring but for now, moving the clonning of Boost to a separate script would be enough.

@Blackhex Blackhex marked this pull request as draft October 2, 2024 13:05
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.

2 participants