You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
set(PYTHON_EXECUTABLE "python3"CACHESTRING"Specify the Python executable location to be used. This must match the PYTHON_VERSION_TO_USE option. Default is just python3 expecting it on the path")
168
+
# Try to find Python executable with fallback from python3 to python
if(PYTHON3_DETECTED_MAJOR EQUAL 3 AND PYTHON3_DETECTED_VERSION VERSION_GREATER_EQUAL"3.12")
187
+
set(PYTHON_EXECUTABLE "${PYTHON3_EXECUTABLE}"CACHESTRING"Specify the Python executable location to be used. This must match the PYTHON_VERSION_TO_EMBED option.")
188
+
else()
189
+
message(WARNING"Found 'python3' but it is version ${PYTHON3_DETECTED_VERSION}, which is less than the required 3.12. Will try 'python' as fallback.")
190
+
endif()
191
+
else()
192
+
message(WARNING"Found 'python3' but could not determine its version. Will try 'python' as fallback.")
193
+
endif()
194
+
endif()
195
+
unset(PYTHON3_EXECUTABLE CACHE)
196
+
endif()
197
+
198
+
# If python3 didn't work, try python (but verify it's Python 3, not Python 2)
199
+
if(NOT PYTHON_EXECUTABLE)
200
+
find_program(PYTHON_EXECUTABLE_CANDIDATEpython)
201
+
if(PYTHON_EXECUTABLE_CANDIDATE)
202
+
execute_process(
203
+
COMMAND${PYTHON_EXECUTABLE_CANDIDATE}--version
204
+
RESULT_VARIABLEPYTHON_CHECK_RESULT
205
+
OUTPUT_VARIABLEPYTHON_VERSION_OUTPUT
206
+
ERROR_VARIABLEPYTHON_VERSION_ERROR
207
+
)
208
+
if(NOT PYTHON_CHECK_RESULT)
209
+
# Check if it's Python 3.12+ (not Python 2 or older Python 3)
if(PYTHON_DETECTED_MAJOR EQUAL 3 AND PYTHON_DETECTED_VERSION VERSION_GREATER_EQUAL"3.12")
216
+
set(PYTHON_EXECUTABLE "${PYTHON_EXECUTABLE_CANDIDATE}"CACHESTRING"Specify the Python executable location to be used. This must match the PYTHON_VERSION_TO_EMBED option. Fallback to python as python3 was not found.")
217
+
else()
218
+
# python points to Python 2 or Python 3 < 3.12, reject it
219
+
message(WARNING"Found 'python' but it is version ${PYTHON_DETECTED_VERSION}, which is less than the required 3.12. Please install Python 3.12 or later and ensure 'python3' is available.")
220
+
endif()
221
+
else()
222
+
# Could not parse version, reject it
223
+
message(WARNING"Found 'python' but could not determine its version. Please install Python 3.12 or later and ensure 'python3' is available.")
224
+
endif()
225
+
endif()
226
+
unset(PYTHON_EXECUTABLE_CANDIDATE CACHE)
227
+
endif()
228
+
endif()
229
+
230
+
# If still not found, provide helpful error
231
+
if(NOT PYTHON_EXECUTABLE)
232
+
message(FATAL_ERROR"Could not find a working Python executable (tried python3 and python). Please install Python 3.12 or later and ensure it is in your PATH.")
@@ -66,11 +68,14 @@ Questions and help with implementing new synths wanted! Or if you have found a b
66
68
| Roland | JX-8P | alpha | adaptation ||
67
69
| Roland | Juno-DS | works | adaptation | contributed by @mslinn! Thank you! |
68
70
| Roland | D-50 | works | adaptation | Shout out to @summersetter for testing! |
71
+
| Roland | JD-Xi | alpha | adaptation | 100% AI generated |
69
72
| Roland | JV-80/880/90/1000 | beta | adaptation ||
70
73
| Roland | JV-1080/2080 | beta | adaptation ||
71
74
| Roland | MKS-50 | alpha | native ||
72
75
| Roland | MKS-70 (Vecoven) | beta | adaptation | Thanks to @markusschloesser!|
73
76
| Roland | MKS-80 | works | native ||
77
+
| Roland | SE-02 | beta | adaptation | Thanks to @MammaScan! |
78
+
| Roland | U-20/U-220 | alpha | adaptation | 100% AI generated. Thanks to @Casuallynoted for testing! |
74
79
| Roland | V-Drums TD-07 | alpha | adaptation ||
75
80
| Roland | XV-3080/5080/5050 | works | adaptation ||
76
81
| Sequential| Pro 3 | works | adaptation ||
@@ -174,7 +179,7 @@ This will produce the executable in the path `builds\The-Orm\Release`, namely a
174
179
175
180
## Building on Linux
176
181
177
-
See the azure-pipelines.yml file for some hints how the Ubuntu server is doing it. Mainly, you need to install a long list of prerequisites and development libraries:
182
+
See the GitHub Actions workflow files for some hints how the Ubuntu server is doing it. Mainly, you need to install a long list of prerequisites and development libraries:
@@ -187,6 +192,25 @@ This will produce a single executable `builds/The-Orm/KnobKraftOrm` that you can
187
192
188
193
The LDFLAGS is required for a certain combination of gcc version/pybind11, else you will run into internal compiler errors. See issue #6 for a discussion.
189
194
195
+
## Building on Arch Linux with Docker
196
+
197
+
If you are running Arch Linux (or an Arch derivative) and the release binary fails due to library mismatches, you can build an Arch-linked binary in Docker using `docker/archlinux/Dockerfile`. This is based on the setup contributed in issue #319.
198
+
199
+
Clone the repository with submodules and build the Docker image from the repository root:
The Docker build compiles KnobKraft Orm and runs the PatchDatabase doctest binary. The resulting `KnobKraftOrm` executable is linked against Arch Linux libraries and is expected to run on Arch or Arch-derivative hosts only; for Debian, Ubuntu, Fedora, or other distributions, use the native Linux build instructions above or create a matching distro-specific Docker build instead. To copy the compiled application out of the image:
0 commit comments