Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
783ce8d
try to build the static using github actions
vandenman Apr 17, 2026
8544c21
clone qt sources instead of using actinstall-qt
vandenman Apr 17, 2026
0c687e1
fix cache key
vandenman Apr 17, 2026
5be77b8
try to fix qt build errors
vandenman Apr 17, 2026
efd7b73
slight adjustments to changes in jasp-desktop
vandenman Apr 17, 2026
75e0119
move setup R to after Qt build, also clone submodules of jasp-desktop
vandenman Apr 17, 2026
e9b03a5
adjust cache steps for v5
vandenman Apr 17, 2026
98b5229
some tweaks to make the build leaner and to avoid running out of disk…
vandenman Apr 17, 2026
f72988f
reduce Qt static build further + try to fix step 'Build SyntaxInterfa…
vandenman Apr 17, 2026
98e0bfe
add missing boost header on windows
vandenman Apr 17, 2026
0eec6ea
stop qt from dynamically linking ICU, and tweaks to configure file to…
vandenman Apr 17, 2026
b30e934
install required mingw toolchain through rtools on windows
vandenman Apr 17, 2026
d77e588
try to find the DLLs on windows
vandenman Apr 17, 2026
eb8ba39
cache vcpkg stuff on windows
vandenman Apr 17, 2026
834daa1
Fix Windows source install on tryToBuild
FBartos Apr 19, 2026
92cb683
Address PR review feedback on tryToBuild
FBartos Apr 19, 2026
b801b78
Handle additional PR review issues
FBartos Apr 19, 2026
0d2b368
Use local Rtools runtime for Windows installs
FBartos Apr 21, 2026
40d7183
Add a .jasp dataset reader API
FBartos Apr 23, 2026
0739329
Harden bridge error handling in syntaxfunctions
FBartos Apr 23, 2026
fea5084
Add native JASP bridge helpers
FBartos May 14, 2026
79258ee
Preserve JASP replay provenance
FBartos May 14, 2026
06117aa
Harden native bridge replay contracts
FBartos May 14, 2026
b30247b
Prefer bridge DLLs in source subprocesses
FBartos May 14, 2026
27def88
Clean up native bridge warning lifecycle
FBartos May 14, 2026
0e3c238
Harden native bridge subprocess isolation
FBartos May 14, 2026
c8f8526
Tighten SyntaxInterface source packaging
FBartos May 15, 2026
8017339
Merge upstream workflow updates
FBartos May 15, 2026
a3f09b2
Record SyntaxInterface source provenance
FBartos May 15, 2026
d603d38
Fix macOS dylib export check: use nm -g instead of objdump -T
boutinb May 15, 2026
0085f61
Fix NULL from unlist(list()) crashing normalizePath in .onLoad
boutinb May 15, 2026
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
12 changes: 12 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
^renv$
^renv\.lock$
^\.Rprofile$
^.*\.Rproj$
^\.Rproj\.user$
^\.travis\.yml$
^\.github$
^\.editorconfig$
^demo\.R$
^inst/libs$
^src/Makevars$
^src/Makevars\.win$
^src/SyntaxInterface\.provenance$
^src/syntaxbridge_interface\.h$
^src/json$
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
configure text eol=lf
configure.win text eol=lf
*.sh text eol=lf
58 changes: 51 additions & 7 deletions .github/workflows/build-syntaxinterface.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,8 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/qt-static" \
-DCUSTOM_R_PATH="${R_HOME}" \
-DREQUIRE_GITHUB_PAT=OFF \
-DJASP_SYNTAX_INTERFACE_ONLY=ON \
-DINSTALL_R_MODULES=OFF \
-DBUILD_TESTS=OFF

Expand All @@ -235,6 +237,7 @@ jobs:
-DBUILD_TESTS=OFF

- name: Build SyntaxInterface
if: runner.os != 'Windows'
shell: bash
run: cmake --build build --target SyntaxInterface --parallel

Expand Down Expand Up @@ -270,6 +273,25 @@ jobs:
cp build/R-Interface/libR-InterfaceNoRInside.dll libR-InterfaceNoRInside-windows-x86_64.dll
fi

- name: Collect SyntaxInterface source bundle
if: runner.os == 'Linux' && matrix.arch == 'x86_64'
shell: bash
run: |
mkdir -p syntaxinterface-sources/SyntaxInterface syntaxinterface-sources/Common/json
{
echo "schema=1"
echo "jasp_desktop_ref=${{ env.JASP_DESKTOP_REF }}"
echo "jasp_desktop_sha=$(git -C jasp-desktop rev-parse HEAD)"
echo "jasp_syntax_sha=$(git rev-parse HEAD)"
echo "qt_version=${{ env.QT_VERSION }}"
echo "qt_submodules=${{ env.QT_SUBMODULES }}"
} > syntaxinterface-sources/BUILD_PROVENANCE
cp jasp-desktop/SyntaxInterface/syntaxbridge_interface.h syntaxinterface-sources/SyntaxInterface/
for file in allocator.h assertions.h config.h forwards.h json.h json_features.h json_reader.cpp json_tool.h json_value.cpp json_valueiterator.inl json_writer.cpp reader.h value.h version.h writer.h; do
cp "jasp-desktop/Common/json/${file}" "syntaxinterface-sources/Common/json/${file}"
done
tar -czf SyntaxInterface-sources.tar.gz -C syntaxinterface-sources .

- name: Upload artifact
uses: actions/upload-artifact@v7
with:
Expand All @@ -279,6 +301,14 @@ jobs:
libR-InterfaceNoRInside-windows-*.dll
if-no-files-found: error

- name: Upload SyntaxInterface source bundle
if: runner.os == 'Linux' && matrix.arch == 'x86_64'
uses: actions/upload-artifact@v7
with:
name: SyntaxInterface-sources
path: SyntaxInterface-sources.tar.gz
if-no-files-found: error

# ---------------------------------------------------------------------------
release:
needs: build
Expand All @@ -300,18 +330,32 @@ jobs:
- name: Show checksums
run: cat libs/SHA256SUMS

- name: Write release notes
shell: bash
run: |
tar -xOf libs/SyntaxInterface-sources.tar.gz ./BUILD_PROVENANCE > BUILD_PROVENANCE
JASP_DESKTOP_REF=$(grep -E '^jasp_desktop_ref=' BUILD_PROVENANCE | sed -E 's/^[^=]+=//')
JASP_DESKTOP_SHA=$(grep -E '^jasp_desktop_sha=' BUILD_PROVENANCE | sed -E 's/^[^=]+=//')
JASP_SYNTAX_SHA=$(grep -E '^jasp_syntax_sha=' BUILD_PROVENANCE | sed -E 's/^[^=]+=//')
QT_VERSION=$(grep -E '^qt_version=' BUILD_PROVENANCE | sed -E 's/^[^=]+=//')
QT_SUBMODULES=$(grep -E '^qt_submodules=' BUILD_PROVENANCE | sed -E 's/^[^=]+=//')
cat > release-body.md <<EOF
Pre-built \`libSyntaxInterface\` binaries for use by \`jaspSyntax\`.

Built from [jasp-desktop@${JASP_DESKTOP_REF}](https://github.com/jasp-stats/jasp-desktop/tree/${JASP_DESKTOP_REF}).
Resolved jasp-desktop SHA: \`${JASP_DESKTOP_SHA}\`
jaspSyntax workflow SHA: \`${JASP_SYNTAX_SHA}\`
Qt version: ${QT_VERSION} (static, submodules: ${QT_SUBMODULES}).

These are downloaded automatically by the \`configure\` script during \`install.packages("jaspSyntax")\`.
EOF

- name: Create or update release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: "SyntaxInterface pre-built libraries"
body: |
Pre-built `libSyntaxInterface` binaries for use by `jaspSyntax`.

Built from [jasp-desktop@${{ env.JASP_DESKTOP_REF }}](https://github.com/jasp-stats/jasp-desktop/tree/${{ env.JASP_DESKTOP_REF }}).
Qt version: ${{ env.QT_VERSION }} (static, submodules: ${{ env.QT_SUBMODULES }}).

These are downloaded automatically by the `configure` script during `install.packages("jaspSyntax")`.
body_path: release-body.md
files: libs/*
draft: false
prerelease: false
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/i18nCheck.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
on:
on:
# push:
# paths: ['**.R', '**.qml', '**.po', '**.yml']
#
#
# pull_request:
# paths: ['**.R', '**.qml', '**.po', '**.yml']
#
#
workflow_dispatch:

name: i18n-check
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,6 @@ Thumbs.db
src/Makevars
src/Makevars.win
src/syntaxbridge_interface.h
src/SyntaxInterface.provenance
src/json/*
inst/libs/
19 changes: 15 additions & 4 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
Package: jaspSyntax
Type: Package
Title: Makes JASP analyses available in R
Version: 1.2
Date: 2020-12-01
Version: 1.3.2
Date: 2026-05-11
Author: JASP Team
Website: jasp-stats.org
Maintainer: JASP Team <info@jasp-stats.org>
Description: Set up the right options for the analysis by loading its QML Form, and set up the R environment so that it can run the analysis as if it was run by JASP
Description: Exposes the native JASP SyntaxInterface bridge to R so package code can parse module descriptions, replay QML option binding, load datasets, and read saved .jasp files using the same runtime preparation path as JASP Desktop.
License: GPL (>= 2)
Imports: Rcpp (>= 1.0.5)
Encoding: UTF-8
URL: https://github.com/jasp-stats/jaspSyntax
BugReports: https://github.com/jasp-stats/jaspSyntax/issues
SystemRequirements: libcurl or wget (for downloading the SyntaxInterface library during installation)
Imports:
callr,
jsonlite,
Rcpp (>= 1.0.5)
Suggests:
pkgload,
testthat
LinkingTo: Rcpp
RoxygenNote: 7.3.3
31 changes: 30 additions & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
useDynLib(jaspSyntax, .registration=TRUE)
exportPattern("^[[:alpha:]]+")
importFrom(Rcpp, evalCpp)
export(analysisOptionsFromJaspFile)
export(analysisOptionsFromQml)
export(clearDatasetState)
export(clearNativeState)
export(clearQmlForms)
export(cleanUp)
export(columnMapping)
export(decodeAnalysisResults)
export(decodeColumnNames)
export(generateAnalysisWrapper)
export(generateModuleWrappers)
export(getVariableNames)
export(loadAnalysisDataset)
export(loadDataSet)
export(loadDataSetFromJaspFile)
export(loadQmlAndParseOptions)
export(nativeBridgeProvenance)
export(parseDescription)
export(parseModuleDescription)
export(parseQmlOptions)
export(readAnalysisOptionsFromJaspFile)
export(readAnalysisOptionsFromQml)
export(readDatasetHeader)
export(readDatasetFromJaspFile)
export(readDefaultAnalysisOptions)
export(readLoadedDataset)
export(readModuleDescription)
export(readRequestedDataset)
export(resolveAnalysisQml)
export(setParameter)
16 changes: 16 additions & 0 deletions R/RcppExports.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ cleanUp <- function() {
invisible(.Call(`_jaspSyntax_cleanUp`))
}

shutdownNative <- function() {
invisible(.Call(`_jaspSyntax_shutdownNative`))
}

clearQmlFormsNative <- function() {
invisible(.Call(`_jaspSyntax_clearQmlFormsNative`))
}

clearDatasetStateNative <- function() {
invisible(.Call(`_jaspSyntax_clearDatasetStateNative`))
}

clearNativeStateNative <- function() {
invisible(.Call(`_jaspSyntax_clearNativeStateNative`))
}

setParameter <- function(name, value) {
.Call(`_jaspSyntax_setParameter`, name, value)
}
Expand Down
Loading
Loading