LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   packaging gnome (https://www.linuxquestions.org/questions/slackware-14/packaging-gnome-320087/)

acidjuice 05-04-2005 12:32 PM

packaging gnome
 
dear all,

i am slowly thinking of start packaging gnome for slamd64, however before i take boring and wrong steps i'd like to know your experience.

what would you suggest to do such a thing, i believe of course stuff like gargnome are completely out of the question.

...any ideas?

thanks,

aj.

Shade 05-04-2005 01:05 PM

Be prepared to pull your hair out ;)

--Shade

jong357 05-04-2005 01:47 PM

I made build scripts for all of 2.8.3... They work wonderfully. They're not 'true" .SlackBuild scripts because they don't build the package at the end. I prefer to do that manually once I visually inspect the package to make sure all is well. But, yea.... Get ready to waste some time. I'd say the key is to make sure you update key things via your doinst.sh's... If you don't, you'll have a hosed Gnome. For example, a package that is designed to work with scrollkeeper, you have to have this in the doinst.sh
Code:

if [ -x /usr/bin/scrollkeeper-update ]; then
  /usr/bin/scrollkeeper-update -p /var/lib/scrollkeeper 1> /dev/null 2> /dev/null
fi

There are several others as well besides scrollkeeper. I'm pretty sure these are all of them:

1. scrollkeeper-update
2. gconftool-2
3. update-desktop-database
4. gtk-update-icon-cache
5. gdk-pixbuf-query-loaders

If you use those where required, you'll end up with a tight Gnome desktop right from the get-go....

acidjuice 05-04-2005 02:33 PM

Quote:

Originally posted by Shade
Be prepared to pull your hair out ;)
if only i had any :)

acidjuice 05-04-2005 02:35 PM

Quote:

Originally posted by jong357
1. scrollkeeper-update
2. gconftool-2
3. update-desktop-database
4. gtk-update-icon-cache
5. gdk-pixbuf-query-loaders
will check these out. as the total beginner i'm in this i actually do not even know where to start from, these might be a good place to. thanks.

jong357 05-04-2005 06:38 PM

Sure... If your really stuck I can tarball some or all of my scripts/doinst.sh's for you to look at. Why re-invent the wheel is my philosophy.... Actually, I took LiNuce's doinst.sh's and made them my own with a bit of formatting... No offense tho, I shuddered at his build scripts.... Ugh.... So I made my own scripts that are just like Pat's except I remove the ARCH/BUILD variables from up top and remove the very end makepkg line... Now that I know they all work flawlessly, I kind of wish I would have left that stuff in there... Oh well.

AxelFendersson 05-04-2005 07:59 PM

You might want to have a look at the GSB scripts as a starting point.

acidjuice 05-05-2005 05:57 AM

i have a feeling that this is way out of my hands.

looked at the scripts: it's 230 KB of compressed scripts of which i wouldn't know where to put my hands on to begin.

i'd feel like installing slamd64 (which is without gnome) and then building it up, manually, to see how it works. then, encode all this into a script.

do you know how to build manually gnome from the start? i downloaded all the source tarballs available here.

any additional help more than welcomed.. once i succeed in building gnome manually i'll start building scripts for it...

thank you,

aj.

acidjuice 05-05-2005 07:05 AM

found this, valid for gnome 2.8:

External Dependencies
• pkg-config, available at http://www.freedesktop.org/software/...-0.15.0.tar.gz
• The Xft2 and fontconfig family of libraries, available at http://fontconfig.org/. Note that while these libraries are available as part of XFree86 4.3, the newer versions from fontconfig.org are highly recommended.
• FreeType 2.0.9 or greater, available at http://www.freetype.org/
• docbook-xml [docbook dtd 4.1.2]
• docbook-xsl [docbook xsl stylesheets]
• shared-mime-info
• hicolor-icon-theme

Development Library dependencies
• libpng
• libjpeg
• libtiff
• XFree86
• libpopt
• libbbz2
• zlib
• libfam
• libgpg-error
• libgcrypt
• libtasn1
• opencdk
• gnutls
• libgsf
• libcroco
• mozilla

GNOME 2.8 Installation Order
• libxml2
• libxslt
• gtk-doc
• glib
• libIDL
• ORBit2
• intltool
• libbonobo
• pango
• atk
• gtk+
• gconf
• desktop-file-utils
• gnome-mime-data
• gnome-vfs
• audiofile
• esound
• libgnome
• libart_lgpl
• libglade
• libgnomecanvas
• libbonoboui
• gnome-icon-theme
• gnome-keyring
• libgnomeui
• startup-notification
• gtk-engines
• gnome-themes
• scrollkeeper
• gnome-desktop
• libwnck
• libsoup
• evolution-data-server
• gnome-panel
• gnome-session
• vte
• gnome-terminal
• libgtop
• gail
• libxklavier
• gnome-applets
• metacity
• librsvg
• eel
• nautilus
• gnome-control-center
• gtkhtml2
• gnome-doc-utils
• yelp
• bug-buddy
• libgnomecups
• libgnomeprint
• libgnomeprintui
• gtksourceview
• gedit
• eog
• ggv
• gconf-editor
• gnome-utils
• procman
• gstreamer
• gst-plugins
• gnome-media
• nautilus-media
• gnome-netstatus
• gcalctool
• gpdf
• gucharmap
• nautilus-cd-burner
• zenity
• at-spi
• libgail-gnome
• gnome-speech
• gnome-mag
• gnopernicus
• gok
• epiphany
• gnome-games
• gnome-user-docs
• file-roller
• gnome-system-tools
• gnome-nettool
• vino
• dbus
• hal
• gnome-volume-manager
• gal
• gtkhtml
• evolution
• evolution-webcal
• gnomemeeting
• libsigc++
• glibmm
• gtkmm
• libgnomemm
• libgnomecanvasmm
• libglademm
• libgnomeuimm
• gnome-vfsmm
• libgtk-java
• libgconf-java
• libglade-java
• libgnome-java
• Glib (perl)
• Gtk2 (perl)
• Gnome2 (perl)
• Gnome2-Canvas (perl)
• Gtk2-GladeXML (perl)
• Gnome2-VFS (perl)
• Gnome2-GConf (perl)
• pygtk


...if i install every package in THIS order will it work?

jong357 05-05-2005 03:25 PM

It's supposed to... For some reason, I don't trust that page. Following their build order twice before didn't work for me if I remember correctly. You also don't need some of that stuff actually. This is how I do it. 2.8.3 runs great in this order.

Code:

pkgconfig-0.15.0
 glib-2.6.1
 atk-1.9.0
 popt-1.7-5
 desktop-file-utils-0.10
 pango-1.8.0
 gtk+-2.6.1
 gtk-engines-2.6.2
 libxml2-2.6.16
 libxslt-1.1.12
 libcroco-0.6.0
 shared-mime-info-0.15
 hicolor-icon-theme-0.5
 libidl-0.8.4
 orbit2-2.12.0
 gconf-2.8.1
 libbonobo-2.8.1
 audiofile-0.2.6
 esound-0.2.35
 intltool-0.32.1
 gnome-themes-2.8.2
 gnome-mime-data-2.4.2
 portmap-5beta
    tcpwrappers
 fam-2.7.0
 gnome-vfs-2.8.3
 libgsf-1.11.1
 libgnome-2.8.0
 libart_lgpl-2.3.16
 librsvg-2.8.1
 libglade-2.4.1
 libgnomecanvas-2.8.0
 libbonoboui-2.8.0
 gnome-keyring-0.4.0
 libgnomeui-2.8.0
 gnome-icon-theme-2.8.0
 scrollkeeper-0.3.14
 startup-notification-0.8
 gnome-desktop-2.8.3
 libwnck-2.8.1
 libsoup-2.2.3
 evolution-data-server-1.2.1
 gnome-panel-2.8.3
 gnome-session-2.8.1
 vte-0.11.12
 gnome-terminal-2.8.2
 libgtop-2.8.3
 gail-1.8.2
 libgtkhtml-2.6.3
 libxklavier-1.11
 gnome-applets-2.8.2
 eel-2.8.2
 nautilus-2.8.2
 gstreamer-0.8.9
 gst-plugins-0.8.8
 metacity-2.8.6
 control-center-2.8.1
 gnome2-user-docs-2.8.1
 gnome-doc-utils-0.1
 yelp-2.6.4

 libgnomecups-0.1.13
 libgnomeprint-2.8.0.1
 libgnomeprintui-2.8.0
 file-roller-2.8.4
 gtksourceview-1.2.0
 aspell-0.60.2
 gedit-2.8.3
 gconf-editor-2.8.2
 gnome-utils-2.8.1
 gnome-system-monitor-2.8.3
 gnome-media-2.8.0
 nautilus-media-0.8.1
 gnome-netstatus-2.8.0
 nautilus-cd-burner-2.8.7
    cdrtools-2.01
 zenity-2.8.2
 at-spi-1.6.3
 libgail-gnome-1.1.0
 gcalctool-4.4.22
 gpdf-2.8.3
 gucharmap-1.4.3
 gdm-2.6.0.6
 gal-2.4.1
 gtkhtml-3.6.2
 evolution-2.2.1.1
 bug-buddy-2.8.0
 gimp-2.2.3
    check dependencies
 eog-2.8.2
    libexif-0.6.12
 ggv-2.8.4
    espgs-7.07.1
 epiphany-1.4.8
    mozilla-1.7.6 or firefox-1.0.2 or thunderbird-1.0.2
 gnome-games-2.8.3
    guile-1.6.7
 gftp-2.0.18
 gthumb-2.6.4

There are a few packages that need to be built before any of that but you should have them already.. Like:

• libpng
• libjpeg
• libtiff
• XFree86
• FreeType 2.0.9 or greater
• Xft2 and fontconfig

My documentation isn't the best though so you should probably try the Gnome list. I just noticed I don't have "docbook-xml-4.3" listed... :( I must have been on a roll and forgot to insert that one.... It's requirements are libxml2, so it's perfectly safe to put that one right under libxml2..... You get the idea. Just a huge dependency chain. There are also some on the Gnome list that you don't need. Like docbook-xsl.. I also don't use dbus or gtk-doc. Why use gtk-doc when most of the programs already make their own gtk docs? I could go on and on and on about the idiosyncrasies of building Gnome.

Those are the versions I used months ago. There are updated packages for alot of them. Like GTK2 for example. fam and portmap are extras. I just wanted Nautilus to automatically update when changes were made... Well, anyway...

acidjuice 05-05-2005 05:53 PM

wow!

thank you jong!

this looks precious. what do you go about this? did you individually change .config files before makeinstalls or you went by default?

i'm looking forward to installing slamd64, though i'll have to say bye to slack for some time... and before i do this i want to have the correct information on how to proceed.

it's really incredible how things are sometimes organized with gnome. they spend 2 months to invert 'cancel' with 'ok' button, and then on 2.10 they take away menu management! talking about idiosyncrasies...

it seems the same is done here. why the hell such a simple information such as this one of a package building order is impossible to find anywhere... why! this really is mistery to me. i feel like programming my very own gnome panel, these kind of feeling. oh well.

back to the point.

you seem to be saying that

• ibpng
• libjpeg
• libtiff
• XFree86
• FreeType 2.0.9 or greater
• Xft2 and fontconfig

correspond therefore to what gnome devels are stating.

would this seem ok for you? i install the above (if not yet installed, or maybe i'd figure an upgrade) and then install your list?

then all i'd have to do is build a package out of every compile i do on a 64 arch, and build a script that will install them on a target machine in the same order... seems cool?

jong357 05-05-2005 11:12 PM

Quote:

[B]did you individually change .config files before makeinstalls or you went by default?
Um, not sure what you mean there.. I didn't have to edit any makefiles if thats what you mean... I set MAKEOPTS, CFLAGS and CXXFLAGS globaly in /etc/bashrc. That way I don't have to worry about incorporating them into each build script. I still do customized ./configure options where appropriate in the build scripts. After the script is done I 'cd' into the package directory and then run makepkg and then installpkg... Then move on to the next one... You don't have to make build scripts of course...
Quote:

it's really incredible how things are sometimes organized with gnome. they spend 2 months to invert 'cancel' with 'ok' button, and then on 2.10 they take away menu management! talking about idiosyncrasies...
I know... I'm extremly unhappy with the direction Gnome has been going. 2.8.3 may very well be my last build...

Quote:

you seem to be saying that

• ibpng
• libjpeg
• libtiff
• XFree86
• FreeType 2.0.9 or greater
• Xft2 and fontconfig

correspond therefore to what gnome devels are stating.

would this seem ok for you? i install the above (if not yet installed, or maybe i'd figure an upgrade) and then install your list?
Right... Those should be installed first.

Quote:

then all i'd have to do is build a package out of every compile i do on a 64 arch, and build a script that will install them on a target machine in the same order... seems cool?
Right... Thats a good idea. It's about the only thing I have left to do that I've been shirking, is making an install script... I haven't formatted since I built/installed the packages... No need for an install script now since I installed each one right after I built them. I'll get around to it sooner or later, I'm sure.

I was kind of taken with LFS's approach to Gnome. eg - using:
Code:

./configure --prefix=`pkg-config --variable=prefix ORBit-2.0` \
    --libexecdir=`pkg-config --variable=prefix ORBit-2.0`/sbin

Pretty cool IMO... So, whatever prefix you give Orbit2, thats going to be the prefix using the above. I installed Orbit2 in /usr, like Gnome packages traditionally are. So, really, thats the same thing as:

Code:

./configure --prefix=/usr \
    --libexecdir=/usr/sbin

I also liked the idea of clumping all the sysconfig files into /etc/gnome, not just /etc
Code:

    --sysconfdir=/etc/gnome
whew.... ALSO.... :D I was fairly impressed with LiNuCe's doinst.sh's as I've said so there are some tricks to getting schemas in place and registered upon install (along with the others that I listed a couple posts back). Here's my file-roller build script. This shows you how schemas are handled with the package.
Code:

#!/bin/sh
CWD=`pwd`
TMP=/tmp
PKG=$TMP/package-file-roller
VERSION=2.8.4

rm -rf $PKG
mkdir -p $PKG

cd $TMP
rm -rf file-roller-$VERSION
tar xjvf $CWD/file-roller-$VERSION.tar.bz2
cd file-roller-$VERSION
chown -R root.root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
./configure --prefix=`pkg-config --variable=prefix ORBit-2.0` \
    --localstatedir=/var/lib \
    --sysconfdir=/etc/gnome
make
make install DESTDIR=$PKG

( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)

mkdir -p $PKG/install
cat $CWD/desc.file-roller > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
( cd $PKG ; ls etc/gnome/gconf/schemas/*.schemas ) > $PKG/install/schemas
chmod 644 $PKG/install/schemas

echo
echo "All Done!"
echo "Your package is ready to be built."
echo
echo "Issue a 'makepkg' from within $PKG"
echo

Here is the coresponding doinst.sh:
Code:

if [ -x /usr/bin/scrollkeeper-update ]; then
  /usr/bin/scrollkeeper-update -p /var/lib/scrollkeeper 1> /dev/null 2> /dev/null
fi
if [ -x usr/bin/gconftool-2 ]; then
        GCONF_CONFIG_SOURCE=`chroot . usr/bin/gconftool-2 --get-default-source`
        export GCONF_CONFIG_SOURCE
        for schema in `cat install/schemas`
        do
                chroot . usr/bin/gconftool-2 --makefile-install-rule $schema \
                1>/dev/null 2>/dev/null
        done
fi
rm -f install/schemas
if [ -x usr/bin/update-desktop-database ]; then
        chroot . usr/bin/update-desktop-database 1>/dev/null 2>/dev/null
fi

The main thing is to know when to use what command for which doinst.sh... :-) Like I said, If you do that, you have a smooth running Gnome.

acidjuice 05-06-2005 04:59 AM

again, thank you.

i will keep these scripts for reference.

i also contacted the GBS team (which is packaging gnome 2.10 for slackware) and they got back to me for this idea of packaging gnome 2.10 for slamd64.

they will send me detailed instructions on how they do it during this weekend.

i will then give it a try and hopefully come up with something for all of you 64 slackware archers out there.

hopefully this IS interesting some one :) well at least it is interesting me.

any comments still more than welcomed,

cheers,

aj.


All times are GMT -5. The time now is 06:04 PM.