GNOME Bugzilla – Bug 624009
Fix .deb dependencies in the setup script.
Last modified: 2010-07-20 14:32:04 UTC
Fix names for the following packages : libjpeg62-dev libpng12-dev libtiff4-dev this should work with all current debian versions and ubuntu dapper onwards. Fixed a comment.
Created attachment 165597 [details] [review] Fix .deb dependencies in the setup script.
Comment on attachment 165597 [details] [review] Fix .deb dependencies in the setup script. Nathan, this is not correct, as it will fail with systems using libtiff5-dev; for a long time development packages have a generic Provide: key; what kind of failure do you get?
I get the same error---failure looks like: dean@linux:~/Desktop$ '/home/dean/Desktop/gnome-shell-build-setup.sh' Please run 'sudo apt-get install libtiff-dev libpng-dev libjpeg-dev ' and try again. I can confirm that I have all the .dev files it is asking for installed--versions are as the OP. Ubuntu Maverick testing 10.10 Via IRC I got this version of gnome-shell-build-setup.sh & it works: #!/bin/sh # # Script that sets up jhbuild to build gnome-shell. Run this to # checkout jhbuild and the required configuration. # # Copyright (C) 2008, Red Hat, Inc. # # Some ideas and code taken from gtk-osx-build # # Copyright (C) 2006, 2007, 2008 Imendio AB # # Pre-check on GNOME version gnome_version=`gnome-session --version 2>/dev/null | (read name version && echo $version)` have_gnome_26=false case $gnome_version in 2.2[6789]*|2.[3456789]*|3.*) have_gnome_26=true ;; esac if $have_gnome_26 ; then : ; else echo "GNOME 2.26 or newer is required to build GNOME Shell" 1>&2 exit 1 fi ############################################################ if which lsb_release > /dev/null 2>&1; then system=`lsb_release -is` elif [ -f /etc/fedora-release ] ; then system=Fedora elif [ -f /etc/SuSE-release ] ; then system=SUSE elif [ -f /etc/mandriva-release ]; then system=MandrivaLinux fi # Required software: # # For this script: # binutils, curl, gcc, make, git # # General build stuff: # automake, bison, flex, git, gnome-common, gtk-doc, intltool, # libtool, pkgconfig # # Devel packages needed by gnome-shell and its deps: # dbus-glib, GL, gnome-menus, gstreamer, libffi, # libjasper, libjpeg, libpng, libtiff, libwnck, # libxml2, python,readline, spidermonkey ({mozilla,firefox,xulrunner}-js), # startup-notification, xdamage # # Non-devel packages needed by gnome-shell and its deps: # glxinfo, gstreamer-plugins-base, gstreamer-plugins-good, # gvfs, python, pygobject, gnome-python (gconf), gnome-terminal* # Xephyr*, zenity # # (*) only needed for --xephyr # Can this be simplified? Obvious ways don't handle handle packages # that have been installed then removed. ('purged' status, e.g.) dpkg_is_installed() { status=`dpkg-query --show --showformat='${Status}' $1 2>/dev/null` if [ $? = 0 ] ; then set $status if [ "$3" = installed ] ; then return 0 fi fi return 1 } if test x$system = xUbuntu -o x$system = xDebian -o x$system = xLinuxMint ; then reqd="" for pkg in \ build-essential curl \ automake bison flex git-core gnome-common gtk-doc-tools gvfs gvfs-backends \ libdbus-glib-1-dev libffi-dev libgnome-menu-dev libgnome-desktop-dev \ libjasper-dev libjpeg62-dev libpng12-dev libstartup-notification0-dev libtiff4-dev \ libwnck-dev libgl1-mesa-dev libreadline5-dev libxml2-dev mesa-common-dev mesa-utils \ python-dev python-gconf python-gobject xulrunner-dev xserver-xephyr gnome-terminal \ libcroco3-dev libgstreamer0.10-dev gstreamer0.10-plugins-base gstreamer0.10-plugins-good \ ; do if ! dpkg_is_installed $pkg; then reqd="$pkg $reqd" fi done if test ! "x$reqd" = x; then echo "Please run 'sudo apt-get install $reqd' and try again." echo exit 1 fi fi if test x$system = xFedora ; then reqd="" for pkg in \ binutils curl gcc gcc-c++ make \ automake bison flex git gnome-common gnome-doc-utils gvfs intltool \ libtool pkgconfig dbus-glib-devel gnome-desktop-devel gnome-menus-devel \ gnome-python2-gconf jasper-devel libffi-devel libjpeg-devel \ libpng-devel libtiff-devel libwnck-devel mesa-libGL-devel \ python-devel pygobject2 readline-devel xulrunner-devel libXdamage-devel libcroco-devel \ libxml2-devel gstreamer-devel gstreamer-plugins-base gstreamer-plugins-good \ glx-utils startup-notification-devel xorg-x11-server-Xephyr gnome-terminal zenity \ ; do if ! rpm -q $pkg > /dev/null 2>&1; then reqd="$pkg $reqd" fi done if test ! "x$reqd" = x; then gpk-install-package-name $reqd fi fi if test x$system = xSUSE ; then reqd="" for pkg in \ curl \ bison flex gnome-doc-utils-devel \ libffi-devel gnome-desktop-devel libwnck-devel \ xorg-x11-proto-devel readline-devel mozilla-xulrunner190-devel \ libcroco-devel xorg-x11-devel xorg-x11 xorg-x11-server-extra \ ; do if ! rpm -q $pkg > /dev/null 2>&1; then reqd="$pkg $reqd" fi done if test ! "x$reqd" = x; then echo "Please run 'su --command=\"zypper install $reqd\"' and try again." echo exit 1 fi fi if test x$system = xMandrivaLinux ; then reqd="" for pkg in \ curl \ bison flex gnome-common gnome-doc-utils gtk-doc intltool \ ffi5-devel \ libwnck-1-devel GL-devel readline-devel libxulrunner-devel \ libxdamage-devel mesa-demos x11-server-xephyr zenity \ libcroco0.6-devel \ ; do if ! rpm -q --whatprovides $pkg > /dev/null 2>&1; then reqd="$pkg $reqd" fi done if test ! "x$reqd" = x; then gurpmi --auto $reqd fi fi SOURCE=$HOME/Source BASEURL=http://git.gnome.org/browse/gnome-shell/plain/tools/build if [ -d $SOURCE ] ; then : ; else mkdir $SOURCE echo "Created $SOURCE" fi if [ -d $SOURCE/jhbuild ] ; then if [ -d $SOURCE/jhbuild/.git ] ; then echo -n "Updating jhbuild ... " ( cd $SOURCE/jhbuild && git pull --rebase > /dev/null ) || exit 1 echo "done" else echo "$SOURCE/jhbuild is not a git repository" echo "You should remove it and rerun this script" exit 1 fi else echo -n "Checking out jhbuild into $SOURCE/jhbuild ... " cd $SOURCE git clone git://git.gnome.org/jhbuild > /dev/null || exit 1 echo "done" fi echo "Installing jhbuild..." (cd $SOURCE/jhbuild && make -f Makefile.plain DISABLE_GETTEXT=1 bindir=$HOME/bin install >/dev/null) if [ -e $HOME/.jhbuildrc ] ; then if grep JHBUILDRC_GNOME_SHELL $HOME/.jhbuildrc > /dev/null ; then : ; else mv $HOME/.jhbuildrc $HOME/.jhbuildrc.bak echo "Saved ~/.jhbuildrc as ~/.jhbuildrc.bak" fi fi echo -n "Writing ~/.jhbuildrc ... " curl -L -s -o $HOME/.jhbuildrc $BASEURL/jhbuildrc-gnome-shell echo "done" if [ ! -f $HOME/.jhbuildrc-custom ]; then echo -n "Writing example ~/.jhbuildrc-custom ... " curl -L -s -o $HOME/.jhbuildrc-custom $BASEURL/jhbuildrc-custom-example echo "done" fi if test "x`echo $PATH | grep $HOME/bin`" = x; then echo "PATH does not contain $HOME/bin, it is recommended that you add that." echo fi echo "Done."
Oh, that's because gnome-shell-build-setup.sh doesn't support the Provides key; it should be fixed with an improved dpkg_is_installed function (dpkg-checkbuilddeps could be of some inspiration, but it's written in Perl).
Created attachment 165691 [details] [review] Use dpkg-checkbuilddeps to check for installed packages This patch uses dpkg-checkbuilddeps (from dpkg-dev package) to check for installed packages, which brings support for the Provides field.
Verified that the patch works very well with Maverick Testing 10.10
Review of attachment 165691 [details] [review]: Looks fine as far as I can tell. Might be good if the body of the commit message mentioned the inspiration (handling provides)
I can confirm that the patch fixes the error and the patched script should be linked from the main wiki page.
Thanks for the review, pushed (with an expanded commit message) as 6259513.