diff options
author | Julien Cristau <jcristau@debian.org> | 2009-08-02 15:04:15 +0200 |
---|---|---|
committer | Julien Cristau <jcristau@debian.org> | 2009-08-02 15:04:15 +0200 |
commit | 93a81e1d57042311b2242a777cd97b8ef31305da (patch) | |
tree | d6de7692854fb2f73147ab46ff2a1297be3e7307 | |
parent | b8edfc2fcc56ac06971e6f334de5fef45a2a42ac (diff) | |
parent | 8f72294ada477f003888b6776883c1dd98289f3f (diff) | |
download | xutils-dev-93a81e1d57042311b2242a777cd97b8ef31305da.tar.gz |
Merge branch 'debian-unstable' of git.debian.org:/git/pkg-xorg/xsfbs into debian-unstable
-rw-r--r-- | debian/README.source | 73 | ||||
-rwxr-xr-x | debian/xsfbs/repack.sh | 32 | ||||
-rw-r--r-- | debian/xsfbs/xsfbs.sh | 78 |
3 files changed, 105 insertions, 78 deletions
diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..34ab4bf --- /dev/null +++ b/debian/README.source @@ -0,0 +1,73 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +quilt is actually invoked by the Debian X packaging through a larger +set of scripts called XSFBS. XSFBS brings some other X specific +features such as managing dependencies and conflicts due to the video +and input driver ABIs. +XSFBS itself is maintained in a separate repository at + git://git.debian.org/pkg-xorg/xsfbs.git +and it is pulled inside the other Debian X repositories when needed. + +The XSFBS patching system requires a build dependency on quilt. Also +a dependency on $(STAMP_DIR)/patch has to be added to debian/rules +so that the XSFBS patching occurs before the actual build. So the +very first target of the build (likely the one running autoreconf) +should depend on $(STAMP_DIR)/patch. It should also not depend on +anything so that parallel builds are correctly supported (nothing +should probably run while patching is being done). And finally, the +clean target should depend on the xsfclean target so that patches +are unapplied on clean. + +When the upstream sources contain some DFSG-nonfree files, they are +listed in text files in debian/prune/ in the "debian-*" branch of +the Debian repository. XSFBS' scripts then take care of removing +these listed files during the build so as to generate a modified +DFSG-free .orig.tar.gz tarball. diff --git a/debian/xsfbs/repack.sh b/debian/xsfbs/repack.sh new file mode 100755 index 0000000..5935cc9 --- /dev/null +++ b/debian/xsfbs/repack.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +if ! [ -d debian/prune ]; then + exit 0 +fi + +if [ "x$1" != x--upstream-version ]; then + exit 1 +fi + +version="$2" +filename="$3" + +if [ -z "$version" ] || ! [ -f "$filename" ]; then + exit 1 +fi + +dir="$(pwd)" +tempdir="$(mktemp -d)" + +cd "$tempdir" +tar xf "$dir/$filename" +cat "$dir"/debian/prune/* | while read file; do rm -f */$file; done + +tar czf "$dir/$filename" * +cd "$dir" +rm -rf "$tempdir" +echo "Done pruning upstream tarball" + +exit 0 diff --git a/debian/xsfbs/xsfbs.sh b/debian/xsfbs/xsfbs.sh index 72efa95..781826f 100644 --- a/debian/xsfbs/xsfbs.sh +++ b/debian/xsfbs/xsfbs.sh @@ -57,8 +57,6 @@ EOF exit $SHELL_LIB_USAGE_ERROR fi -ARCHITECTURE="$(dpkg --print-installation-architecture)" - if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then RECONFIGURE="true" else @@ -305,16 +303,6 @@ EOF fi } -# we require a readlink command or shell function -if ! which readlink > /dev/null 2>&1; then - message "The readlink command was not found. Please install version" \ - "1.13.1 or later of the debianutils package." - readlink () { - # returns what symlink in $1 actually points to - perl -e '$l = shift; exit 1 unless -l $l; $r = readlink $l; exit 1 unless $r; print "$r\n"' "$1" - } -fi - check_symlink () { # syntax: check_symlink symlink # @@ -719,72 +707,6 @@ run () { fi } -register_x_lib_dir_with_ld_so () { - # syntax: register_x_lib_dir_with_ld_so - # - # Configure the dynamic loader ld.so to search /usr/X11R6/lib for shared - # libraries. - # - # Call this function from the postinst script of a package that places a - # shared library in /usr/X11R6/lib, before invoking ldconfig. - - local dir ldsoconf - - dir="/usr/X11R6/lib" - ldsoconf="/etc/ld.so.conf" - - # is the line not already present? - if ! fgrep -qsx "$dir" "$ldsoconf"; then - observe "adding $dir directory to $ldsoconf" - echo "$dir" >> "$ldsoconf" - fi -} - -deregister_x_lib_dir_with_ld_so () { - # syntax: deregister_x_lib_dir_with_ld_so - # - # Configure dynamic loader ld.so to not search /usr/X11R6/lib for shared - # libraries, if and only if no shared libaries remain there. - # - # Call this function from the postrm script of a package that places a shared - # library in /usr/X11R6/lib, in the event "$1" is "remove", and before - # invoking ldconfig. - - local dir ldsoconf fgrep_status cmp_status - - dir="/usr/X11R6/lib" - ldsoconf="/etc/ld.so.conf" - - # is the line present? - if fgrep -qsx "$dir" "$ldsoconf"; then - # are there any shared objects in the directory? - if [ "$(echo "$dir"/lib*.so.*.*)" = "$dir/lib*.so.*.*" ]; then - # glob expansion produced nothing, so no shared libraries are present - observe "removing $dir directory from $ldsoconf" - # rewrite the file (very carefully) - set +e - fgrep -svx "$dir" "$ldsoconf" > "$ldsoconf.dpkg-tmp" - fgrep_status=$? - set -e - case $fgrep_status in - 0|1) ;; # we don't actually care if any lines matched or not - *) die "error reading \"$ldsoconf\"; fgrep exited with status" \ - "$fgrep_status" ;; - esac - set +e - cmp -s "$ldsoconf.dpkg-tmp" "$ldsoconf" - cmp_status=$? - set -e - case $cmp_status in - 0) rm "$ldsoconf.dpkg-tmp" ;; # files are identical - 1) mv "$ldsoconf.dpkg-tmp" "$ldsoconf" ;; # files differ - *) die "error comparing \"$ldsoconf.dpkg-tmp\" to \"$ldsoconf\";" \ - "cmp exited with status $cmp_status" ;; - esac - fi - fi -} - make_symlink_sane () { # syntax: make_symlink_sane symlink target # |