Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^12: Gtk3 Install Problems

by syphilis (Archbishop)
on Mar 03, 2014 at 23:08 UTC ( [id://1076813]=note: print w/replies, xml ) Need Help??


in reply to Re^11: Gtk3 Install Problems
in thread Gtk3 Install Problems

For the building of the test libraries to succeed (in the 'perl Makefile.PL' step) you need to set the GI_TYPELIB_PATH environment variable to point to the location of the typelib files:
set GI_TYPELIB_PATH=C:\usr\local\lib\girepository-1.0
I think that libffi-6.lib should define those undefined references. Though, for some reason, I also had to include libffi-6 from my Gtk-3 binaries - and my build links to C:/Gtk+3.6.1/lib/libffi.a ... not to C:/usr/local/libffi-6.lib

If you run 'dmake -v' we'll be able to see exactly which libraries it's trying to link to.

I've found a problem for us wrt Gtk3. That module has Cairo::GObject as a pre-requisite ... and I haven't been able to build that pre-requisite module in such a way that it's compatible with G::O::I.
The blocker is that the Cairo module (which is a prereq for Cairo::GObject) won't build against these binaries that we have in C:/usr/local. And if I use a Cairo::GObject that was built against different Gtk binaries, then the whole thing blows up.
Anyway, I guess we try and cross that bridge later ... or just jump off it.

These Glib based perl modules do all sorts of very cute stuff that make it difficult to hack. They're really designed to be built against a single complete set of Glib based binaries ... and we don't seem to have such a set for Windows. (We get some binaries from here, some others from there...)

Cheers,
Rob

Replies are listed 'Best First'.
Re^13: Gtk3 Install Problems
by drdon (Novice) on Mar 04, 2014 at 00:23 UTC

    Interesting, Rob. I ran into the same problem. I moved to a 32 bit XP box and went through the procedures and actually got G::O::I to build on that box. But like you when I tried Gtk3 I got the following:

    C:\usr\local\Cairo-GObject-1.001>perl Makefile.pl Can't load 'C:/strawberry/perl/site/lib/auto/Glib/Glib.dll' for module + Glib: loa d_file:The specified module could not be found at C:/strawberry/perl/l +ib/DynaLoa der.pm line 190. at (eval 10) line 1. Compilation failed in require at (eval 10) line 1. BEGIN failed--compilation aborted at (eval 10) line 1. Checking if your kit is complete... Looks good Warning: Guessing NAME [Cairo-GObject] from current directory name. Warning: NAME must be a package name Can't locate object method "postamble_clean" via package "Glib::MakeHe +lper" (per haps you forgot to load "Glib::MakeHelper"?) at Makefile.pl line 77.

    I wrote a perl script so I could keep track of the procedure. I built the script on my W7 box per your procedures, etc. It was that script that I ran on the XP box that allowed me to get G::O::I installed. But still no Gtk3.

    Thanks,

    Don

    Here is the perl script I am messing around with. I'm just using it to ensure when I finally get Gtk3 installed and working I can reproduce the complete install again.

    #!/usr/bin/perl # # download all-in-one bundle from # http://win32builder.gnome.org/gtk+-bundle_3.6.4-20130921_win32.zip # # use strict; use warnings; my ($cmd,$res); print "\n"; # set environment &SetEnvironment(); $cmd = "copy C\:\\Gtk3.6.4\\lib\\libffi.dll.a C:\\Gtk3.6.4\\lib\\libff +i.a"; print "$cmd\n\n"; $res =`$cmd`; print "$res\n"; $cmd = "copy C\:\\usr\\local\\lib\\girepository.lib C:\\usr\\local\\li +b\\libgirepository-1.0.a"; print "$cmd\n\n"; $res =`$cmd`; print "$res\n"; # install Cairo &PpmInstall("Cairo","ppm install http://www.sisyphusion.tk/ppm/Cairo.p +pd"); # install ExtUtils::PkgConfig &CpanInstall("ExtUtils::PkgConfig"); # install ExtUtils::Depends &CpanInstall("ExtUtils::Depends"); # install Glib &MakefileInstall("Glib","C\:\\usr\\local\\Glib-1.304"); # install Glib::Object::Introspection &MakefileInstall("Glib::Object::Introspection","C\:\\usr\\local\\Glib- +Object-Introspection-0.020"); sub CpanInstall { print "\nInstalling $_[0]\n\n"; my $cmd = "cpan $_[0]"; print "$cmd\n\n"; my $res = `$cmd`; print "$res\n"; } sub MakefileInstall { print "\nInstalling $_[0]\n\n"; my $targetDir = $_[1]; chdir($targetDir) or die "Cant chdir to $targetDir $!"; my $currentDir = `cd`; print "\nCurrent Directory = $currentDir\n"; my $cmd = "perl Makefile.PL"; print "$cmd\n\n"; my $res = `$cmd`; print "$res\n"; $cmd = "dmake"; print "$cmd\n\n"; $res = `$cmd`; print "$res\n\n"; $cmd = "dmake install"; print "$cmd\n\n"; $res = `$cmd`; print "$res\n"; } sub PpmInstall { print "\nInstalling $_[0]\n\n"; my $cmd = $_[1]; print "$cmd\n\n"; my $res = `$cmd`; print "$res\n"; } sub SetEnvironment { $ENV{'PATH'} = "C:\\usr\\local\\bin;C:\\Gtk3.6.4\\bin;" . $ENV{'PATH +'}; my $cmd = "set PATH=C:\\usr\\local\\bin;C:\\Gtk3.6.4\\bin;%PATH%"; print "$cmd\n"; my $res = `$cmd`; print "$res\n"; $ENV{'PKG_CONFIG_PATH'} = "C:\\usr\\local\\lib\\pkgconfig;C:\\Gtk3.6 +.4\\lib\\pkgconfig"; $cmd = "set PKG_CONFIG_PATH=C:\\usr\\local\\lib\\pkgconfig;C:\\Gtk3. +6.4\\lib\\pkgconfig"; print "$cmd\n"; $res = `$cmd`; print "$res\n"; $ENV{'CPATH'} = "C:\\usr\\local\\include\\gobject-introspection-1.34 +.2"; $ENV{'CPATH'} = "C:\\usr\\local\\include\\libffi-3.0.11;" . $ENV{'CP +ATH'}; $cmd = "set CPATH=C:\\usr\\local\\include\\gobject-introspection-1.3 +4.2"; print "$cmd\n"; $res = `$cmd`; print "$res\n"; $ENV{'GI_TYPELIB_PATH'} = "C:\\usr\\local\\lib\\girepository-1.0"; $cmd = "set GI_TYPELIB_PATH=C:\\usr\\local\\lib\\girepository-1.0"; print "$cmd\n"; $res = `$cmd`; print "$res\n"; printf("%-15.15s: $ENV{PATH}\n", "PATH"); printf("%-15.15s: $ENV{PKG_CONFIG_PATH}\n", "PKG_CONFIG_PATH"); printf("%-15.15s: $ENV{CPATH}\n", "CPATH"); printf("%-15.15s: $ENV{GI_TYPELIB_PATH}\n", "GI_TYPELIB_PATH"); }
      Instead of reporting it. Help yourself. give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime Use Dependency Walker. http://www.dependencywalker.com/.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1076813]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2024-04-19 05:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found