salsaman / LiVES

LiVES is a feature rich application which combines elements of VJ and video editing software. The current version runs on Linux / BSD. Check_out_the_new_discussion_area https://github.com/salsaman/LiVES/discussions
http://lives-video.com
GNU General Public License v3.0
90 stars 11 forks source link

widget-helper compile fail on EasyOS #39

Closed bkauler closed 2 years ago

bkauler commented 2 years ago

Could you please help me out, I get this error:

In file included from main.h:352, from widget-helper.c:9: widget-helper.h:588:36: error: unknown type name ‘LiVESHeaderBar’ 588 | boolean lives_header_bar_set_title(LiVESHeaderBar *, const char *title); | ^~~~~~~~~~~~~~ widget-helper.h:589:37: error: unknown type name ‘LiVESHeaderBar’ 589 | boolean lives_header_bar_pack_start(LiVESHeaderBar *, LiVESWidget *); | ^~~~~~~~~~~~~~ widget-helper.h:1194:46: error: unknown type name ‘LiVESFontChooser’; did you mean ‘LiVESFileChooser’? 1194 | boolean lives_standard_font_chooser_set_size(LiVESFontChooser *, int fsize); | ^~~~~~~~~~~~~~~~ | LiVESFileChooser

...etc., more errors.

The packages in EasyOS are plain-vanilla, nothing strange about them. glibc is 2.33, gcc 9.3.0. I tried to explicitly tell configure exactly my requirement:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-pc-linux-gnu --disable-gtk3 --disable-libvisual --disable-system-weed --disable-sdl2 --disable-projectM --disable-jack --disable-GIW --disable-frei0r --disable-liboil --enable-pulse --enable-dirac --enable-theora --enable-ogg --enable-libdv --enable-v4l2 --disable-unicap --disable-ladspa --disable-libexplain --disable-libbz --enable-libz --enable-libpng --enable-mjpegtools --enable-opengl --disable-toonz --disable-turbo --disable-freenect --disable-fftw3 --disable-opencv --enable-ffmpeg --enable-sdl1 --disable-wayland --enable-xrender --disable-prctl --disable-doxygen --enable-threads=posix

...can do --enable-jack, the above was just trying it without.

Anyway, still get the errors as shown above.

Note on the side: if you think that any of those explicit --disable options will significantly compromise the usefulness of LiVes, let me know.

bkauler commented 2 years ago

And, I am using the latest source, downloaded today.

bkauler commented 2 years ago

I have just now tried lives 3.0.2 from debian, with a couple of patches from debian. Errors from here:

libtool: link: gcc -Wstrict-aliasing=0 -Wall -DHAVE_LDVGRAB=1 -I libavc1394/avc1394.h -I libraw1394/raw1394.h -I libraw1394/rom1394.h -DIS_LINUX_GNU=1 -DENABLE_OSC=1 -DALSA_MIDI=1 -DHAVE_PULSE_AUDIO=1 -DHAVE_PA_STREAM_BEGIN_WRITE=1 -DLIVES_LIBDIR=\"/usr/lib\" -DHAVE_LINUX_JOYSTICK_H=1 -DHAVE_PRCTL=1 -I/usr/include/tirpc -Wall -pthread -o .libs/lives-exe widget-helper.o main.o support.o effects.o plugins.o effects-weed.o effects-data.o framedraw.o interface.o paramspecial.o paramwindow.o rfx-builder.o preferences.o rte_window.o gui.o ce_thumbs.o htmsocket.o merge.o dialogs.o saveplay.o audio.o events.o resample.o osc.o omc-learn.o callbacks.o colourspace.o keyboard.o utils.o multitrack.o stream.o cvirtual.o startup.o pangotext.o pulse.o ldvgrab.o ldvcallbacks.o ldvinterface.o -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lX11 ../libOSC/.libs/libOSC.a ../libOSC/client/.libs/libOSC_client.a -lm -lavc1394 -lraw1394 -lrom1394 -lasound -lpulse /mnt/sda1/downloads/downloads2/input593/0-lives/lives-3.0.2/libweed/.libs/libweed_slice.so /mnt/sda1/downloads/downloads2/input593/0-lives/lives-3.0.2/libweed/.libs/libweed-utils.so -ldl -pthread /usr/lib/gcc/x86_64-poky-linux/9.3.0/../../../../x86_64-poky-linux/bin/ld: widget-helper.o: in functionlives_combo_populate': widget-helper.c:(.text+0x7308): undefined reference to lives_combo_prepend_text' /usr/lib/gcc/x86_64-poky-linux/9.3.0/../../../../x86_64-poky-linux/bin/ld: widget-helper.o: in functionlives_standard_dialog_new': widget-helper.c:(.text+0xb249): undefined reference to lives_dialog_new' ...problem in widget-helper.c again! My configure: ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-pc-linux-gnu --disable-gtk3 --disable-libvisual --disable-sdl2 --disable-projectM --disable-jack --disable-GIW --disable-frei0r --disable-liboil --disable-unicap --disable-ladspa --disable-libbz --enable-libz --enable-libpng --enable-mjpegtools --enable-opengl --disable-toonz --disable-turbo --enable-ffmpeg --enable-sdl1 --disable-doxygen --enable-threads=posix

bkauler commented 2 years ago

Success! Still on 3.0.2, I replaced all "WIDGET_HELPER_GLOBAL_INLINE" in widget-helper.c with nothing, and all "WIDGET_HELPER_LOCAL_INLINE" with "static". Did the same for "LIVES_GLOBAL_INLINE" and "LIVES_LOCAL_INLINE" in effects-weed.c and colurspace.c

So, why is that inlining broken?

salsaman commented 2 years ago

I'll check.

salsaman commented 2 years ago

Possibly multiple errors here.

The header bar issue should be fixable by adding a couple of lines like:

#ifdef GTK_HEADER_BAR
#define LIVES_HAS_HEADER_BAR_WIDGET 1
  typedef GtkHeaderBar              LiVESHeaderBar;
+ #else
+ typedef GtkWidget             LiVESHeaderBar;
+ #define LIVES_HEADER_BAR   GTK_WIDGET
#endif

and in multitrack.c, the lone instance of gtk_header_bar_pack_start should be changed to lives_header_bar_pack_start.

salsaman commented 2 years ago

I have no idea why it is not finding LiVESFontChooser. What version of gtk are you compiling against ?

salsaman commented 2 years ago

Ah I see the problem there, --disable-gtk3 is NOT recommended, it is only there as a leftover from the transition from gtk2 to gtk3, defined in order to compare gtk3 with the prior gtk2 version. In fact gtk2 is no longer supported in LiVES, which explains the errors. I'll remove that option so it doesn't happen like this again.

salsaman commented 2 years ago

In fact you should not need to specify any --disable or --enable, everything should be detected by configure. Just run it with no options and it should all work. The only thing that might remotely be useful from the list is --disable-doxygen if you want to specifically avoid building documentation to save a few seconds when building.

salsaman commented 2 years ago

disable and enable options are only for very specific uses, eg. when testing or when configure fails to autodetect something.

salsaman commented 2 years ago

Also, some things like --disable-turbo are by definition completely unnecessary; since the option defined is --enable-turbo, the default is for it to be disabled, In fact autotools will not allow simultaneous definition of --enable-option and --disable-option - the developer has to choose one or other. This means that if the option is --enable-XXX then adding --disable-XXX to configure options is redundant, conversely if there is a --disable-XXX option then adding --enable-XXX is also redundant, as that is the default. (Just a general tip).

salsaman commented 2 years ago

Can I close this as fixed now ?

bkauler commented 2 years ago

Yes, thanks for your help.