| 1 | #!/usr/bin/make -f |
| 2 | ############################################################################## |
| 3 | # Generic debian/rules file. Based on: |
| 4 | # |
| 5 | #> Sample debian.rules file - for GNU Hello (1.3). |
| 6 | #> Copyright 1994,1995 by Ian Jackson. |
| 7 | #> I hereby give you perpetual unlimited permission to copy, |
| 8 | #> modify and relicense this file, provided that you do not remove |
| 9 | #> my name from the file itself. (I assert my moral right of |
| 10 | #> paternity under the Copyright, Designs and Patents Act 1988.) |
| 11 | # |
| 12 | # Heavily modified by Joey Hess <joeyh@master.debian.org> |
| 13 | # |
| 14 | ############################################################################## |
| 15 | # |
| 16 | # NOTE: You shouldn't have to edit this file. Edit debian/config instead. |
| 17 | # If you must edit this file to get your package to build properly, then |
| 18 | # I have failed. Let me know; mail me. |
| 19 | # |
| 20 | # (Currently not handled: multiple binary packages from 1 source package, |
| 21 | # and binary-indep rule.) |
| 22 | # |
| 23 | # NOTE: This file is designed so it doesn't need to be run as root. For |
| 24 | # actions that require that the user be root, the root password will be |
| 25 | # prompted for, if you're not already root. |
| 26 | # |
| 27 | ############################################################################## |
| 28 | # |
| 29 | # Changelog: |
| 30 | # * Fakeroot and sudo fixes. |
| 31 | # * Run dpkg-gencontrol after debstd, and delete substvars during clean. |
| 32 | # * Clean up junk files in subdirs. |
| 33 | # * Modifications for multiple binary package support. |
| 34 | # * Call debstd after fixing file perms. |
| 35 | # * Don't pass package name to debstd + fixes for multi binary packages. |
| 36 | # * Use build-stamp instead of build. |
| 37 | # * New email address. |
| 38 | # * Added changelog. |
| 39 | # |
| 40 | ############################################################################## |
| 41 | |
| 42 | # Include config file. |
| 43 | include debian/config |
| 44 | |
| 45 | # Generate a makefile (via configure scriopt or xmkmf). |
| 46 | makefile-stamp: |
| 47 | ifeq ($(strip $(use_imakefile)),y) |
| 48 | xmkmf -a |
| 49 | endif |
| 50 | $(use_configure) |
| 51 | touch makefile-stamp |
| 52 | |
| 53 | # Preserve some files that may get deleted/overwritten/modified otherwise. |
| 54 | preserve-stamp: |
| 55 | ifneq ($(strip $(preserve_files)),) |
| 56 | $(foreach file,$(preserve_files),cp $(file) $(file).preserved ;) |
| 57 | endif |
| 58 | touch preserve-stamp |
| 59 | |
| 60 | build-stamp: preserve-stamp makefile-stamp |
| 61 | $(checkdir) |
| 62 | $(build_command) |
| 63 | touch build-stamp |
| 64 | |
| 65 | build: build-stamp |
| 66 | |
| 67 | clean: preserve-stamp makefile-stamp |
| 68 | $(checkdir) |
| 69 | # Do actual cleaning up here. |
| 70 | -rm -f build-stamp |
| 71 | $(clean_command) |
| 72 | -find . -name '\#*\#' -o -name '*~' -o -name 'DEADJOE' -exec rm -f {} \; |
| 73 | -rm -f debian/files* debian/substvars debian/*.substvars $(clean_files) |
| 74 | $(clean_tmp) |
| 75 | # Remove Makefile that xmkmf creates. |
| 76 | ifeq ($(strip $(use_imakefile)),y) |
| 77 | -rm -f Makefile |
| 78 | endif |
| 79 | # If we preserved some files, we need to restore them now. |
| 80 | ifneq ($(strip $(preserve_files)),) |
| 81 | $(foreach file,$(preserve_files),mv -f $(file).preserved $(file); ) |
| 82 | endif |
| 83 | -rm -f preserve-stamp makefile-stamp |
| 84 | |
| 85 | # Build architecture-independent files here. |
| 86 | # (not yet set up to be used) |
| 87 | binary-indep: build |
| 88 | $(checkdir) |
| 89 | |
| 90 | # Build architecture-dependent files here. |
| 91 | binary-arch: build |
| 92 | $(checkdir) |
| 93 | $(clean_tmp) |
| 94 | $(install_command) |
| 95 | # Set permissions and check package for problems, then build package. |
| 96 | @if [ "`whoami`" != root ]; then \ |
| 97 | echo -e "\n ** Enter root password to set file permissions."; \ |
| 98 | sudo debian/rules setperms; \ |
| 99 | else \ |
| 100 | debian/rules setperms; \ |
| 101 | fi |
| 102 | |
| 103 | # This must be run suid root, it sets the file permissions in debian/tmp |
| 104 | setperms: |
| 105 | chown -R root.root debian/tmp |
| 106 | chmod -R g-ws debian/tmp |
| 107 | # Debstd handles lots of nasty details. This requires that the debmake |
| 108 | # package is installed. |
| 109 | -debstd $(debstd) $(docs) |
| 110 | dpkg-gencontrol -p$(package) |
| 111 | $(ch_commands) |
| 112 | dpkg --build debian/tmp .. |
| 113 | |
| 114 | define checkdir |
| 115 | @test -e $(test_file) -a -f debian/rules || (echo -e "\n\ |
| 116 | ** \"$(test_file)\" or \"debian/rules\" does not exist.\n\ |
| 117 | ** Either the package is not unpacked in this directory, or\n\ |
| 118 | ** an incorrect test_file is specified in debian/config.\n" && false) |
| 119 | endef |
| 120 | |
| 121 | # This rm's the debian/tmp directory, and any other directories specified in |
| 122 | # tmpdirs |
| 123 | define clean_tmp |
| 124 | -rm -rf debian/tmp >/dev/null 2>&1 |
| 125 | @if [ -d debian/tmp -o -n "$(tmp_dirs)" ]; then \ |
| 126 | if [ "`whoami`" != root ]; then \ |
| 127 | echo -e "\n ** Enter root password to remove temporary directories $(tmp_dirs)"; \ |
| 128 | sudo rm -rf debian/tmp $(tmp_dirs); \ |
| 129 | else \ |
| 130 | rm -rf debian/tmp $(tmp_dirs); \ |
| 131 | fi; \ |
| 132 | fi |
| 133 | endef |
| 134 | |
| 135 | binary: binary-indep binary-arch |
| 136 | .PHONY: clean setperms binary |