diff --git a/recipes-support/portmidi/files/0001-do-not-build-java-application-to-set-midi-defaults.patch b/recipes-support/portmidi/files/0001-do-not-build-java-application-to-set-midi-defaults.patch new file mode 100644 index 0000000..0f07e04 --- /dev/null +++ b/recipes-support/portmidi/files/0001-do-not-build-java-application-to-set-midi-defaults.patch @@ -0,0 +1,97 @@ +From 908d5fcdfeac32d7ab5cff307d0a46a962ed600f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Tue, 6 Sep 2016 00:08:16 +0200 +Subject: [PATCH] do not build java application to set midi defaults +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +dragging in whole java environment for a small tool not everybody misses + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Andreas Müller +--- + CMakeLists.txt | 2 -- + pm_common/CMakeLists.txt | 18 +----------------- + pm_dylib/CMakeLists.txt | 14 -------------- + 3 files changed, 1 insertion(+), 33 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4919b78..2137ce4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -72,6 +72,4 @@ add_subdirectory(pm_test) + + add_subdirectory(pm_dylib) + +-# Cannot figure out how to make an xcode Java application with CMake +-add_subdirectory(pm_java) + +diff --git a/pm_common/CMakeLists.txt b/pm_common/CMakeLists.txt +index bfd4ab9..9ea9030 100644 +--- a/pm_common/CMakeLists.txt ++++ b/pm_common/CMakeLists.txt +@@ -67,15 +67,6 @@ if(UNIX) + message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT}) + else(APPLE) + # LINUX settings... +- include(FindJNI) +- message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH}) +- message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH}) +- message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2}) +- message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY}) +- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) +- # libjvm.so is found relative to JAVA_INCLUDE_PATH: +- set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so) +- + set(LINUXSRC pmlinuxalsa pmlinux finddefault) + prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC}) + list(APPEND LIBSRC ../porttime/ptlinux) +@@ -109,17 +100,10 @@ add_library(portmidi-static ${LIBSRC}) + set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s") + target_link_libraries(portmidi-static ${PM_NEEDED_LIBS}) + +-# define the jni library +-include_directories(${JAVA_INCLUDE_PATHS}) +- +-set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c) +-add_library(pmjni SHARED ${JNISRC}) +-target_link_libraries(pmjni ${JNI_EXTRA_LIBS}) +-set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib") + + # install the libraries (Linux and Mac OS X command line) + if(UNIX) +- INSTALL(TARGETS portmidi-static pmjni ++ INSTALL(TARGETS portmidi-static + LIBRARY DESTINATION ${LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${LIB_INSTALL_DIR}) + # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here +diff --git a/pm_dylib/CMakeLists.txt b/pm_dylib/CMakeLists.txt +index a0c615e..8ad415f 100644 +--- a/pm_dylib/CMakeLists.txt ++++ b/pm_dylib/CMakeLists.txt +@@ -63,20 +63,6 @@ if(UNIX) + message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT}) + else(APPLE) + # LINUX settings... +- include(FindJNI) +- # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH}) +- # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH}) +- # note: should use JAVA_JVM_LIB_PATH, but it is not set properly +- # note: user might need to set JAVA_INCLUDE_PATH manually +- # +- # this will probably break on BSD and other Unix systems; the fix +- # depends on whether FindJNI can find Java or not. If yes, then +- # we should try to rely on automatically set JAVA_INCLUDE_PATH and +- # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH +- # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation +- # because JAVA_INCLUDE_PATH2 is pretty obscure) +- set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}) +- + set(LINUXSRC pmlinuxalsa pmlinux finddefault) + prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC}) + list(APPEND LIBSRC ../porttime/ptlinux) +-- +2.5.5 + diff --git a/recipes-support/portmidi/files/0002-fix-compilation-du-to-unkown-functions.patch b/recipes-support/portmidi/files/0002-fix-compilation-du-to-unkown-functions.patch new file mode 100644 index 0000000..8dbf73b --- /dev/null +++ b/recipes-support/portmidi/files/0002-fix-compilation-du-to-unkown-functions.patch @@ -0,0 +1,48 @@ +From 7240f951277e47f2f37523b3ca5408bfe5fc3c53 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Tue, 6 Sep 2016 01:04:42 +0200 +Subject: [PATCH 2/2] fix compilation du to unkown functions +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Andreas Müller +--- + pm_linux/finddefault.c | 3 +++ + pm_linux/pmlinux.c | 2 ++ + 2 files changed, 5 insertions(+) + +diff --git a/pm_linux/finddefault.c b/pm_linux/finddefault.c +index 6340316..89ca43a 100644 +--- a/pm_linux/finddefault.c ++++ b/pm_linux/finddefault.c +@@ -5,10 +5,13 @@ + #include + #include + #include ++#include + #include "portmidi.h" + + #define STRING_MAX 256 + ++int pm_find_default_device(char *pattern, int is_input); ++ + /* skip over spaces, return first non-space */ + void skip_spaces(FILE *inf) + { +diff --git a/pm_linux/pmlinux.c b/pm_linux/pmlinux.c +index 49e266d..42c0906 100755 +--- a/pm_linux/pmlinux.c ++++ b/pm_linux/pmlinux.c +@@ -26,6 +26,8 @@ + PmDeviceID pm_default_input_device_id = -1; + PmDeviceID pm_default_output_device_id = -1; + ++PmDeviceID find_default_device(char *path, int input, PmDeviceID id); ++ + void pm_init() + { + /* Note: it is not an error for PMALSA to fail to initialize. +-- +2.5.5 + diff --git a/recipes-support/portmidi/files/0003-fix-format-security..patch b/recipes-support/portmidi/files/0003-fix-format-security..patch new file mode 100644 index 0000000..6dfa96b --- /dev/null +++ b/recipes-support/portmidi/files/0003-fix-format-security..patch @@ -0,0 +1,124 @@ +From e597c5c8636a269dbe5e664c706e66887479f161 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Tue, 26 Sep 2018 01:44:12 +0200 +Subject: [PATCH] Fix format-security + +Stolen from [1] + +[1] https://src.fedoraproject.org/cgit/rpms/portmidi.git/plain/portmidi-217-format-security.patch + +Upstream-Status: Pending + +Signed-off-by: Andreas Müller +--- + pm_test/latency.c | 2 +- + pm_test/midiclock.c | 4 ++-- + pm_test/mm.c | 8 ++++---- + pm_test/sysex.c | 2 +- + pm_test/test.c | 2 +- + 5 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/pm_test/latency.c b/pm_test/latency.c +index 507648c..5f4bb5c 100755 +--- a/pm_test/latency.c ++++ b/pm_test/latency.c +@@ -280,7 +280,7 @@ int get_number(char *prompt) + { + char line[STRING_MAX]; + int n = 0, i; +- printf(prompt); ++ printf("%s",prompt); + while (n != 1) { + n = scanf("%d", &i); + fgets(line, STRING_MAX, stdin); +diff --git a/pm_test/midiclock.c b/pm_test/midiclock.c +index 60fcf7a..17967a5 100644 +--- a/pm_test/midiclock.c ++++ b/pm_test/midiclock.c +@@ -167,7 +167,7 @@ int get_number(char *prompt) + { + char line[STRING_MAX]; + int n = 0, i; +- printf(prompt); ++ printf("%s",prompt); + while (n != 1) { + n = scanf("%d", &i); + fgets(line, STRING_MAX, stdin); +@@ -256,7 +256,7 @@ int main(int argc, char **argv) + err = Pm_OpenOutput(&midi, outp, DRIVER_INFO, OUTPUT_BUFFER_SIZE, + TIME_PROC, TIME_INFO, LATENCY); + if (err) { +- printf(Pm_GetErrorText(err)); ++ printf("%s",Pm_GetErrorText(err)); + goto error_exit_no_device; + } + active = true; +diff --git a/pm_test/mm.c b/pm_test/mm.c +index 209ff74..f3e6e7b 100755 +--- a/pm_test/mm.c ++++ b/pm_test/mm.c +@@ -119,7 +119,7 @@ int get_number(char *prompt) + { + char line[STRING_MAX]; + int n = 0, i; +- printf(prompt); ++ printf("%s",prompt); + while (n != 1) { + n = scanf("%d", &i); + fgets(line, STRING_MAX, stdin); +@@ -136,7 +136,7 @@ void receive_poll(PtTimestamp timestamp, void *userData) + if (!active) return; + while ((count = Pm_Read(midi_in, &event, 1))) { + if (count == 1) output(event.message); +- else printf(Pm_GetErrorText(count)); ++ else printf("%s",Pm_GetErrorText(count)); + } + } + +@@ -168,7 +168,7 @@ int main(int argc, char **argv) + inp = get_number("Type input device number: "); + err = Pm_OpenInput(&midi_in, inp, NULL, 512, NULL, NULL); + if (err) { +- printf(Pm_GetErrorText(err)); ++ printf("%s",Pm_GetErrorText(err)); + Pt_Stop(); + mmexit(1); + } +@@ -484,7 +484,7 @@ private int put_pitch(int p) + "gs", "a", "bf", "b" }; + /* note octave correction below */ + sprintf(result, "%s%d", ptos[p % 12], (p / 12) - 1); +- printf(result); ++ printf("%s",result); + return strlen(result); + } + +diff --git a/pm_test/sysex.c b/pm_test/sysex.c +index 627a3df..da2bb90 100755 +--- a/pm_test/sysex.c ++++ b/pm_test/sysex.c +@@ -39,7 +39,7 @@ int get_number(char *prompt) + { + char line[STRING_MAX]; + int n = 0, i; +- printf(prompt); ++ printf("%s",prompt); + while (n != 1) { + n = scanf("%d", &i); + fgets(line, STRING_MAX, stdin); +diff --git a/pm_test/test.c b/pm_test/test.c +index 03d6331..dcac1bc 100755 +--- a/pm_test/test.c ++++ b/pm_test/test.c +@@ -37,7 +37,7 @@ int get_number(char *prompt) + { + char line[STRING_MAX]; + int n = 0, i; +- printf(prompt); ++ printf("%s",prompt); + while (n != 1) { + n = scanf("%d", &i); + fgets(line, STRING_MAX, stdin); +-- +2.14.4 + diff --git a/recipes-support/portmidi/files/fedora-portmidi-cmake.patch b/recipes-support/portmidi/files/fedora-portmidi-cmake.patch new file mode 100644 index 0000000..f5addcb --- /dev/null +++ b/recipes-support/portmidi/files/fedora-portmidi-cmake.patch @@ -0,0 +1,107 @@ +diff -rupN portmidi.old/pm_common/CMakeLists.txt portmidi/pm_common/CMakeLists.txt +--- portmidi.old/pm_common/CMakeLists.txt 2010-09-20 15:57:48.000000000 -0400 ++++ portmidi/pm_common/CMakeLists.txt 2011-06-23 22:35:41.000000000 -0400 +@@ -120,8 +120,8 @@ set_target_properties(pmjni PROPERTIES E + # install the libraries (Linux and Mac OS X command line) + if(UNIX) + INSTALL(TARGETS portmidi-static pmjni +- LIBRARY DESTINATION /usr/local/lib +- ARCHIVE DESTINATION /usr/local/lib) ++ LIBRARY DESTINATION ${LIB_INSTALL_DIR} ++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}) + # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here + # INSTALL(FILES portmidi.h ../porttime/porttime.h + # DESTINATION /usr/local/include) +diff -rupN portmidi.old/pm_dylib/CMakeLists.txt portmidi/pm_dylib/CMakeLists.txt +--- portmidi.old/pm_dylib/CMakeLists.txt 2009-11-20 00:41:09.000000000 -0500 ++++ portmidi/pm_dylib/CMakeLists.txt 2011-06-23 22:35:41.000000000 -0400 +@@ -59,7 +59,7 @@ if(UNIX) + + set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework") + set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers) +- set(INSTALL_NAME_DIR "/usr/local/lib") ++ set(INSTALL_NAME_DIR ${LIB_INSTALL_DIR}) + message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT}) + else(APPLE) + # LINUX settings... +@@ -75,11 +75,7 @@ if(UNIX) + # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH + # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation + # because JAVA_INCLUDE_PATH2 is pretty obscure) +- set(JAVA_INCLUDE_PATH ${JAVA_INCLUDE_PATH-UNKNOWN} +- CACHE STRING "where to find Java SDK include directory") +- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux) +- # libjvm.so is found relative to JAVA_INCLUDE_PATH: +- set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so) ++ set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}) + + set(LINUXSRC pmlinuxalsa pmlinux finddefault) + prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC}) +@@ -114,14 +110,14 @@ prepend_path(SHARED_PATHS ../pm_common/ + list(APPEND LIBSRC ${SHARED_PATHS}) + + add_library(portmidi-dynamic SHARED ${LIBSRC}) +-set_target_properties(portmidi-dynamic PROPERTIES OUTPUT_NAME "portmidi") ++set_target_properties(portmidi-dynamic PROPERTIES LINK_FLAGS "-L${CMAKE_CACHEFILE_DIR}/Release" SOVERSION 0 VERSION 0.${VERSION} OUTPUT_NAME "portmidi") + target_link_libraries(portmidi-dynamic ${PM_NEEDED_LIBS}) + + # install the libraries (Linux and Mac OS X command line) + if(UNIX) + INSTALL(TARGETS portmidi-dynamic +- LIBRARY DESTINATION /usr/local/lib +- ARCHIVE DESTINATION /usr/local/lib) ++ LIBRARY DESTINATION ${LIB_INSTALL_DIR} ++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}) + INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h +- DESTINATION /usr/local/include) ++ DESTINATION ${INCLUDE_INSTALL_DIR}) + endif(UNIX) +diff -rupN portmidi.old/pm_java/CMakeLists.txt portmidi/pm_java/CMakeLists.txt +--- portmidi.old/pm_java/CMakeLists.txt 2009-11-04 10:20:44.000000000 -0500 ++++ portmidi/pm_java/CMakeLists.txt 2011-06-23 22:35:54.000000000 -0400 +@@ -16,12 +16,12 @@ if(UNIX) + COMMAND javac -classpath . pmdefaults/PmDefaultsFrame.java + MAIN_DEPENDENCY pmdefaults/PmDefaultsFrame.java + DEPENDS pmdefaults/PmDefaults.java +- WORKING_DIRECTORY pm_java) ++ ) + add_custom_command(OUTPUT pmdefaults/PmDefaults.class + COMMAND javac -classpath . pmdefaults/PmDefaults.java + MAIN_DEPENDENCY pmdefaults/PmDefaults.java + DEPENDS pmdefaults/PmDefaultsFrame.java +- WORKING_DIRECTORY pm_java) ++ ) + add_custom_command(OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar + COMMAND cp pmdefaults/portmusic_logo.png . + COMMAND jar cmf pmdefaults/manifest.txt pmdefaults.jar +@@ -32,7 +32,7 @@ if(UNIX) + COMMAND rm portmusic_logo.png + MAIN_DEPENDENCY pmdefaults/PmDefaults.class + DEPENDS ${PMDEFAULTS_ALL_CLASSES} +- WORKING_DIRECTORY pm_java) ++ ) + add_custom_target(pmdefaults_target ALL + DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar) + # message(STATUS "add_custom_target: pmdefaults.jar") +@@ -41,7 +41,7 @@ if(UNIX) + INSTALL(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar + DESTINATION /usr/share/java) + INSTALL(PROGRAMS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults +- DESTINATION /usr/local/bin) ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) + endif(APPLE) + endif(UNIX) + # In windows, use pm_java/make.bat +diff -rupN portmidi.old/pm_test/CMakeLists.txt portmidi/pm_test/CMakeLists.txt +--- portmidi.old/pm_test/CMakeLists.txt 2010-09-20 15:57:48.000000000 -0400 ++++ portmidi/pm_test/CMakeLists.txt 2011-06-23 22:35:41.000000000 -0400 +@@ -12,7 +12,7 @@ endif(WIN32) + + macro(make_a_test name) + add_executable(${name} ${name}.c) +- target_link_libraries(${name} portmidi-static ${PM_NEEDED_LIBS}) ++ target_link_libraries(${name} portmidi-dynamic) + add_dependencies(${name} portmidi-static) + endmacro(make_a_test) + + diff --git a/recipes-support/portmidi/portmidi_217.bb b/recipes-support/portmidi/portmidi_217.bb new file mode 100644 index 0000000..44f47a1 --- /dev/null +++ b/recipes-support/portmidi/portmidi_217.bb @@ -0,0 +1,36 @@ +SUMMARY = "Real-time Midi I/O Library" +HOMEPAGE = "http://portmedia.sourceforge.net" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://license.txt;md5=a0c1c261bc48165d48388e3a121a31e9" + +inherit cmake dos2unix + +DEPENDS += " \ + alsa-lib \ +" + +SRC_URI = " \ + ${SOURCEFORGE_MIRROR}/project/portmedia/${BPN}/${PV}/${BPN}-src-${PV}.zip \ + file://fedora-portmidi-cmake.patch \ + file://0001-do-not-build-java-application-to-set-midi-defaults.patch \ + file://0002-fix-compilation-du-to-unkown-functions.patch \ + file://0003-fix-format-security..patch \ +" +SRC_URI[md5sum] = "03f46fd3947e2ef4c8c465baaf832241" +SRC_URI[sha256sum] = "08e9a892bd80bdb1115213fb72dc29a7bf2ff108b378180586aa65f3cfd42e0f" + +S = "${WORKDIR}/${BPN}" + +EXTRA_OECMAKE += " \ + -DLIB_INSTALL_DIR=${libdir} \ + -DINCLUDE_INSTALL_DIR=${includedir} \ + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=Release \ + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=Release \ + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=Release \ +" + +do_install_append() { + ln -s libportmidi.so.0. "${D}/${libdir}/libporttime.so" + ln -s libportmidi.so.0. "${D}/${libdir}/libporttime.so.0" + ln -s libportmidi.so.0. "${D}/${libdir}/libporttime.so.0." +}