~ubuntu-branches/ubuntu/oneiric/xserver-xorg-video-qxl/oneiric-updates

« back to all changes in this revision

Viewing changes to debian/xsfbs/xsfbs.mk

  • Committer: Bazaar Package Importer
  • Author(s): Liang Guo
  • Date: 2010-05-20 16:44:11 UTC
  • Revision ID: james.westby@ubuntu.com-20100520164411-pkuzh1xdcwkxlca8
Tags: 0.0.12-1
Initial release (Closes: #576642)  

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/make -f
 
2
 
 
3
# Debian X Strike Force Build System (XSFBS): Make portion
 
4
 
 
5
# Copyright 1996 Stephen Early
 
6
# Copyright 1997 Mark Eichin
 
7
# Copyright 1998-2005, 2007 Branden Robinson
 
8
# Copyright 2005 David Nusinow
 
9
#
 
10
# Licensed under the GNU General Public License, version 2.  See the file
 
11
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
 
12
 
 
13
# Originally by Stephen Early <sde1000@debian.org>
 
14
# Modified by Mark W. Eichin <eichin@kitten.gen.ma.us>
 
15
# Modified by Adam Heath <doogie@debian.org>
 
16
# Modified by Branden Robinson <branden@debian.org>
 
17
# Modified by Fabio Massimo Di Nitto <fabbione@fabbione.net>
 
18
# Modified by David Nusinow <dnusinow@debian.org>
 
19
# Acknowledgements to Manoj Srivastava.
 
20
 
 
21
# Pass $(DH_OPTIONS) into the environment for debhelper's benefit.
 
22
export DH_OPTIONS
 
23
 
 
24
# force quilt to not use ~/.quiltrc and to use debian/patches
 
25
QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null
 
26
 
 
27
# Set up parameters for the upstream build environment.
 
28
 
 
29
# Determine (source) package name from Debian changelog.
 
30
SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \
 
31
                        | grep '^Source:' | awk '{print $$2}')
 
32
 
 
33
# Determine package version from Debian changelog.
 
34
SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \
 
35
                        | grep '^Version:' | awk '{print $$2}')
 
36
 
 
37
# Determine upstream version number.
 
38
UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//')
 
39
 
 
40
# Determine the source version without the epoch for make-orig-tar-gz
 
41
NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://')
 
42
 
 
43
# Figure out who's building this package.
 
44
BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}})
 
45
 
 
46
# Find out if this is an official build; an official build has nothing but
 
47
# digits, dots, and/or the codename of a release in the Debian part of the
 
48
# version number.  Anything else indicates an unofficial build.
 
49
OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi)
 
50
 
 
51
# Set up parameters for the Debian build environment.
 
52
 
 
53
# Determine our architecture.
 
54
BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
 
55
# Work around some old-time dpkg braindamage.
 
56
BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH))
 
57
# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy.
 
58
ifdef DEB_HOST_ARCH
 
59
 ARCH:=$(DEB_HOST_ARCH)
 
60
else
 
61
 # dpkg-cross sets the ARCH environment variable; if set, use it.
 
62
 ifdef ARCH
 
63
  ARCH:=$(ARCH)
 
64
 else
 
65
  ARCH:=$(BUILD_ARCH)
 
66
 endif
 
67
endif
 
68
 
 
69
# $(STAMP_DIR) houses stamp files for complex targets.
 
70
STAMP_DIR:=stampdir
 
71
 
 
72
# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place
 
73
# their files.
 
74
DEBTREEDIR:=$(CURDIR)/debian/tmp
 
75
 
 
76
# All "important" targets have four lines:
 
77
#   1) A target name that is invoked by a package-building tool or the user.
 
78
#      This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart.
 
79
#   2) A line delcaring 1) as a phony target (".PHONY:").
 
80
#   3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may
 
81
#   depend on other targets.
 
82
#   4) A line declaring 3) as a member of the $(stampdir_targets) variable; the
 
83
#   "$(STAMP_DIR)/" prefix is omitted.
 
84
#
 
85
# This indirection is needed so that the "stamp" files that signify when a rule
 
86
# is done can be located in a separate "stampdir".  Recall that make has no way
 
87
# to know when a goal has been met for a phony target (like "build" or
 
88
# "install").
 
89
#
 
90
# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@"
 
91
# so that the target will not be run again.  Removing the file will make Make
 
92
# run the target over.
 
93
 
 
94
# All phony targets should be declared as dependencies of .PHONY, even if they
 
95
# do not have "($STAMP_DIR)/"-prefixed counterparts.
 
96
 
 
97
# Define a harmless default rule to keep things from going nuts by accident.
 
98
.PHONY: default
 
99
default:
 
100
 
 
101
# Set up the $(STAMP_DIR) directory.
 
102
.PHONY: stampdir
 
103
stampdir_targets+=stampdir
 
104
stampdir: $(STAMP_DIR)/stampdir
 
105
$(STAMP_DIR)/stampdir:
 
106
        mkdir $(STAMP_DIR)
 
107
        >$@
 
108
 
 
109
# Set up the package build directory as quilt expects to find it.
 
110
.PHONY: prepare
 
111
stampdir_targets+=prepare
 
112
prepare: $(STAMP_DIR)/prepare
 
113
$(STAMP_DIR)/prepare: $(STAMP_DIR)/logdir $(STAMP_DIR)/genscripts
 
114
        >$@
 
115
 
 
116
.PHONY: logdir
 
117
stampdir_targets+=logdir
 
118
logdir: $(STAMP_DIR)/logdir
 
119
$(STAMP_DIR)/logdir: $(STAMP_DIR)/stampdir
 
120
        mkdir -p $(STAMP_DIR)/log
 
121
        >$@
 
122
 
 
123
# Apply all patches to the upstream source.
 
124
.PHONY: patch
 
125
stampdir_targets+=patch
 
126
patch: $(STAMP_DIR)/patch
 
127
$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
 
128
        if ! [ `which quilt` ]; then \
 
129
                echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \
 
130
                exit 1; \
 
131
        fi; \
 
132
        if $(QUILT) next >/dev/null 2>&1; then \
 
133
          echo -n "Applying patches..."; \
 
134
          if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \
 
135
            cat $(STAMP_DIR)/log/patch; \
 
136
            echo "successful."; \
 
137
          else \
 
138
            cat $(STAMP_DIR)/log/patch; \
 
139
            echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
 
140
            exit 1; \
 
141
          fi; \
 
142
        else \
 
143
          echo "No patches to apply"; \
 
144
        fi; \
 
145
        >$@
 
146
 
 
147
# Revert all patches to the upstream source.
 
148
.PHONY: unpatch
 
149
unpatch: $(STAMP_DIR)/logdir
 
150
        rm -f $(STAMP_DIR)/patch
 
151
        @echo -n "Unapplying patches..."; \
 
152
        if $(QUILT) applied >/dev/null 2>/dev/null; then \
 
153
          if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
 
154
            cat $(STAMP_DIR)/log/unpatch; \
 
155
            echo "successful."; \
 
156
          else \
 
157
            cat $(STAMP_DIR)/log/unpatch; \
 
158
            echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \
 
159
            exit 1; \
 
160
          fi; \
 
161
        else \
 
162
          echo "nothing to do."; \
 
163
        fi
 
164
 
 
165
# Clean the generated maintainer scripts.
 
166
.PHONY: cleanscripts
 
167
cleanscripts:
 
168
        rm -f $(STAMP_DIR)/genscripts
 
169
        rm -f debian/*.config \
 
170
              debian/*.postinst \
 
171
              debian/*.postrm \
 
172
              debian/*.preinst \
 
173
              debian/*.prerm
 
174
 
 
175
# Clean the package build tree.
 
176
.PHONY: xsfclean
 
177
xsfclean: cleanscripts unpatch
 
178
        dh_testdir
 
179
        rm -rf .pc
 
180
        rm -rf $(STAMP_DIR)
 
181
        dh_clean
 
182
 
 
183
# Remove files from the upstream source tree that we don't need, or which have
 
184
# licensing problems.  It must be run before creating the .orig.tar.gz.
 
185
#
 
186
# Note: This rule is for Debian package maintainers' convenience, and is not
 
187
# needed for conventional build scenarios.
 
188
.PHONY: prune-upstream-tree
 
189
prune-upstream-tree:
 
190
        # Ensure we're in the correct directory.
 
191
        dh_testdir
 
192
        grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf
 
193
 
 
194
# Verify that there are no offsets or fuzz in the patches we apply.
 
195
#
 
196
# Note: This rule is for Debian package maintainers' convenience, and is not
 
197
# needed for conventional build scenarios.
 
198
.PHONY: patch-audit
 
199
patch-audit: prepare unpatch
 
200
        @echo -n "Auditing patches..."; \
 
201
        >$(STAMP_DIR)/log/patch; \
 
202
        FUZZY=; \
 
203
        while [ -n "$$($(QUILT) next)" ]; do \
 
204
          RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\
 
205
          case "$$RESULT" in \
 
206
            succeeded) \
 
207
              echo "fuzzy patch: $$($(QUILT) top)" \
 
208
                | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \
 
209
              FUZZY=yes; \
 
210
              ;; \
 
211
            FAILED) \
 
212
              echo "broken patch: $$($(QUILT) next)" \
 
213
                | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \
 
214
              exit 1; \
 
215
              ;; \
 
216
          esac; \
 
217
        done; \
 
218
        if [ -n "$$FUZZY" ]; then \
 
219
          echo "there were fuzzy patches; please fix."; \
 
220
          exit 1; \
 
221
        else \
 
222
          echo "done."; \
 
223
        fi
 
224
 
 
225
# Generate the maintainer scripts.
 
226
.PHONY: genscripts
 
227
stampdir_targets+=genscripts
 
228
genscripts: $(STAMP_DIR)/genscripts
 
229
$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir
 
230
        for FILE in debian/*.config.in \
 
231
                    debian/*.postinst.in \
 
232
                    debian/*.postrm.in \
 
233
                    debian/*.preinst.in \
 
234
                    debian/*.prerm.in; do \
 
235
          if [ -e "$$FILE" ]; then \
 
236
            MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \
 
237
            sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \
 
238
              | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \
 
239
            cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \
 
240
            sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \
 
241
              | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \
 
242
            sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \
 
243
                -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \
 
244
              <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \
 
245
            rm $$MAINTSCRIPT.tmp; \
 
246
          fi; \
 
247
        done
 
248
        # Validate syntax of generated shell scripts.
 
249
        #sh debian/scripts/validate-posix-sh debian/*.config \
 
250
        #                                    debian/*.postinst \
 
251
        #                                    debian/*.postrm \
 
252
        #                                    debian/*.preinst \
 
253
        #                                    debian/*.prerm
 
254
        >$@
 
255
 
 
256
# Compute dependencies for drivers
 
257
#
 
258
VIDEODEP = $(shell cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null)
 
259
INPUTDEP = $(shell cat /usr/share/xserver-xorg/xinputdep 2>/dev/null)
 
260
 
 
261
# these two can be removed post-squeeze
 
262
VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null)
 
263
INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null)
 
264
VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI), xorg-driver-video
 
265
INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI), xorg-driver-input
 
266
 
 
267
ifeq ($(PACKAGE),)
 
268
PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control)
 
269
endif
 
270
 
 
271
.PHONY: serverabi
 
272
serverabi: install
 
273
ifeq ($(VIDEODEP),)
 
274
        @echo 'error: xserver-xorg-dev >= 1.7.6.901 needs to be installed'
 
275
        @exit 1
 
276
else
 
277
        echo "xviddriver:Depends=$(VIDEODEP)" >> debian/$(PACKAGE).substvars
 
278
        echo "xinpdriver:Depends=$(INPUTDEP)" >> debian/$(PACKAGE).substvars
 
279
        # the following is there for compatibility...
 
280
        echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
 
281
        echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
 
282
        echo "xserver:Depends=$(VIDEODEP), $(INPUTDEP)" >> debian/$(PACKAGE).substvars
 
283
endif
 
284
 
 
285
# vim:set noet ai sts=8 sw=8 tw=0: