Re: Fwd: Question on gtk library dependencies

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

 




--- John Koshi <jkoshi@xxxxxxxxx> wrote:

> 
> Hi,
> 
> Does anyone have a quick answer for this question?
> 
> Thanks
> 
> 
> --- John Koshi <jkoshi@xxxxxxxxx> wrote:
> 
> > Date: Wed, 23 Aug 2006 16:44:02 -0700 (PDT)
> > From: John Koshi <jkoshi@xxxxxxxxx>
> > Subject: Question on gtk library dependencies
> > To: gtk-list@xxxxxxxxx
> > 
> > 
> > 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@xxxxxxxxx
> 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 
_______________________________________________

gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux