rastersoft / autovala

A program that automatically generates CMake and Meson configuration files for your Vala project
GNU General Public License v3.0
104 stars 15 forks source link

Gedit plugin make fails #26

Closed Ferruck closed 10 years ago

Ferruck commented 10 years ago

The CMake of the gedit plugin passes without any problems, but the Make fails with

[ 75%] Building C object src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o
/home/philipp/Programme/autovala/gedit_plugin/install/src/valaplugin.c:16:31: fatal error: gedit/gedit-panel.h: Datei oder Verzeichnis nicht gefunden
 #include <gedit/gedit-panel.h>
                               ^
compilation terminated.
make[2]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o] Fehler 1
make[1]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/all] Fehler 2
make: *** [all] Fehler 2

Maybe there is some dependency missing in the CMake files? I'm running Ubuntu GNOME with programs from ppa:gnome3-team/gnome3, ppa:gnome3-team/gnome3-staging and ppa:ricotz/testing, so they should be fairly up to date.

rastersoft commented 10 years ago

Try this: delete everything inside the "install" folder and start again. Usually, when you run "cmake .." and fails due to a missing dependency, it results in the folder being left in a broken state, and installing the dependencies and running "cmake .." again over the previous broken files doesn't fix them. I don't know if it is a bug in CMake itself, or in the original scripts I used to compile Vala with CMake.

rastersoft commented 10 years ago

So? Did it work? Can I close this?

Ferruck commented 10 years ago

Sorry for answering late.

No, it didn't work and I already tried it before. Maybe the full output does help you, so here it is:

philipp@DDClientLaptop:~/Programme/autovala/gedit_plugin/install$ rm -R ./*
philipp@DDClientLaptop:~/Programme/autovala/gedit_plugin/install$ cmake ..
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 
-- checking for modules 'AutoVala;AutovalaPlugin;atk;cairo;gdk-3.0;gdk-pixbuf-2.0;gedit;gee-0.8;gio-2.0;glib-2.0;gobject-2.0;gobject-introspection-1.0;gtk+-3.0;gtksourceview-3.0;libpeas-1.0;pango;pangocairo;x11'
--   found AutoVala, version 0.97
--   found AutovalaPlugin, version 0.97
--   found atk, version 2.12.0
--   found cairo, version 1.13.1
--   found gdk-3.0, version 3.13.1
--   found gdk-pixbuf-2.0, version 2.30.7
--   found gedit, version 3.12.1
--   found gee-0.8, version 0.10.5
--   found gio-2.0, version 2.41.0
--   found glib-2.0, version 2.41.0
--   found gobject-2.0, version 2.41.0
--   found gobject-introspection-1.0, version 1.40.0
--   found gtk+-3.0, version 3.13.1
--   found gtksourceview-3.0, version 3.12.1
--   found libpeas-1.0, version 1.8.1
--   found pango, version 1.36.3
--   found pangocairo, version 1.36.3
--   found x11, version 1.6.2
-- Found Vala: /usr/bin/valac  
-- checking for Vala version of valac-0.22
-- checking for a minimum Vala version of 0.22
--   found Vala, version 0.24
-- Configuring done
-- Generating done
-- Build files have been written to: /home/philipp/Programme/autovala/gedit_plugin/install
philipp@DDClientLaptop:~/Programme/autovala/gedit_plugin/install$ make
[ 25%] Generating /home/philipp/Programme/autovala/gedit_plugin/install/src/Config.c;valaplugin.c;AutovalaGeditPlugin.vapi;AutovalaGeditPlugin.h
Scanning dependencies of target AutovalaGeditPlugin
[ 50%] Building C object src/CMakeFiles/AutovalaGeditPlugin.dir/Config.c.o
[ 75%] Building C object src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o
/home/philipp/Programme/autovala/gedit_plugin/install/src/valaplugin.c:16:31: fatal error: gedit/gedit-panel.h: Datei oder Verzeichnis nicht gefunden
 #include <gedit/gedit-panel.h>
                               ^
compilation terminated.
make[2]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o] Fehler 1
make[1]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/all] Fehler 2
make: *** [all] Fehler 2
philipp@DDClientLaptop:~/Programme/autovala/gedit_plugin/install$ 
rastersoft commented 10 years ago

The cmake output looks good... But you have gedit 3.12... I have gedit 3.10... Maybe there is a bug in your packages...

Try to use "make VERBOSE=1" and put here the output, to check how is calling gcc and everything else.

Also do a "dpkg -S gedit-panel.h" and see which package contains it (and if it is installed).

Also, check where is installed gedit-panel.h. In my system it is at /usr/include/gedit-3.0/gedit/gedit-panel.h

Finally, check the gedit.pc used with pkg-config (mine is at /usr/lib/x86_64-linux-gnu/pkgconfig/gedit.pc), to ensure that it points to the right path.

Ferruck commented 10 years ago

I think, I found the problem: gedit-panel.h has been removed in GNOME 3.12, in this commit. So in order to have forward compatibility, the gedit-panel shouldn't be used, IMHO. I can't say, how to replace it, as I can't test the functionality, maybe you could provide some screenshots and I try to make it work with Gedit 3.12?!

rastersoft commented 10 years ago

Ok, this sound like a job for #define-man! :)

Just give me a couple of hours.

Ferruck commented 10 years ago

=) I'm really excited!

rastersoft commented 10 years ago

Installing a fedora in a virtual machine...

rastersoft commented 10 years ago

Ok, uploaded the new version. Can you try it? Also try to disable and enable the plugin, to check if it works fine.

Ferruck commented 10 years ago

I'm afraid to tell you that it doesn't work... CMake still runs through without problems but the make throws a new error:

make
[ 25%] Generating /home/philipp/Programme/autovala/gedit_plugin/install/src/Config.c;valaplugin.c;AutovalaGeditPlugin.vapi;AutovalaGeditPlugin.h
Scanning dependencies of target AutovalaGeditPlugin
[ 50%] Building C object src/CMakeFiles/AutovalaGeditPlugin.dir/Config.c.o
[ 75%] Building C object src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o
/home/philipp/Programme/autovala/gedit_plugin/install/src/valaplugin.c: In function ‘autovala_gedit_plugin_vala_window_real_activate’:
/home/philipp/Programme/autovala/gedit_plugin/install/src/valaplugin.c:224:2: error: unknown type name ‘GeditPanel’
  GeditPanel* _tmp24_ = NULL;
  ^
/home/philipp/Programme/autovala/gedit_plugin/install/src/valaplugin.c:286:10: warning: assignment from incompatible pointer type [enabled by default]
  _tmp24_ = gedit_window_get_side_panel (_tmp23_);
          ^
make[2]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/valaplugin.c.o] Fehler 1
make[1]: *** [src/CMakeFiles/AutovalaGeditPlugin.dir/all] Fehler 2
make: *** [all] Fehler 2

I also tried to enter the CMake option you mention in the README (I just wondered what would happen) and this is what happened:

cmake .. -DOLD_GTK
Parse error in command line argument: -DOLD_GTK
Should be: VAR:type=value
CMake Error: No cmake script provided.
CMake Error: Problem processing arguments. Aborting.

Last you use the definition of OLD_GEDIT (#if OLD_GEDIT in valaplugin.vala) but advise to use OLD_GTK in the README.

So, I'm still excited! =)

rastersoft commented 10 years ago

Ok, I forgot to run "autovala update" in my local system (I did all the tests in a virtual machine with gnome shell 3.12).

Now it should work. Also fixed the README.md file. Thanks for pointing it O:)

rastersoft commented 10 years ago

Did it work?

Ferruck commented 10 years ago

No, the problem persists.

Maybe valac compiles different c sources on our PCs?! Which vala version do you use?

rastersoft commented 10 years ago

I updated my ubuntu to Gnome Shell 3.12, and it also fails... I'm investigating it, but I suspect a problem in the VAPI file...

Ferruck commented 10 years ago

I hope a solvable one! =)

rastersoft commented 10 years ago

Yes, as I suspected: they changed only the return type in gedit_window_get_side_panel, but not the function name, so the vala compiler still tries to use Gedit.Panel, which doesn't exists. I'll check what changes did in Fedora.

rastersoft commented 10 years ago

I think I have it... I will test it also in an Ubuntu 14.04 with Gnome Shell 3.10 and upload all.

rastersoft commented 10 years ago

The close was unintentional O:)

rastersoft commented 10 years ago

Ok, now it is tested in both Ubuntu with Gedit 3.10 and Gedit 3.12, and added several changes to Autovala to support more cases, so now it should work like a charm. Please, check it and confirm.

rastersoft commented 10 years ago

Have you tried this last version? Did it work?

Ferruck commented 10 years ago

Sorry, I'm not home at the moment, I will test it tomorrow!

rastersoft commented 10 years ago

Don't worry. Sometimes I push too much O:)

rastersoft commented 10 years ago

BTW: I created a branch in the repo called "devel". There will be the development work, and will reserve "master" for stable versions. Please, if you can, test this version.

Thanks.

Ferruck commented 10 years ago

So, I tested against the devel branch, the build is fine now, but installation isn't. Gedit searches for plugins in /usr/lib/i386-linux-gnu/gedit/plugins/ (or the amd64 path, don't know, how it's called at the moment), but the plugin is installed to /usr/local/share/gedit/plugins/autovala/, so it doesn't show up in Gedit's plugin overview.

rastersoft commented 10 years ago

That's the problem with the library paths in 64bit Debian/Ubuntu/Fedora... The best thing you can do is to install it in your personal folder:

rm -rf * cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/.local make make install

rastersoft commented 10 years ago

Anyway... In Debian/Ubuntu the right place is /usr/local/share/gedit/plugins/autovala... Have you enabled the plugin by going to Preferences->plugins?

Ferruck commented 10 years ago

It doesn't even show up in there, as Gedit is looking in /usr/lib/i386-linux-gnu/gedit/plugins/. I will try the home dir when I'm, well, at home. =)

Ferruck commented 10 years ago

OK, so I tried the global installation once again at my amd64 machine, same problem. But the local installation worked and that's fine. That was a long way to get the plugin working... =)

rastersoft commented 10 years ago

I will add the possibility to set the destination folder by setting a variable with CMake.