Sorry for breaking the thread, but I just subscribed. I have been working on a patch to jhbuild that will let it build packages that will be suitable for a tester to use and test the CVS version of gnome without having to compile the whole thing themselves. That is my main goal with this. I'm not trying to make packages that a distributor would want to distribute or that people would want to use to get their main version of Gnome. I have already successfully made all of the packages that are in the meta-gnome-desktop build of gnome-2.12 in jhbuild (all 120 of them) and installed these packages on a clean, non-development install of FC4. It wasn't entirely without issues, but it's getting better. These packages are not what I would call 'good' packages, but they are good in that they let us provide RPMs to testers that they can use to just start testing gnome with a minimum amount of hassle. Our testers shouldn't have to know that you have to copy mozilla headers around in order to build e-d-s. They shouldn't have to deal with every little build failure. All of the packages install their files into the /opt/gnome2 directory. All of the files are owned by root and everyone has full permissions to all of the files (chmod -R 777 /opt/gnome2). The permissions can be improved by not allowing write access to a whole lot of things (maybe everything?) but I haven't put much thought into that stuff yet. All of the packages are named 'CvsModuleName-jhbuild' so they shouldn't collide with packages from distributors. The SPEC file itself doesn't do any building at all. Basically, jhbuild goes through all of its normal steps (checkout, configure, make) and when it runs 'make install' I have set up the DESTDIR environment variable to whatever the user passed to jhbuild with the --output switch. So, the package gets installed to /tmp/buildroot for example. Once jhbuild is done running make install, a script that I have written runs. It looks in the /tmp/buildroot directory, creates a list of all of the files (not including files in /var/scrollkeeper or HAL's hotplug.d script as it doesn't respect --prefix) and puts this list of files into %files. Then, depending on whether or not files were installed to certain places, different %post and %postun scripts will be put into the SPEC file. Dependency information is created by referencing jhbuild's moduleset. These dependencies are probably more strictly BuildRequires, but something is better than nothing. I then run rpmbuild and it basically just sucks up the files into the RPM. Once the RPM is built I clear out the DESTDIR environment variable and run 'make install' a second time so that the files will get installed to /opt/gnome2 on the building box so that later modules will find the libraries and things they need. I have attached the file that I have added to jhbuild, place it in jhbuild/jhbuild/commands/ if you want to try it out. There are some other changes that you will have to make to actually start building packages. I have a .rpmmacros file that changes the %_topdir to be in my home directory so I can build packages as a normal user. There are probably other things that you would have to do, but I haven't figured it out yet. I have also attached an abbreviated SPEC file that is created. I chose to include the gnome-panel one because it has a bunch of dependencies and post scripts. I cut out a bunch of the files in the middle of the list so that the file isn't all that large. It should be fairly easy to port this over to create non-RPM packages, but I'm not too familiar with how .debs are built. I really think that this will improve the testing of Gnome once everything runs smoothly. My ultimate goal is to make everything yum-mable or apt-get-able so that testers can get the most recent version of Gnome from CVS every day and the only hassle is downloading 120-odd packages. We'll see how it goes. -- Mark Drago
Attachment:
buildpackages.py
Description: application/python
Summary: The gnome-panel package built from Gnome CVS Name: gnome-panel-jhbuild Version: 2005.08.11 Release: 1 Group: User Interface/Desktops License: SeeModuleDocumentation BuildRoot: /home/mdrago/test Requires: scrollkeeper-jhbuild Requires: libgnomeui-jhbuild Requires: gnome-desktop-jhbuild Requires: libwnck-jhbuild Requires: evolution-data-server-jhbuild Requires: gnome-menus-jhbuild Requires: gnome-vfs-jhbuild Requires: libglade-jhbuild Requires: gnome-doc-utils-jhbuild %description This is the gnome-panel module built from CVS. #%install #cd gnome-panel #rm -fr %{buildroot} #make install DESTDIR=$RPM_BUILD_ROOT %files %defattr(-, root, root) %attr(777, root, root) /opt/gnome2/bin/gnome-desktop-item-edit %attr(777, root, root) /opt/gnome2/bin/panel-test-applets %attr(777, root, root) /opt/gnome2/bin/gnome-panel %attr(777, root, root) /opt/gnome2/libexec/wnck-applet %attr(777, root, root) /opt/gnome2/libexec/fish-applet-2 %attr(777, root, root) /opt/gnome2/libexec/clock-applet %attr(777, root, root) /opt/gnome2/libexec/notification-area-applet %attr(777, root, root) /opt/gnome2/lib/libpanel-applet-2.so.0 %attr(777, root, root) /opt/gnome2/lib/libpanel-applet-2.la %attr(777, root, root) /opt/gnome2/lib/libpanel-applet-2.so %attr(777, root, root) /opt/gnome2/lib/libpanel-applet-2.so.0.1.7 %attr(777, root, root) /opt/gnome2/lib/pkgconfig/libpanelapplet-2.0.pc %attr(777, root, root) /opt/gnome2/lib/bonobo/servers/GNOME_Panel.server %attr(777, root, root) /opt/gnome2/lib/bonobo/servers/GNOME_NotificationAreaApplet.server %attr(777, root, root) /opt/gnome2/lib/bonobo/servers/GNOME_ClockApplet_Factory.server %attr(777, root, root) /opt/gnome2/lib/bonobo/servers/GNOME_Wncklet_Factory.server %attr(777, root, root) /opt/gnome2/lib/bonobo/servers/GNOME_FishApplet_Factory.server %attr(777, root, root) /opt/gnome2/man/man1/gnome-panel.1 %attr(777, root, root) /opt/gnome2/share/gnome-panelrc .... %attr(777, root, root) /opt/gnome2/share/idl/gnome-panel-2.0/GNOME_Panel.idl %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/fish.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-general.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/clock.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-toplevel.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-default-setup.entries %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/workspace-switcher.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/window-list.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-global.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-object.schemas %attr(777, root, root) /opt/gnome2/etc/gconf/schemas/panel-compatibility.schemas %attr(777, root, root) /opt/gnome2/include/panel-2.0/panel-applet-gconf.h %attr(777, root, root) /opt/gnome2/include/panel-2.0/panel-applet.h %attr(777, root, root) /opt/gnome2/include/panel-2.0/panel-applet-enums.h %attr(777, root, root) /opt/gnome2/include/panel-2.0/GNOME_Panel.h %post /opt/gnome2/bin/scrollkeeper-update -p /opt/gnome2/var/lib/scrollkeeper chmod -R 777 /opt/gnome2/var/lib/scrollkeeper export GCONF_CONFIG_SOURCE='xml::/opt/gnome2/etc/gconf/gconf.xml.defaults' mkdir -p $GCONF_CONFIG_SOURCE SCHEMAS="fish.schemas panel-general.schemas clock.schemas panel-toplevel.schemas panel-default-setup.entries workspace-switcher.schemas window-list.schemas panel-global.schemas panel-object.schemas panel-compatibility.schemas" for S in $SCHEMAS; do gconftool-2 --makefile-install-rule /opt/gnome2/etc/gconf/schemas/$S > /dev/null done chmod -R 777 $GCONF_CONFIG_SOURCE for dir in 'hicolor'; do if test -d "$dir"; then touch --no-create /opt/gnome2/share/icons/$dir /opt/gnome2/bin/gtk-update-icon-cache --quiet $dir chmod -R 777 $dir/index.theme fi done %postun /opt/gnome2/bin/scrollkeeper-update -p /opt/gnome2/var/lib/scrollkeeper chmod -R 777 /opt/gnome2/var/lib/scrollkeeper for dir in 'hicolor'; do if test -d "$dir"; then touch --no-create /opt/gnome2/share/icons/$dir /opt/gnome2/bin/gtk-update-icon-cache --quiet $dir chmod -R 777 $dir/index.theme fi done
Attachment:
signature.asc
Description: This is a digitally signed message part