Re: Fwd: Question on gtk library dependencies




--- John Koshi <jkoshi yahoo com> wrote:

> 
> Hi,
> 
> Does anyone have a quick answer for this question?
> 
> Thanks
> 
> 
> --- John Koshi <jkoshi yahoo com> wrote:
> 
> > Date: Wed, 23 Aug 2006 16:44:02 -0700 (PDT)
> > From: John Koshi <jkoshi yahoo com>
> > Subject: Question on gtk library dependencies
> > To: gtk-list gnome org
> > 
> > 
> > Hello,
> > 
> > Sorry about the long-winded explanation below, but it
> > gives a clear picture about a concern I have.
> > 
> > I was building a simple gtk application for ipaq h6300
> > under Familiar 0.8.4 , and had to do the following:
> > 
> > 1) Install gtk+-dev_2.6.7-r1_arm.ipk
> > 2) Install libglib-2.0-dev_2.6.4-r0_arm.ipk
> > 3) Install pango-dev_1.8.1-r2_arm.ipk
> > 4) Install libatk-1.0-dev_1.9.0-r0_arm.ipk
> > 
> > I had to fix some of the sym links, provide the linker
> > with the library path, and then the build worked and
> > tested OK.
> > 
> > I later tried to install the "Roadmap" application, from
> > http://sourceforge.net/projects/roadmap/ (the package is
> > roadmap_1.0.12_arm.ipk). For it's dependencies, I had to
> > install gpsd_2.20-r2_arm.ipk, and libgps10_2.20-r2_arm.ipk.
> > 
> > The remaining dependency for Roadmap to install correctly
> > is libgtk2.0-0.
> > 
> > Looking at the libraries, I see libgtk-x11-2.0.so.0.600.10
> > is already present. Will there be a conflict if I now get
> > the package libgtk2.0-0 from Familiar?
> > 
> > My concern is that libgtk2.0-0 and it's several dependencies
> > (ie:libgcc1, libglib2.0-0, liblango1.0-0, libatk0, etc), all
> > appear to be earlier versions than what I now have installed
> > on my ipaq, and I may end with a mess if I do install it.
> > 
> > Thanks in advance for your help.
> > 
> > regards,
> > John
> > 
> > 
> 
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list
> 


Have a look into my tool (see signature), though it is not intended
for ipaq.

The piece of info you need is represented by this part of the data structure
describing targets to be built:

    targets =>
      {
      libjpeg =>
        do{
          my $target_basename = 'jpegsrc.v6b';

          $libjpeg_hash_ref =
            {
            base_urls => ['ftp://ftp.uu.net/graphics/jpeg'],

            target_basename => $target_basename,

            configure_args => '--enable-shared',

            pre_configure_sub =>
              sub
                {
                my %this_sub_args = @_;

                my $info_marker = $this_sub_args{info_marker};
                my $error_marker = $this_sub_args{error_marker};
                my $cmdline_args_hash_ref = $this_sub_args{cmdline_args_hash_ref};
                my $system_wrapper_sub = $this_sub_args{system_wrapper_sub};

                my $wrong_dir = "${$cmdline_args_hash_ref}{build_prefix}/jpeg-6b";

                unless(rename($wrong_dir => $this_sub_args{target_build_dir}))
                  {
                  warn "$error_marker could not rename $wrong_dir =>
$this_sub_args{target_build_dir}\n";
                  return 1;
                  }

                0; # the returned value
                }, # sub
                   # pre_configure_sub

            pre_make_sub =>
              sub
                {
                my %this_sub_args = @_;

                my $info_marker = $this_sub_args{info_marker};
                my $error_marker = $this_sub_args{error_marker};
                my $system_wrapper_sub = $this_sub_args{system_wrapper_sub};
                my $target_build_dir = $this_sub_args{target_build_dir};

                my $makefile = "$target_build_dir/Makefile";
                my $original_makefile = "$makefile.original";

                if(
                  &{$system_wrapper_sub}
                    (
                    $info_marker,
                    "\\cp -p $makefile $original_makefile"
                    ) != 0
                  )
                  {
                  warn "$error_marker could not back up Makefile\n";
                  return 1;
                  }

                open(my $rfh, $makefile) or
                do{
                  warn "$error_marker cannot open '$makefile' file for reading\n";
                  return 1;
                  };

                my @buffer = <$rfh>;

                close($rfh);

                #########################
                foreach my $line(@buffer)
                #########################
                  {
                  $line =~ s|(/install\s+)|$1 -D |;
                  } # foreach my $line(@buffer)

                open(my $wfh, '>', $makefile) or
                do{
                  warn "$error_marker could not open '$makefile' foe writing\n";
                  return 1;
                  };

                print $wfh @buffer;

                close($wfh);

                0; # the returned value
                } # sub
                  # pre_make_sub 
            }
          }, # do
             # libjpeg

      zlib =>
        do{
          $zlib_hash_ref =
            {
            base_urls => \ _sf_zlib_mirrors,

            major_ver => '1',
            minor_ver => '2',
            micro_ver => '3',

            configure_args => '--shared'
            }
          }, # do
             # zlib


      freetype =>
        do{
          $freetype_hash_ref =
            {
            base_urls => \ _sf_freetype_mirrors,

            major_ver => '2',
            minor_ver => '2',
            micro_ver => '1',

            depends_on =>
              {
              targets =>
                {
                zlib => $zlib_hash_ref
                } # targets
              } # depends_on
            }
          }, # do
             # freetype

...

                        targets =>
                          {
                          'gtk+' =>
                            do{
                              my $major_ver = '2';
                              my $minor_ver = '8';
                              #my $minor_ver = '10';

                              $gtk_plus_hash_ref =
                                {
                                base_urls => &{$_gnome_c_urls_sub}
                                               (
                                               'gtk+',     # $target,
                                               $major_ver, # $major_ver,
                                               $minor_ver, # $minor_ver
                                               ),

                                major_ver => $major_ver,
                                minor_ver => $minor_ver,
                                micro_ver => '20',
                                #micro_ver => '1',

                                depends_on =>
                                  {
                                  targets =>
                                    {
                                    libjpeg => $libjpeg_hash_ref,
                                    libtiff => $libtiff_hash_ref,

                                    atk =>
                                      do{
                                        my $major_ver = '1';
                                        my $minor_ver = '12';

                                        $atk_hash_ref =
                                          {
                                          base_urls => &{$_gnome_c_urls_sub}
                                                         (
                                                         'atk',      # $target,
                                                         $major_ver, # $major_ver,
                                                         $minor_ver  # $minor_ver
                                                         ),

                                          major_ver => $major_ver,
                                          minor_ver => $minor_ver,
                                          micro_ver => '1',

                                          depends_on =>
                                            {
                                            targets =>
                                              {
                                              glib =>
                                                do{
                                                  my $major_ver = '2';
                                                  my $minor_ver = '12';

                                                  $glib_hash_ref =
                                                    {
                                                    base_urls => &{$_gnome_c_urls_sub}
                                                                   (
                                                                   'glib',     # $target,
                                                                   $major_ver, # $major_ver,
                                                                   $minor_ver  # $minor_ver
                                                                   ),

                                                    major_ver => $major_ver,
                                                    minor_ver => $minor_ver,
                                                    micro_ver => '2',
                                                    };
                                                  } # do
                                                    # glib
                                              } # targets
                                            } # depends_on
                                          }
                                        }, # do
                                           # atk

                                    cairo =>
                                      do{
                                        $cairo_hash_ref =
                                          {
                                          base_urls => ["http://cairographics.org/releases";],

                                          major_ver => '1',
                                          minor_ver => '2',
                                          micro_ver => '2',

                                          depends_on =>
                                            {
                                            targets =>
                                              {
                                              libpng => $libpng_hash_ref,
                                              freetype => $freetype_hash_ref,
                                              } # targets
                                            } # depends_on
                                          }
                                        }, # do
                                           # cairo

                                    pango =>
                                      do{
                                        my $major_ver = '1';
                                        my $minor_ver = '14';

                                        $pango_hash_ref =
                                          {
                                          base_urls => &{$_gnome_c_urls_sub}
                                                         (
                                                         'pango',    # $target,
                                                         $major_ver, # $major_ver,
                                                         $minor_ver  # $minor_ver
                                                         ),

                                          major_ver => $major_ver,
                                          minor_ver => $minor_ver,
                                          micro_ver => '0',

                                          depends_on =>
                                            {
                                            targets =>
                                              {
                                              glib => $glib_hash_ref,
                                              cairo => $cairo_hash_ref
                                              }
                                            } # depends_on
                                          } # pango
                                        } # do
                                          # pango
                                    } # targets
                                  } # depends_on
                                } # 'gtk+'
                              }, # do
                                 # 'gtk+'
                          } # targets

The answer I am giving you is for latest gtk+ versions - if you want earlier
ones the answer may be different and I do not have it.

If you want to build things manually, you have to start from the most
right-indented ones.

--Sergei.

Applications From Scratch: http://appsfromscratch.berlios.de/

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]