midiomatic icon indicating copy to clipboard operation
midiomatic copied to clipboard

0.2.1 fails: error: unknown type name 'PortGroup' ; error: no member named 'group' in 'DISTRHO::Parameter'

Open yurivict opened this issue 3 years ago • 13 comments

./PluginMIDICCMapX4.hpp:142:40: error: unknown type name 'PortGroup'
    void initPortGroup(uint32_t index, PortGroup& pgroup) override;
                                       ^
PluginMIDICCMapX4.cpp:129:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:135:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:143:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:152:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:159:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:167:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:176:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:182:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:189:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:195:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:202:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:211:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:218:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:226:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:236:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:242:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:249:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:255:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]

For some reason PortGroup only appears in *.patch files.

clang-12 OS: FreeBSD 13

yurivict avatar Mar 20 '22 18:03 yurivict

How did you build? Did you build from the midiomatic-0.2.1.tar.gz source tarball or from a git checkout? (Do not use the source tarballs auto created by Github, i.e. the ones called v0.2.1.zip and v0.2.1.tar.gz.)

Can you post the full output of LC_ALL=C make here? I'm interested mainly in the first couple of line, where the patches are applied.

SpotlightKid avatar Mar 20 '22 21:03 SpotlightKid

I build with GNU make. 'all' target is used.

Patches aren't applied before build.

Shouldn't the 'patch' target be the first dependency of the 'all' target?

yurivict avatar Mar 20 '22 21:03 yurivict

Shouldn't the 'patch' target be the first dependency of the 'all' target?

It is (via the libs target). Please show your output.

SpotlightKid avatar Mar 20 '22 21:03 SpotlightKid

In Makefile 'all' is:

all: libs plugins gen

Then 'libs' is:

libs: submodules patch

'patch' isn't in the beginning.

--- output ---

===>  Building for midiomatic-lv2-0.2.1
gmake[2]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1'
test -d .git && git submodule update --init --recursive
gmake all -C plugins/MIDICCMapX4
gmake all -C plugins/MIDICCRecorder
gmake all -C plugins/MIDICCToPressure
gmake all -C plugins/MIDIPBToCC
gmake all -C plugins/MIDIPressureToCC
gmake[2]: [Makefile:31: submodules] Error 1 (ignored)
gmake all -C plugins/MIDISysFilter
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDICCMapX4'
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDICCRecorder'
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDICCToPressure'
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDIPBToCC'
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDIPressureToCC'
gmake[3]: Entering directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDISysFilter'
Compiling PluginMIDISysFilter.cpp
Compiling PluginMIDIPBToCC.cpp
Compiling PluginMIDICCToPressure.cpp
Compiling PluginMIDICCMapX4.cpp
Compiling PluginMIDIPressureToCC.cpp
Compiling PluginMIDICCRecorder.cpp
In file included from PluginMIDICCMapX4.cpp:27:
./PluginMIDICCMapX4.hpp:142:40: error: unknown type name 'PortGroup'
    void initPortGroup(uint32_t index, PortGroup& pgroup) override;
                                       ^
PluginMIDICCMapX4.cpp:129:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:135:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:143:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupSource;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:152:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:159:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:167:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:176:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:182:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:189:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:195:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:202:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC1;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:211:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:218:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:226:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:236:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:242:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:249:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
PluginMIDICCMapX4.cpp:255:23: error: no member named 'group' in 'DISTRHO::Parameter'
            parameter.group = kPortGroupCC2;
            ~~~~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
gmake[3]: *** [../../dpf/Makefile.plugins.mk:147: ../../build/midiccmapx4/PluginMIDICCMapX4.cpp.o] Error 1
gmake[3]: Leaving directory '/disk-samsung/freebsd-ports/audio/midiomatic-lv2/work/midiomatic-0.2.1/plugins/MIDICCMapX4'
gmake[2]: *** [Makefile:44: MIDICCMapX4] Error 2
gmake[2]: *** Waiting for unfinished jobs....
Compiling DistrhoPluginMain.cpp (LV2)
Compiling DistrhoPluginMain.cpp (LV2)
Compiling DistrhoPluginMain.cpp (LV2)
Compiling DistrhoPluginMain.cpp (VST)
Compiling DistrhoPluginMain.cpp (LV2)
PluginMIDICCRecorder.cpp:319:17: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]
            if (!std::strcmp(value, "false") == 0) {
                ^                            ~~
PluginMIDICCRecorder.cpp:319:17: note: add parentheses after the '!' to evaluate the comparison first
            if (!std::strcmp(value, "false") == 0) {
                ^
                 (                               )
PluginMIDICCRecorder.cpp:319:17: note: add parentheses around left hand side expression to silence this warning
            if (!std::strcmp(value, "false") == 0) {
                ^
                (                           )
^Cgmake[3]: *** [../../dpf/Makefile.plugins.mk:158: ../../build/midisysfilter/DistrhoPluginMain_LV2.cpp.o] Interrupt
gmake[3]: *** [../../dpf/Makefile.plugins.mk:158: ../../build/midipbtocc/DistrhoPluginMain_LV2.cpp.o] Interrupt
gmake[3]: *** [../../dpf/Makefile.plugins.mk:158: ../../build/midipressuretocc/DistrhoPluginMain_LV2.cpp.o] Interrupt
gmake[2]: *** [Makefile:44: MIDISysFilter] Interrupt
gmake[3]: *** [../../dpf/Makefile.plugins.mk:158: ../../build/midicctopressure/DistrhoPluginMain_VST.cpp.o] Interrupt
gmake[2]: *** [Makefile:44: MIDIPBToCC] Interrupt
gmake[2]: *** [Makefile:44: MIDIPressureToCC] Interrupt
gmake[3]: *** [../../dpf/Makefile.plugins.mk:158: ../../build/midicctopressure/DistrhoPluginMain_LV2.cpp.o] Interrupt
gmake[2]: *** [Makefile:44: MIDICCToPressure] Interrupt
gmake[3]: *** [../../dpf/Makefile.plugins.mk:147: ../../build/midiccrecorder/PluginMIDICCRecorder.cpp.o] Interrupt
gmake[2]: *** [Makefile:44: MIDICCRecorder] Interrupt
*** Signal 2
*** Signal 2

yurivict avatar Mar 20 '22 21:03 yurivict

patch depends on submodules. If there is no dpf sub-module (or you build from a source tarball, where the dpf submodule is included), there's nothing to patch ;) So patch should still run before the plugins target. I'm not sure why it doesn't in your case. Maybe you do not have the program patch installed?

You can remove the @- in front of line 36 of the Makefile to get error output for thepatchtarget.

SpotlightKid avatar Mar 20 '22 22:03 SpotlightKid

Submodules are extracted before make and there are no .git directories there.

Perhaps that's what causes the problem.

You should check if directories are empty or not instead of checking .git presence.

Cloning submodules from makefile is also a bad idea IMO.

yurivict avatar Mar 20 '22 22:03 yurivict

Submodules are extracted before make and there are no .git directories there. Perhaps that's what causes the problem.

It shouldn't, because line 31 of the Makefile is prefixed with a dash (-), so errors are ignored.

Anyways, it works here and in the AUR package, so something must be different on your system. Have checked for the existence of the patch program and did you try removing the @- prefix of the patch target commands as I recommended in my previous comment? What is the output of of make then?

SpotlightKid avatar Mar 20 '22 23:03 SpotlightKid

Same w/out the @- prefix. patch is silently ignored.

yurivict avatar Mar 20 '22 23:03 yurivict

Are you maybe running make with parallel builds, e.g. the -j option`? The output you pasted above would seem to indicate that. Please try without it.

SpotlightKid avatar Mar 20 '22 23:03 SpotlightKid

Yes, with -j 1 patch works.

So Makefile is broken with parallel build.

Please note that 0.2.0 worked fine with parallel build.

yurivict avatar Mar 20 '22 23:03 yurivict

Yes, parallel builds do not work atm. To be fair, the readme explicitly says, to build you should run make. If that does imply option -j on your system, that's non-standard.

Re it not being broken in 0.2.0, the makefile was broken for fresh non-recursive repo checkouts then. I think, for a fixed version. I'll just pre-apply the patches in the source distribution.

SpotlightKid avatar Mar 20 '22 23:03 SpotlightKid

I'm getting this with the aur package.

mxmilkiib avatar Apr 14 '22 00:04 mxmilkiib

@mxmilkiib You probably have set MAKEFLAGS=-jn (where n>1) in your environment or /etc/makepkg.conf.

I'll put make -j1 in the PKGBUILD file as a workaround. The next release will have a fixed Makefile.

SpotlightKid avatar Apr 14 '22 12:04 SpotlightKid