Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
982fef8
Enhance macOS support by adding ARM architecture builds and updating …
anchapin Jul 9, 2025
f1fb1ae
Refactor macOS build process to use aqtinstall for Qt Installer Frame…
anchapin Jul 9, 2025
86bf9b0
Refactor Qt Installer Framework installation in macOS and Windows bui…
anchapin Jul 9, 2025
b5f7853
Refactor Qt Installer Framework installation in macOS and Windows bui…
anchapin Jul 9, 2025
2ebfb66
Refactor string concatenation in various files for improved readabili…
anchapin Jul 9, 2025
0efa629
Fix GitHub Actions workflow build issues
anchapin Jul 9, 2025
1cba366
Fix Windows pip upgrade permission issue
anchapin Jul 9, 2025
03a7c26
Add cleanup step for corrupted dependency files
anchapin Jul 9, 2025
2a248da
Enhanced dependency cleanup and verification
anchapin Jul 10, 2025
abfb57b
Fix path handling in Qt Installer Framework installation steps
anchapin Jul 10, 2025
76ade06
Fix CI: Use x64 OpenStudio-server for ARM64 builds
anchapin Jul 10, 2025
27113bb
Update OpenStudio-server filename for macOS ARM64 architecture
anchapin Jul 10, 2025
5c48500
Fix architecture detection and error handling in build process
anchapin Jul 10, 2025
44a314c
Fix macOS ARM build issues
anchapin Jul 10, 2025
c5d7a38
Fix macOS ARM build: Remove redundant pre-download and improve file i…
anchapin Jul 10, 2025
30b60e2
Enhance architecture handling in packaging and build scripts for macOS
anchapin Jul 10, 2025
08b5e12
Fix fs-jetpack inspect API usage for Ubuntu workflow compatibility
anchapin Jul 10, 2025
8807d90
Enhance AWS credentials configuration in build workflow and increase …
anchapin Jul 10, 2025
70625ec
Remove AWS credentials requirement and add dependency accessibility test
anchapin Jul 10, 2025
b313d6e
Fix workflow failures: ARM64 dependency corruption and Qt IFW issues
anchapin Jul 10, 2025
f67209b
Fix merge-stream compatibility error in downloadDeps function
anchapin Jul 10, 2025
bd70ae9
Add Claude Code and Claude Flow files to .gitignore
anchapin Jul 10, 2025
fde54fa
Add memory/ directory to .gitignore
anchapin Jul 10, 2025
62c7690
Simplify workflow by removing troubleshooting additions
anchapin Jul 10, 2025
6f86c43
Simplify build.js to focus only on ARM64 architecture support
anchapin Jul 10, 2025
e3c3588
Remove non-ARM64 changes from PR scope
anchapin Jul 10, 2025
78398d9
Remove all JavaScript app code changes from ARM64 PR
anchapin Jul 10, 2025
4632871
Refactor build.js using DRY principle for ARM64 manifest lookups
anchapin Jul 10, 2025
6066590
Update aqtinstall installation command to use --break-system-packages…
anchapin Jul 10, 2025
c87f134
Fix Python command for aqtinstall tool installation on macOS and Windows
anchapin Jul 10, 2025
5e92eac
Add OpenStudio 3.10.0 ARM64 package for Darwin platform in manifest
anchapin Jul 10, 2025
bdb3df9
Temporarily disable lint in build process to fix ARM64 build
anchapin Jul 10, 2025
d850238
Enhance dependency management by adding download, verification, and e…
anchapin Jul 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 45 additions & 21 deletions .github/workflows/build_pat.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,24 @@ jobs:
# fail-fast: Default is true, switch to false to allow one platform to fail and still run others
fail-fast: false
matrix:
name: [Ubuntu, macOS, Windows_2022]
name: [Ubuntu, macOS-Intel, macOS-ARM, Windows_2022]
include:
- name: Ubuntu
os: ubuntu-22.04
node-version: 18
allow_failure: false
- name: macOS
- name: macOS-Intel
os: macos-13
node-version: 18
allow_failure: false
arch: x86_64
MACOSX_DEPLOYMENT_TARGET: 10.15
SDKROOT: /Applications/Xcode_11.7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
DEVELOPER_DIR: /Applications/Xcode_13.2.1.app/Contents/Developer
- name: macOS-ARM
os: macos-14
node-version: 18
allow_failure: false
arch: arm64
MACOSX_DEPLOYMENT_TARGET: 12.1
- name: Windows_2022
os: windows-2022
node-version: 18
Expand All @@ -54,19 +59,26 @@ jobs:
sudo apt update
sudo apt install cmake
elif [ "$RUNNER_OS" == "macOS" ]; then
curl -L -O https://download.qt.io/archive/qt-installer-framework/4.3.0/QtInstallerFramework-macOS-x64-4.3.0.dmg
hdiutil attach -mountpoint ./qtfiw_installer QtInstallerFramework-macOS-x64-4.3.0.dmg
echo "ls ./qtfiw_installer"
sudo ./qtfiw_installer/QtInstallerFramework-macOS-x64-4.3.0.app/Contents/MacOS/QtInstallerFramework-macOS-x64-4.3.0 --verbose --script ./ci/install_script_qtifw.qs
ls ~/Qt/QtIFW-4.3.0 || true
echo "~/Qt/QtIFW-4.3.0/bin/" >> $GITHUB_PATH
# Install Qt Installer Framework using aqtinstall
python3 -m pip install --break-system-packages aqtinstall
python3 -m aqt install-tool -O "${{ github.workspace }}/Qt/" mac desktop tools_ifw

# Add Qt IFW to PATH
QT_IFW_DIR=$(find "${{ github.workspace }}/Qt/Tools/QtInstallerFramework" -name "bin" -type d | head -1)
if [ -n "$QT_IFW_DIR" ]; then
echo "$QT_IFW_DIR" >> $GITHUB_PATH
fi
echo MACOSX_DEPLOYMENT_TARGET=${{ matrix.MACOSX_DEPLOYMENT_TARGET }} >> $GITHUB_ENV
# echo CMAKE_MACOSX_DEPLOYMENT_TARGET='-DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET' >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
curl -L -O https://download.qt.io/archive/qt-installer-framework/4.3.0/QtInstallerFramework-windows-x86-4.3.0.exe
./QtInstallerFramework-windows-x86-4.3.0.exe --verbose --script ./ci/install_script_qtifw.qs
dir "C:/Qt/"
echo "C:/Qt/QtIFW-4.3.0/bin" >> $GITHUB_PATH
# Install Qt Installer Framework using aqtinstall
python3 -m pip install --break-system-packages aqtinstall
python3 -m aqt install-tool -O "${{ github.workspace }}/Qt/" windows desktop tools_ifw

# Add Qt IFW to PATH
QT_IFW_DIR=$(find "${{ github.workspace }}/Qt/Tools/QtInstallerFramework" -name "bin" -type d | head -1)
if [ -n "$QT_IFW_DIR" ]; then
echo "$QT_IFW_DIR" >> $GITHUB_PATH
fi
#echo "Setting CMAKE_GENERATOR options equivalent to ='-G \"Visual Studio 16 2019\" -A x64'"
#echo CMAKE_GENERATOR='Visual Studio 16 2019' >> $GITHUB_ENV
#echo CMAKE_GENERATOR_PLATFORM=x64 >> $GITHUB_ENV
Expand All @@ -88,15 +100,16 @@ jobs:
run: cmake -E make_directory ./build/




- name: Configure CMake & build (Windows)
working-directory: ./build
if: runner.os == 'Windows'
shell: cmd
run: |
echo "Using vcvarsall to initialize the development environment"
call vcvarsall.bat x64
cmake -G "Visual Studio 17 2022" -A x64 ..
cmake --build . --target package -j ${{ env.N }} --config Release
cmake --build . --target package -j %N% --config Release

- name: Configure CMake & build (Linux)
working-directory: ./build
Expand All @@ -120,10 +133,21 @@ jobs:
shell: bash
run: |
set -x
cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=11 \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_BUILD_TYPE=Release \
../
if [ "${{ matrix.arch }}" = "arm64" ]; then
export MATRIX_ARCH=arm64
echo "MATRIX_ARCH=arm64" >> $GITHUB_ENV
cmake -DCMAKE_OSX_ARCHITECTURES="arm64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${{ matrix.MACOSX_DEPLOYMENT_TARGET }}" \
-DCMAKE_BUILD_TYPE=Release \
../
else
export MATRIX_ARCH=x86_64
echo "MATRIX_ARCH=x86_64" >> $GITHUB_ENV
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${{ matrix.MACOSX_DEPLOYMENT_TARGET }}" \
-DCMAKE_BUILD_TYPE=Release \
../
fi
cmake --build . --target package -j $N

- name: Save artifact
Expand Down
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,14 @@ Thumbs.db
/playwright-results/
/playwright/.cache/
/reports/

# Claude Code and Claude Flow
/.claude/
/.hive-mind/
/.swarm/
/memory/
claude-flow
claude-flow.bat
claude-flow.ps1
hive-mind-prompt-*.txt
CLAUDE.md
20 changes: 19 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,25 @@ set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Parametric Analysis Tool")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.openstudio.net")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}")
# Handle architecture-specific package naming
if(CMAKE_OSX_ARCHITECTURES)
# Check if CMAKE_OSX_ARCHITECTURES contains multiple architectures (semicolon-separated)
string(FIND "${CMAKE_OSX_ARCHITECTURES}" ";" MULTI_ARCH_POS)
if(MULTI_ARCH_POS GREATER -1)
# Multiple architectures detected - use "universal" suffix
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-universal")
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-arm64")
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-x86_64")
else()
# Single architecture but not arm64/x86_64 - use the architecture name
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_OSX_ARCHITECTURES}")
endif()
else()
# No architecture specified - use default naming
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}")
endif()
set(CPACK_PACKAGE_CONTACT "openstudio@nrel.gov")

include(CPack)
Expand Down
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,15 @@ We tested our Linux-specific instructions on Ubuntu 22.04, but they should also
```
* Run the appropriate command to generate the files.
* MacOS:
```
cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=11 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_BUILD_TYPE=Release ../
```
**Note:** For ARM64 (Apple Silicon) specific builds, use:
```
cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=12.1 -DCMAKE_OSX_ARCHITECTURES="arm64" -DCMAKE_BUILD_TYPE=Release ../
```

For Intel-specific builds, use:
```
cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE=Release ../
```
* Windows:
```
cmake -G "Visual Studio 17 2022" -A x64 ../
Expand Down Expand Up @@ -120,6 +126,7 @@ We tested our Linux-specific instructions on Ubuntu 22.04, but they should also
```

7. The installer package should now be ready to use.
* MacOS: `./build/ParametricAnalysisTool-x.x.x-Darwin.dmg`
* MacOS ARM64: `./build/ParametricAnalysisTool-x.x.x-Darwin-arm64.dmg`
* MacOS Intel: `./build/ParametricAnalysisTool-x.x.x-Darwin-x86_64.dmg`
* Windows: `./build/ParametricAnalysisTool-x.x.x-Windows.exe`
* Linux: `./build/ParametricAnalysisTool-x.x.x-Linux.deb`
6 changes: 5 additions & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

const { build, clean, copyManifest, installDeps } = require('./tasks/build');
const { build, clean, copyManifest, installDeps, downloadDeps, verifyDeps, extractDeps, cleanDeps } = require('./tasks/build');
const { release } = require('./tasks/release');
const { tmpTestFiles } = require('./tasks/tmpTestFiles');
const { watch } = require('./tasks/watch');
Expand All @@ -9,6 +9,10 @@ exports.build = build;
exports.clean = clean;
exports.copyManifest = copyManifest;
exports.installDeps = installDeps;
exports.downloadDeps = downloadDeps;
exports.verifyDeps = verifyDeps;
exports.extractDeps = extractDeps;
exports.cleanDeps = cleanDeps;
exports.release = release;
exports.tmpTestFiles = tmpTestFiles;
exports.watch = watch;
25 changes: 25 additions & 0 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
"platform": "darwin",
"arch": "x64",
"type": "energyplus"
}, {
"name": "EnergyPlus-25.1.0-68a4a7c774-Darwin-macOS13-arm64.tar.gz",
"platform": "darwin",
"arch": "arm64",
"type": "energyplus"
}, {
"name": "EnergyPlus-25.1.0-linux.tar.gz",
"platform": "linux",
Expand All @@ -26,6 +31,11 @@
"platform": "darwin",
"arch": "x64",
"type": "ruby"
}, {
"name": "ruby-3.2.2-darwin-arm64.tar.gz",
"platform": "darwin",
"arch": "arm64",
"type": "ruby"
}, {
"name": "ruby-3.2.2-linux.tar.gz",
"platform": "linux",
Expand All @@ -42,6 +52,11 @@
"platform": "darwin",
"arch": "x64",
"type": "mongo"
}, {
"name": "mongodb-macos-arm64-6.0.8.tgz",
"platform": "darwin",
"arch": "arm64",
"type": "mongo"
}, {
"name": "mongodb-6.0.8-linux.tar.gz",
"platform": "linux",
Expand All @@ -58,6 +73,11 @@
"platform": "darwin",
"arch": "x64",
"type": "openstudio"
}, {
"name": "OpenStudio-3.10.0+86d7e215a1-Darwin-arm64.tar.gz",
"platform": "darwin",
"arch": "arm64",
"type": "openstudio"
}, {
"name": "OpenStudio-3.10.0-Linux.tar.gz",
"platform": "linux",
Expand All @@ -74,6 +94,11 @@
"platform": "darwin",
"arch": "x64",
"type": "OpenStudio-server"
}, {
"name": "OpenStudio-server-5873e0d21d-darwin-arm64.tar.gz",
"platform": "darwin",
"arch": "arm64",
"type": "OpenStudio-server"
}, {
"name": "OpenStudio-server-5873e0d21d-linux.tar.gz",
"platform": "linux",
Expand Down
Loading