]> git.saurik.com Git - wxWidgets.git/commitdiff
Some explainations and directions for building the Debian wx packages
authorRobin Dunn <robin@alldunn.com>
Thu, 1 Jun 2006 22:23:24 +0000 (22:23 +0000)
committerRobin Dunn <robin@alldunn.com>
Thu, 1 Jun 2006 22:23:24 +0000 (22:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

debian/README.HowToBuild.txt [new file with mode: 0644]

diff --git a/debian/README.HowToBuild.txt b/debian/README.HowToBuild.txt
new file mode 100644 (file)
index 0000000..4d242b1
--- /dev/null
@@ -0,0 +1,162 @@
+How to build the Debian wx packages
+===================================
+
+This file is currently just a brain dump of my experiences with
+building the Debian wx packages, based on various experimentations,
+and Googling around.  Please don't take anything said here as
+autoritative or written in stone.  Although I've been able to get
+things to work fairly reliably, I still feel pretty clueless about
+some things.
+
+
+Overview
+--------
+
+Contrary to how RPM and other pacakging systems work, building Debian
+packages is done with an expanded source tree instead of using a
+tarball.  Inside the toplevel of the source tree you'll find a subdir
+named debian, and within this dir are various files used by the build.
+The most important of these are the control file and the rules file.
+The control file specifies the metadata about each pacakge, such as
+name, description, dependencies, etc.  Interestingly, the version
+number of the current build is not in the control file as might be
+expected, but is instead taken from the changelog file.  I guess this
+is a way for debian to make sure that there is always an updated
+changelog for every release, but it is very non-intuitive to say the
+least.  The rules file is a Makefile, and is executable with a #! that
+runs make on itself.  This lets you execute commands from the toplevel
+source dir like:
+
+       ./debian/rules build
+
+While theoretically you could build the wx packages directly from your
+CVS workspace this won't work (currently) for a couple reasons.
+First, the debian/rules file is currently looking at the name of the
+toplevel source dir and extracting from it the flavour name (if
+present) for use in passing to --with-flavor configure flag.  (I'm
+considering changing how it finds this value for 2.7 so, for example,
+the debian packages could also be build from the wxPython source
+tarball...)  Second, since the build tools use the current source dir
+for creating the source package, you'll probably want to start with a
+clean source tree that has had uneccessary things removed from it.
+There is a Makefile target that will create a minimized and clean
+source tree for you, and will name it as debian/rules expects.  To use
+it go to a build dir where you've already run configure, and then run:
+
+       make debian-dist
+
+This will result in a new source tree with a name like
+wxwidgets2.7-2.7.0.0 that is located as a sibling to the toplevel of
+the current source tree.
+
+
+Environment
+-----------
+
+The various dpkg helper tools will use some environtment settings to
+provide default values.  I have these set:
+
+       DEBFULLNAME='Robin Dunn'
+       DEBEMAIL=robin@alldunn.com
+       DEBSIGN_KEYID='Robin Dunn <robin@alldunn.com>'
+       DEBUILD_DPKG_BUILDPACKAGE_OPTS='-i -ICVS -I.svn'
+
+Notice the DEBSIGN_KEYID value.  If this is set (and you have a
+matching gnupg key) then the packages will be digitally signed when
+they are built.
+
+If you are building packages that you intend to be installable on
+machines other than your own, then I recoomend that you either have a
+separte machine with a minimal OS install, or set up a chroot
+environment and do the builds there.  The reason for this is to
+minimize unexepcted extra dependencies that the built packages will
+have because of extra things you have installed on your desktop
+system, for example OpenGL libs installed by your video card drivers.
+Using a chroot will also allow you to build packages for different
+versions of Debian (or Ubuntu) if desired.  There is a good
+description of setting up a chroot environment here:
+
+       https://wiki.ubuntu.com/DebootstrapChroot
+
+In addition to the base system pacakges, you'll need to install in
+the chroot environment any pacakges needed for bulding wxWidgets
+(compilers, make, autoconf, gtk and image libs, lib-dev's, python,
+python-dev, etc.)  as well as the packages listed in the next section.
+
+
+Build Packages
+--------------
+
+There are a number of helper pacakges that are used when building
+debian packages.  Here are some that I have in my chroot, there may be
+some others that I am not seeing at the moment:
+
+       debhelper
+       devscripts
+       dh-make
+       dpkg-dev
+       fakeroot
+       lintian
+       diff
+       patch
+
+
+Doing the Build
+---------------
+
+Ok, if you are not totally confused by this point you should have a
+minimal source tree produced by "make debian-dist" that is accessible
+by your chroot or other minimal install system. (Unless you are only
+making packages for yourself, then doing the build on in your main
+desktop environment would  be okay.)  The first step is to chdir to
+the top level of this source tree.
+
+If you havn't already you'll want to edit debian/changelog to make an
+entry for the current build.  If the version number is changing since
+the last build then you'll need a whole new section.  If you are just
+updating something in the same version then you can just get by with
+editing the current changelog entry.  The 'dch' tool can be used to
+open the file in an editor with the cursor positioned for you.  If you
+use 'dch -i' then it will create a new changelog entry for you with
+the proper syntax.  Don't forget to copy this file back to your CVS
+workspace if appropriate.
+
+Our debian/control file is generated from debian/control.in, so you
+can force it to be created now by running the following.  You may want
+to do this to verify its contents before proceding with the build.
+
+       ./debian/rules debian/control
+
+To run just the compile/link/etc. portions of the build you can do
+this:
+
+       ./debian/rules build
+
+To also make a set of test binaries you can do this:
+
+       fakeroot ./debian/rules binaries
+
+To clean up from prior builds you can do this:
+
+       fakeroot ./debian/rules clean
+
+And to automate the entire process (build, binaries, source pacakges,
+digital signing, etc.) you can do this:
+
+       dpkg-buildpackage -rfakeroot
+
+When finished the binary and source packages will be left in the
+parent dir of the source tree.
+
+
+
+Other Sources of Information
+----------------------------
+
+http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf
+http://women.alioth.debian.org/wiki/index.php/English/BuildingTutorial
+http://women.alioth.debian.org/wiki/index.php/English/AdvancedBuildingTips
+http://www.wiggy.net/presentations/2001/DebianWalkThrough/handouts/handouts.html
+http://www.debian.org/doc/manuals/maint-guide/index.en.html
+http://www.isotton.com/debian/docs/repository-howto/repository-howto.html
+