[MacPorts] #67850: lmms: updating and fixing: some help with bundling and clang testing wanted

MacPorts noreply at macports.org
Sat Jul 29 10:33:29 UTC 2023


#67850: lmms: updating and fixing: some help with bundling and clang testing wanted
---------------------------+------------------------
  Reporter:  barracuda156  |      Owner:  ryandesign
      Type:  defect        |     Status:  assigned
  Priority:  Normal        |  Milestone:
 Component:  ports         |    Version:  2.8.1
Resolution:                |   Keywords:
      Port:  lmms          |
---------------------------+------------------------
Description changed by barracuda156:

Old description:

> Ryan, would you help a bit with `lmms`? I have updated it to 1.2.2 (the
> last version to support Qt4, and pretty recent anyway) and fixed PowerPC
> build. I may need help to sort out making an app bundle.
> And test Clang build, if possible.
>
> There is one caveat for PPC (or GCC in general, no one ever tested it in
> upstream), Apple Midi does not build:
> https://github.com/LMMS/lmms/issues/6785
> {{{
> :info:build [ 56%] Building CXX object
> src/CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o
> :info:build cd
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src
> && /opt/local/bin/g++-mp-12 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG
> -DQT_XML_LIB
> -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/lmmsobjs_autogen/include
> -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src
> -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2
> -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/include
> -I/opt/local/include/opus -I/opt/local/include/SDL -I/opt/local/include
> -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/3rdparty/rpmalloc/rpmalloc/rpmalloc
> -isystem /opt/local/libexec/qt4/include -isystem
> /opt/local/libexec/qt4/include/QtGui -isystem
> /opt/local/libexec/qt4/include/QtXml -isystem
> /opt/local/libexec/qt4/include/QtCore -fno-exceptions -Wall -Werror
> =unused-function -Wno-sign-compare -Wno-strict-overflow -Wno-array-bounds
> -Wno-attributes -pipe -Os -fPIC -DPIC -std=c++0x -DNDEBUG -arch ppc
> -mmacosx-version-min=10.6
> -D'QT_TRANSLATIONS_DIR="/opt/local/libexec/qt4/share/translations"'
> -D'LIB_DIR="../lib/"' -D'PLUGIN_DIR="../lib/lmms/"' -MD -MT
> src/CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o -MF
> CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o.d -o
> CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o -c
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiPort.cpp
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
> In member function 'virtual QString MidiApple::sourcePortName(const
> MidiEvent&) const':
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:157:41:
> warning: format '%s' expects argument of type 'char*', but argument 2 has
> type 'const void*' [-Wformat=]
> :info:build   157 |         qDebug("sourcePortName return '%s'?\n",
> event.sourcePort());
> :info:build       |                                        ~^
> ~~~~~~~~~~~~~~~~~~
> :info:build       |                                         |
> |
> :info:build       |                                         char*
> const void*
> :info:build       |                                        %p
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
> In member function 'void MidiApple::openDevices()':
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:442:45:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   442 |                 char * deviceName = getName(device);
> :info:build       |                                             ^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:458:56:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   458 |                         qDebug("  Entity: %s",
> getName(entity));
> :info:build       |
> ^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:466:55:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   466 |                                 char * name =
> getName(source);
> :info:build       |
> ^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:480:55:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   480 |                                 char * name =
> getName(dest);
> :info:build       |
> ^~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
> In static member function 'static void MidiApple::NotifyCallback(const
> MIDINotification*, void*)':
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:549:45:
> warning: format '%d' expects argument of type 'int', but argument 2 has
> type 'long int' [-Wformat=]
> :info:build   549 |         qDebug("MidiApple::NotifyCallback
> '%d'",message->messageID);
> :info:build       |                                            ~^
> ~~~~~~~~~~~~~~~~~~
> :info:build       |                                             |
> |
> :info:build       |                                             int
> long int
> :info:build       |                                            %ld
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
> In member function 'char* MidiApple::getFullName(OpaqueMIDIEndpoint*&)':
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:615:37:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   615 |         char * deviceName = getName(device);
> :info:build       |                                     ^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:616:39:
> error: cannot bind non-const lvalue reference of type 'void*&' to an
> rvalue of type 'void*'
> :info:build   616 |         char * endPointName = getName(endpoint_ref);
> :info:build       |                                       ^~~~~~~~~~~~
> :info:build
> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
> note:   initializing argument 1 of 'char* getName(void*&)'
> :info:build   401 | char *getName( MIDIObjectRef &object )
> :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
> :info:build make[2]: ***
> [src/CMakeFiles/lmmsobjs.dir/core/midi/MidiApple.cpp.o] Error 1
> :info:build make[2]: *** Waiting for unfinished jobs....
> }}}
> For now, I just disabled it. There is no explicit option for that, but I
> simply replaced a few defines (only specific to Apple Midi), adding `&&
> defined(__clang__)`.
>
> We need to pick two commits also:
> 1. My fix for GCC:
> https://github.com/LMMS/lmms/commit/a9d49d4ff70642c958380a0b2e4fc6180c1a1877
> 2. Upstream fix for PPC detection:
> https://github.com/LMMS/lmms/commit/ae4d1b52e2b4f871a006a777d8dc4a2bae688329
>
> ''And it works!'' (I run the binary from destroot here, since bundling
> script is broken.)
> [[Image(https://user-images.githubusercontent.com/92015510/256976807
> -002be92f-333b-45fa-9c97-79ce1bcf242e.png)]]

New description:

 Ryan, would you help a bit with `lmms`? I have updated it to 1.2.2 (the
 last version to support Qt4, and pretty recent anyway) and fixed PowerPC
 build. I may need help to sort out making an app bundle.
 And test Clang build, if possible.

 There is one caveat for PPC (or GCC in general, no one ever tested it in
 upstream), Apple Midi does not build:
 https://github.com/LMMS/lmms/issues/6785
 {{{
 :info:build [ 56%] Building CXX object
 src/CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o
 :info:build cd
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src
 && /opt/local/bin/g++-mp-12 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG
 -DQT_XML_LIB
 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/lmmsobjs_autogen/include
 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src
 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2
 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/include
 -I/opt/local/include/opus -I/opt/local/include/SDL -I/opt/local/include
 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/3rdparty/rpmalloc/rpmalloc/rpmalloc
 -isystem /opt/local/libexec/qt4/include -isystem
 /opt/local/libexec/qt4/include/QtGui -isystem
 /opt/local/libexec/qt4/include/QtXml -isystem
 /opt/local/libexec/qt4/include/QtCore -fno-exceptions -Wall -Werror
 =unused-function -Wno-sign-compare -Wno-strict-overflow -Wno-array-bounds
 -Wno-attributes -pipe -Os -fPIC -DPIC -std=c++0x -DNDEBUG -arch ppc
 -mmacosx-version-min=10.6
 -D'QT_TRANSLATIONS_DIR="/opt/local/libexec/qt4/share/translations"'
 -D'LIB_DIR="../lib/"' -D'PLUGIN_DIR="../lib/lmms/"' -MD -MT
 src/CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o -MF
 CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o.d -o
 CMakeFiles/lmmsobjs.dir/core/midi/MidiPort.cpp.o -c
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiPort.cpp
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
 In member function 'virtual QString MidiApple::sourcePortName(const
 MidiEvent&) const':
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:157:41:
 warning: format '%s' expects argument of type 'char*', but argument 2 has
 type 'const void*' [-Wformat=]
 :info:build   157 |         qDebug("sourcePortName return '%s'?\n",
 event.sourcePort());
 :info:build       |                                        ~^
 ~~~~~~~~~~~~~~~~~~
 :info:build       |                                         |
 |
 :info:build       |                                         char*
 const void*
 :info:build       |                                        %p
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
 In member function 'void MidiApple::openDevices()':
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:442:45:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   442 |                 char * deviceName = getName(device);
 :info:build       |                                             ^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:458:56:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   458 |                         qDebug("  Entity: %s",
 getName(entity));
 :info:build       |
 ^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:466:55:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   466 |                                 char * name =
 getName(source);
 :info:build       |
 ^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:480:55:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   480 |                                 char * name =
 getName(dest);
 :info:build       |
 ^~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
 In static member function 'static void MidiApple::NotifyCallback(const
 MIDINotification*, void*)':
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:549:45:
 warning: format '%d' expects argument of type 'int', but argument 2 has
 type 'long int' [-Wformat=]
 :info:build   549 |         qDebug("MidiApple::NotifyCallback
 '%d'",message->messageID);
 :info:build       |                                            ~^
 ~~~~~~~~~~~~~~~~~~
 :info:build       |                                             |
 |
 :info:build       |                                             int
 long int
 :info:build       |                                            %ld
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:
 In member function 'char* MidiApple::getFullName(OpaqueMIDIEndpoint*&)':
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:615:37:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   615 |         char * deviceName = getName(device);
 :info:build       |                                     ^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:616:39:
 error: cannot bind non-const lvalue reference of type 'void*&' to an
 rvalue of type 'void*'
 :info:build   616 |         char * endPointName = getName(endpoint_ref);
 :info:build       |                                       ^~~~~~~~~~~~
 :info:build
 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_lmms/lmms/work/lmms-1.2.2/src/core/midi/MidiApple.cpp:401:31:
 note:   initializing argument 1 of 'char* getName(void*&)'
 :info:build   401 | char *getName( MIDIObjectRef &object )
 :info:build       |                ~~~~~~~~~~~~~~~^~~~~~
 :info:build make[2]: ***
 [src/CMakeFiles/lmmsobjs.dir/core/midi/MidiApple.cpp.o] Error 1
 :info:build make[2]: *** Waiting for unfinished jobs....
 }}}
 For now, I just disabled it. There is no explicit option for that, but I
 simply replaced a few defines (only specific to Apple Midi), adding `&&
 defined(__clang__)`.

 We need to pick two commits also:
 1. My fix for GCC:
 https://github.com/LMMS/lmms/commit/a9d49d4ff70642c958380a0b2e4fc6180c1a1877
 2. Upstream fix for PPC detection:
 https://github.com/LMMS/lmms/commit/ae4d1b52e2b4f871a006a777d8dc4a2bae688329

 And it works! (I run the binary from destroot here, since bundling script
 is broken.)
 [[Image(https://user-images.githubusercontent.com/92015510/256976807
 -002be92f-333b-45fa-9c97-79ce1bcf242e.png)]]

--

-- 
Ticket URL: <https://trac.macports.org/ticket/67850#comment:3>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list