~saiarcot895/chromium-browser/chromium-browser.vivid.dev

« back to all changes in this revision

Viewing changes to debian/rules

  • Committer: Saikrishna Arcot
  • Date: 2013-03-08 22:57:16 UTC
  • Revision ID: saiarcot895@gmail.com-20130308225716-1c60fatbyjqc4d2j
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/make -f
 
2
 
 
3
DEBIAN_NAME             := $(shell dpkg-parsechangelog | sed -n 's/^Source: *\(.*\)$$/\1/ p')
 
4
DEBIAN_VERSION          := $(shell dpkg-parsechangelog | sed -n 's/^Version: *\(.*\)$$/\1/ p')
 
5
DEBIAN_UPSTREAM_VERSION := $(shell echo $(DEBIAN_VERSION) | sed 's/^\(.*\)-[^-]*$$/\1/')
 
6
DEBIAN_REVISION         := $(shell echo $(DEBIAN_VERSION) | sed 's/^.*r\([^-]*\)-.*/\1/')
 
7
DEBIAN_DIST             := $(shell lsb_release -ds | tr -d '()')
 
8
DEBIAN_DIST_NAME        := $(shell lsb_release -si)
 
9
DEBIAN_DIST_VERSION     := $(shell lsb_release -sr)
 
10
DEBIAN_CODECS_NAME      := $(subst browser,codecs-ffmpeg,$(DEBIAN_NAME))
 
11
 
 
12
# DEB_TAR_SRCDIR has to be 'src' as this is what gyp expects :(
 
13
DEB_TAR_SRCDIR := src
 
14
SRC_DIR        := $(CURDIR)/$(DEB_TAR_SRCDIR)
 
15
LIB_DIR        := usr/lib/$(DEBIAN_NAME)
 
16
DEB_BUILDDIR   := $(SRC_DIR)
 
17
 
 
18
# Whitelist LP provided new langs only in release builds, PPAs ship them all
 
19
WANT_ONLY_WHITELISTED_NEW_LANGS ?= 1
 
20
 
 
21
WANT_XZ_DEBS     ?= 1
 
22
WANT_DEBUG       := 0
 
23
WANT_SYSTEM_LIBS ?= 0
 
24
WANT_SHARED_LIBS ?= 0
 
25
WANT_SANDBOXING  ?= 1
 
26
USE_SYSTEM_V8    ?= 0
 
27
VERBOSE          ?= 0
 
28
PROCESSORS       ?= $(shell grep -ic ^processor /proc/cpuinfo)
 
29
ifeq (0,$(PROCESSORS))
 
30
PROCESSORS := 1
 
31
endif
 
32
 
 
33
# Enable the hardening wrapper (See https://wiki.ubuntu.com/Security/HardeningWrapper)
 
34
# Don't do it on maverick/armel either for now, it fails to link
 
35
# Don't do it on lucid/armel either, it crashes: LP #716703
 
36
ifeq (armel,$(DEB_BUILD_ARCH))
 
37
ifeq (,$(filter 10.04 10.10 11.04 11.10 12.04 12.10 13.04,$(DEBIAN_DIST_VERSION)))
 
38
export DEB_BUILD_HARDENING=1
 
39
else
 
40
$(warning ## Not enabling DEB_BUILD_HARDENING on Ubuntu 10.04+ armel. See LP #641126 and LP #716703)
 
41
endif
 
42
endif
 
43
$(warning ## DEB_BUILD_HARDENING=$(DEB_BUILD_HARDENING))
 
44
 
 
45
# Disable SSE2
 
46
GYP_DEFINES = disable_sse2=1
 
47
 
 
48
# Build the launchpad translations (already landed upstream)
 
49
GYP_DEFINES += use_third_party_translations=0
 
50
# Also merges the newer translations from launchpad
 
51
#WANT_LP_TRANSLATIONS ?= 1
 
52
 
 
53
# Only keep -Werror when building for the Debian or Ubuntu development branches
 
54
ifeq (,$(filter unstable development,$(DEBIAN_DIST)))
 
55
GYP_DEFINES += werror=$(NULL)
 
56
endif
 
57
 
 
58
# Disable NaCl until we figure out what to do with the private toolchain
 
59
GYP_DEFINES += disable_nacl=1
 
60
 
 
61
# do not use third_party/gold as the linker.
 
62
GYP_DEFINES += linux_use_gold_binary=0 linux_use_gold_flags=0
 
63
 
 
64
ifneq (,$(findstring armhf,$(DEB_BUILD_ARCH)))
 
65
GYP_DEFINES += \
 
66
        v8_use_arm_eabi_hardfloat=true \
 
67
        arm_float_abi=hard \
 
68
        $(NULL)
 
69
endif
 
70
 
 
71
ifneq (,$(findstring arm,$(DEB_BUILD_ARCH)))
 
72
GYP_DEFINES += \
 
73
        arm_thumb=1 \
 
74
        arm_neon=0 \
 
75
        arm_fpu=vfpv3-d16 \
 
76
        target_arch=arm \
 
77
        disable_nacl=1 \
 
78
        linux_use_tcmalloc=0 \
 
79
        use_libjpeg_turbo=0 \
 
80
        use_cups=0 \
 
81
        $(NULL)
 
82
WANT_XZ_DEBS := 0
 
83
ifneq (,$(filter 10.10 11.04 11.10 12.04 12.10 unstable development,$(DEBIAN_DIST)))
 
84
# on $(DEB_BUILD_ARCH) and $(DEBIAN_DIST), enforce an armv7 with thumb build (or not)
 
85
GYP_DEFINES += \
 
86
        armv7=1 \
 
87
        $(NULL)
 
88
endif
 
89
else
 
90
ifeq (amd64,$(DEB_BUILD_ARCH))
 
91
GYP_DEFINES += target_arch=x64
 
92
else
 
93
ifeq (i386,$(DEB_BUILD_ARCH))
 
94
GYP_DEFINES += target_arch=ia32
 
95
else
 
96
$(warning unsupported target arch $(DEB_BUILD_ARCH) - continuing anyway)
 
97
endif
 
98
endif
 
99
endif
 
100
 
 
101
# Don't let dh_installinit install *.default in /etc/default
 
102
DEB_DH_INSTALLINIT_ARGS += --noscripts --onlyscripts
 
103
 
 
104
# Don't let scour touch the svg files
 
105
DEB_DH_SCOUR_ARGS += -Xsvg
 
106
 
 
107
# Use lzma instead of gzip inside the debs (passed to dpkg-deb)
 
108
ifeq (1,$(WANT_XZ_DEBS))
 
109
DEB_DH_BUILDDEB_ARGS += -- -Z xz
 
110
endif
 
111
 
 
112
ifeq (1,$(WANT_DEBUG))
 
113
BUILD_TYPE := Debug
 
114
else
 
115
BUILD_TYPE := Release
 
116
# Add symbols
 
117
BUILD_ARGS += SYMBOLS=1
 
118
endif
 
119
BUILD_ARGS += BUILDTYPE=$(BUILD_TYPE)
 
120
 
 
121
# Verbose?
 
122
ifeq (1,$(VERBOSE))
 
123
BUILD_ARGS += V=1
 
124
endif
 
125
 
 
126
# Shared libraries
 
127
ifeq (1,$(WANT_SHARED_LIBS))
 
128
GYP_DEFINES += library=shared_library
 
129
endif
 
130
 
 
131
# Use upstream build flags (defined in build/common.gypi)
 
132
BUILD_ARGS += CFLAGS="" CXXFLAGS="" CPPFLAGS="" LDFLAGS=""
 
133
 
 
134
CC_VERSION   := $(shell gcc -dumpversion | cut -d. -f-2)
 
135
 
 
136
# Set this to use gcc 4.6 instead of 4.7
 
137
AVOID_GCC_47 ?= 0
 
138
ifeq (4.7,$(CC_VERSION))
 
139
GYP_DEFINES += werror=$(NULL)
 
140
ifeq (1,$(AVOID_GCC_47))
 
141
CC  := gcc-4.6
 
142
CXX := g++-4.6
 
143
BUILD_ARGS += CC=$(CC) CXX=$(CXX) CC.host=$(CC) CXX.host=$(CXX) LINK.host=$(CXX)
 
144
endif
 
145
endif
 
146
 
 
147
subst_files = \
 
148
        debian/$(DEBIAN_NAME).sh \
 
149
        debian/patches/chromium_useragent.patch \
 
150
        $(NULL)
 
151
 
 
152
clean::
 
153
        rm -f debian/*-stamp debian/stamp-* debian/tmp-*
 
154
        rm -f $(subst_files) *.cdbs-config_list
 
155
        rm -rf third_party chrome src/out
 
156
#       cd src && find . -name "Makefile" -print0 | xargs -0 rm -f
 
157
#       cd src && find . -name "*.mk" -print0 | xargs -0 rm -f
 
158
 
 
159
        dh_clean
 
160
 
 
161
ifneq (1,$(PROCESSORS))
 
162
BUILD_ARGS += -j$(PROCESSORS)
 
163
endif
 
164
 
 
165
INSTALL_EXCLUDE_DIRS = \
 
166
        obj \
 
167
        obj.target \
 
168
        obj.host \
 
169
        .deps \
 
170
        calendar_app \
 
171
        docs_app \
 
172
        gmail_app \
 
173
        pyproto \
 
174
        pseudo_locales \
 
175
        $(NULL)
 
176
 
 
177
INSTALL_EXCLUDE_FILES = \
 
178
        chrome-wrapper \
 
179
        product_logo_48.png \
 
180
        libnpapi_layout_test_plugin.so \
 
181
        libnpapi_test_plugin.so \
 
182
        mksnapshot \
 
183
        ncdecode_table \
 
184
        ncdecode_tablegen \
 
185
        ssl_false_start_blacklist_process \
 
186
        protoc \
 
187
        gfx_unittests \
 
188
        linker.lock \
 
189
        genmacro \
 
190
        genmodule \
 
191
        genperf \
 
192
        genstring \
 
193
        genversion \
 
194
        re2c \
 
195
        yasm \
 
196
        libvpx_obj_int_extract \
 
197
        $(NULL)
 
198
 
 
199
# FFmpeg-mt
 
200
# Don't build it as part of chromium. Build it separately twice, once with
 
201
# the Chrome branding to gain the extra codecs, and once without branding.
 
202
# The ffmpeg_branding variable controls which codecs are built inside the sumo lib.
 
203
# By default, ffmpeg_branding equals to "Chromium" and only builds the ogg/vorbis/theora codecs.
 
204
# When set to "Chrome", it also builds aac/ac3/mpeg4audio/h264/mov/mp3
 
205
DEB_DH_SHLIBDEPS_ARGS_$(DEBIAN_CODECS_NAME) := -l$(CURDIR)/debian/$(DEBIAN_CODECS_NAME)/$(LIB_DIR)
 
206
DEB_DH_SHLIBDEPS_ARGS_$(DEBIAN_CODECS_NAME)-extra := -l$(CURDIR)/debian/$(DEBIAN_CODECS_NAME)-extra/$(LIB_DIR)
 
207
BROWSER_GYP_DEFINES += \
 
208
        proprietary_codecs=1 \
 
209
        build_ffmpegsumo=0 \
 
210
        $(NULL)
 
211
FFMPEG_MT_GYP_DEFINES = \
 
212
        use_system_vpx=0 \
 
213
        release_extra_cflags=-g \
 
214
        $(NULL)
 
215
FFMPEG_MT_STD_GYP_DEFINES   = $(NULL)
 
216
FFMPEG_MT_EXTRA_GYP_DEFINES = ffmpeg_branding=Chrome
 
217
 
 
218
ifneq (,$(filter 12.10 unstable development,$(DEBIAN_DIST)))
 
219
# enable compile-time dependency on gnome-keyring
 
220
GYP_DEFINES += use_gnome_keyring=1 linux_link_gnome_keyring=1
 
221
# controlling the use of GConf (the classic GNOME configuration
 
222
# and GIO, which contains GSettings (the new GNOME config system)
 
223
GYP_DEFINES += use_gconf=1 use_gio=1
 
224
endif
 
225
 
 
226
USE_SYSTEM_SQLITE := $(shell pkg-config 'sqlite3 >= 3.6.1' && echo 1 || echo 0)
 
227
USE_SYSTEM_SQLITE := 0
 
228
 
 
229
# System libs
 
230
ifeq (1,$(WANT_SYSTEM_LIBS))
 
231
GYP_DEFINES += \
 
232
        use_system_bzip2=1 \
 
233
        use_system_libjpeg=1 \
 
234
        use_system_libpng=1 \
 
235
        use_system_sqlite=$(USE_SYSTEM_SQLITE) \
 
236
        use_system_libxml=0 \
 
237
        use_system_libxslt=1 \
 
238
        $(NULL)
 
239
endif
 
240
 
 
241
# Build everything (like All), including test programs but minus things we don't
 
242
# want (breakpad, courgette, ..) or don't need (the other small tools)
 
243
BUILD_TARGETS += \
 
244
        chrome \
 
245
        chrome_sandbox \
 
246
        $(NULL)
 
247
 
 
248
ifeq (1,$(WANT_SANDBOXING))
 
249
GYP_DEFINES += \
 
250
        linux_sandbox_path=/$(LIB_DIR)/$(DEBIAN_NAME)-sandbox \
 
251
        linux_sandbox_chrome_path=/$(LIB_DIR)/$(DEBIAN_NAME) \
 
252
        $(NULL)
 
253
 
 
254
# needed to preserve the suid and make the sandbox happy
 
255
DEB_FIXPERMS_EXCLUDE := $(DEBIAN_NAME)-sandbox
 
256
endif
 
257
 
 
258
# use system v8
 
259
ifeq (1,$(USE_SYSTEM_V8))
 
260
GYP_DEFINES += \
 
261
        javascript_engine=system-v8 \
 
262
        $(NULL)
 
263
endif
 
264
 
 
265
######
 
266
DO = (touch r1; echo '$(1)'; $(1); touch r2 ; T1=`date -r r1 +%s` ; T2=`date -r r2 +%s`; echo "PERF: '$(2)' built in "`expr $$T2 - $$T1`" sec"; rm -f r1 r2;)
 
267
 
 
268
%:: %.in
 
269
        sed -e 's/@BUILD_DIST@/$(DEBIAN_DIST_NAME) $(DEBIAN_DIST_VERSION)/g' \
 
270
            -e 's/@BUILD_DIST_NAME@/$(DEBIAN_DIST_NAME)/g' \
 
271
            -e 's/@BUILD_DIST_VERSION@/$(DEBIAN_DIST_VERSION)/g' \
 
272
            < $< > $@
 
273
 
 
274
DEB_MAKE_EXTRA_ARGS   := $(NULL)
 
275
DEB_MAKE_BUILD_TARGET := $(BUILD_ARGS) $(BUILD_TARGETS) || ( $(KEEPALIVE) stop ; exit 1 )
 
276
 
 
277
GYP_ENV := GYP_GENERATORS=make
 
278
ifneq (,$(GYP_DEFINES))
 
279
        GYP_ENV += GYP_DEFINES="$(GYP_DEFINES) $(BROWSER_GYP_DEFINES)"
 
280
endif
 
281
 
 
282
configure: configure-stamp
 
283
configure-stamp:
 
284
        dh_testdir
 
285
        
 
286
        sed -i 's,/etc/chromium/policies,/etc/$(DEBIAN_NAME)/policies,' \
 
287
                $(DEB_TAR_SRCDIR)/chrome/common/chrome_paths.cc
 
288
        
 
289
        cd $(SRC_DIR) && $(GYP_ENV) python build/gyp_chromium --no-circular-check build/all.gyp
 
290
        touch $@
 
291
        # Populate the LASTCHANGE file template as we no longer have the VCS files at this point
 
292
        echo "$(DEBIAN_REVISION)" > $(SRC_DIR)/build/LASTCHANGE.in
 
293
 
 
294
build: configure-stamp build-stamp
 
295
build-stamp: configure-stamp
 
296
        $(MAKE) -C $(SRC_DIR) $(BUILD_ARGS) $(BUILD_TARGETS)
 
297
        build-stamp-ffmpeg-std
 
298
        build-stamp-ffmpeg-extra
 
299
        touch $@
 
300
 
 
301
binary-indep: build install
 
302
 
 
303
binary-arch: build install
 
304
        dh_testdir
 
305
        dh_testroot
 
306
 
 
307
        dh_install
 
308
 
 
309
        #dh_installdocs
 
310
        #dh_installmenu
 
311
        #dh_installchangelogs ChangeLog
 
312
        dh_strip
 
313
        dh_compress
 
314
        dh_fixperms
 
315
        dh_installdeb
 
316
        dh_shlibdeps
 
317
        dh_gencontrol
 
318
        dh_md5sums
 
319
        dh_builddeb
 
320
 
 
321
binary: binary-indep binary-arch
 
322
 
 
323
configure-stamp-ffmpeg-%:
 
324
        rm -rf $(FFMPEG_SRC_DIR)/*.mk $(FFMPEG_SRC_DIR)/out
 
325
        cd $(SRC_DIR) && GYP_DEFINES="$(GYP_DEFINES)" GYP_GENERATORS=make build/gyp_chromium --depth=../src $(FFMPEG_DIR)/ffmpeg.gyp
 
326
        touch $@
 
327
 
 
328
build-stamp-ffmpeg-%:
 
329
        GYP_DEFINES += $(FFMPEG_MT_$(subst std,STD,$(subst extra,EXTRA,$*))_GYP_DEFINES) $(FFMPEG_MT_GYP_DEFINES)
 
330
        FFMPEG_DIR = third_party/ffmpeg
 
331
        FFMPEG_SRC_DIR = $(SRC_DIR)/$(FFMPEG_DIR)
 
332
        BUILD_ARGS += CFLAGS="" CXXFLAGS="" CPPFLAGS="" LDFLAGS=""
 
333
        configure-stamp-ffmpeg-%
 
334
        cd $(FFMPEG_SRC_DIR) ; $(MAKE) -f ffmpeg.Makefile $(BUILD_ARGS)
 
335
        install -d -m 755 $(CURDIR)/debian/tmp-$*/$(LIB_DIR)
 
336
        install -m 644 $(FFMPEG_SRC_DIR)/out/$(BUILD_TYPE)/libffmpegsumo.so $(CURDIR)/debian/tmp-$*/$(LIB_DIR)
 
337
        touch $@
 
338
 
 
339
install: build
 
340
        dh_testdir
 
341
        dh_testroot
 
342
        dh_prep
 
343
        
 
344
        dh_installdirs --package=chromium-browser $(LIB_DIR)
 
345
        ( cd $(SRC_DIR)/out/$(BUILD_TYPE) && cp -r !($(shell echo $(INSTALL_EXCLUDE_DIRS) $(INSTALL_EXCLUDE_FILES) | tr ' ' '||')) debian/chromium-browser/$(LIB_DIR))
 
346
        # Launcher script
 
347
        dh_installdirs --package=chromium-browser usr/bin
 
348
        cp -a debian/$(DEBIAN_NAME).sh debian/chromium-browser/usr/bin/$(DEBIAN_NAME)
 
349
        chmod 755 debian/chromium-browser/usr/bin/$(DEBIAN_NAME)
 
350
        # Preferences
 
351
        dh_installdirs --package=chromium-browser etc/$(DEBIAN_NAME)
 
352
        cp -a debian/$(DEBIAN_NAME).default debian/chromium-browser/etc/$(DEBIAN_NAME)/default
 
353
        # Rename the binary from chrome to $(DEBIAN_NAME), this is required
 
354
        # as chromium dereferences all symlinks before starting its children
 
355
        # making the Gnome System Monitor confused with icons
 
356
        mv debian/chromium-browser/$(LIB_DIR)/chrome debian/chromium-browser/$(LIB_DIR)/$(DEBIAN_NAME)
 
357
        mv debian/chromium-browser/$(LIB_DIR)/chrome_sandbox debian/chromium-browser/$(LIB_DIR)/$(DEBIAN_NAME)-sandbox
 
358
        # Manpage
 
359
        mv debian/chromium-browser/$(LIB_DIR)/chrome.1 debian/chromium-browser/$(LIB_DIR)/chromium-browser.1
 
360
        dh_installman -package=chromium-browser debian/chromium-browser/$(LIB_DIR)/chromium-browser.1
 
361
        rm -f debian/chromium-browser/$(LIB_DIR)/chromium-browser.1
 
362
        # Icons
 
363
        dh_installdirs --package=chromium-browser usr/share/pixmaps
 
364
        cp -a $(DEB_TAR_SRCDIR)/chrome/app/theme/chromium/product_logo_48.png debian/chromium-browser/usr/share/pixmaps/$(DEBIAN_NAME).png
 
365
        for size in 16 22 24 32 48 64 128 256 ; do \
 
366
          dh_installdirs --package=chromium-browser usr/share/icons/hicolor/$${size}x$${size}/apps ; \
 
367
          cp -a $(DEB_TAR_SRCDIR)/chrome/app/theme/chromium/product_logo_$$size.png  \
 
368
            debian/chromium-browser/usr/share/icons/hicolor/$${size}x$${size}/apps/chromium-browser.png ; \
 
369
        done
 
370
        dh_installdirs --package=chromium-browser usr/share/icons/hicolor/scalable/apps
 
371
        cp -a debian/chromium-browser.svg debian/chromium-browser/usr/share/icons/hicolor/scalable/apps
 
372
ifeq (1,$(WANT_SANDBOXING))
 
373
        chmod 4755 debian/$(DEBIAN_NAME)/$(LIB_DIR)/chromium-browser-sandbox
 
374
else
 
375
        rm -vf debian/$(DEBIAN_NAME)/$(LIB_DIR)/chromium-browser-sandbox
 
376
endif
 
377
        # NaCL may be blacklisted, so only include it when it's been built
 
378
#ifeq (,$(filter disable_nacl=1,$(GYP_DEFINES)))
 
379
#       cp -a debian/tmp/$(LIB_DIR)/libppGoogleNaClPluginChrome.so debian/chromium-browser/$(LIB_DIR)/
 
380
#       cp -a debian/tmp/$(LIB_DIR)/nacl_irt_* debian/chromium-browser/$(LIB_DIR)/
 
381
#endif
 
382
        # Locales: only keep en-US in the main deb
 
383
#       cd debian/chromium-browser/$(LIB_DIR)/locales && \
 
384
#         rm -f $(filter-out en-US.pak,$(notdir $(wildcard debian/chromium-browser/$(LIB_DIR)/locales/*)))
 
385
        
 
386
        dh_installdirs --package=chromium-codecs-ffmpeg $(LIB_DIR)
 
387
        cp debian/tmp-std/libffmpegsumo.so debian/chromium-codecs-ffmpeg/$(LIB_DIR)
 
388
        
 
389
        dh_installdirs --package=chromium-codecs-ffmpeg-extra $(LIB_DIR)
 
390
        cp debian/tmp-extra/libffmpegsumo.so debian/chromium-codecs-ffmpeg-extra/$(LIB_DIR)
 
391
 
 
392
        
 
393
 
 
394
# Compare
 
395
PKG_DIRS = $(addprefix debian/,$(shell grep ^Package debian/control | cut -d' ' -f2))
 
396
 
 
397
binary-predeb/$(DEBIAN_NAME):
 
398
ifneq (,$(findstring Ubuntu,$(DEBIAN_DIST)))
 
399
        # we need space on the CD, so remove duplicates of the doc files
 
400
        # (See LP: #194574 as for why we don't let cdbs do it)
 
401
        @for doc in copyright AUTHORS changelog.Debian.gz ; do \
 
402
          F=debian/$(DEBIAN_NAME)/usr/share/doc/$(DEBIAN_NAME)/$$doc ; \
 
403
          for file in `find $(addsuffix /usr/share/doc,$(filter-out debian/$(DEBIAN_NAME),$(PKG_DIRS))) -type f -name $$doc -print`; do \
 
404
            cmp -s $$file $$F ; \
 
405
            if [ $$? -eq 0 ] ; then \
 
406
              rm -f $$file ; \
 
407
              echo "  symlinking $$doc in '"`echo $$file | awk 'BEGIN{ FS="/"} { print $$2 }'`"' to file in '$(DEBIAN_NAME)'" ; \
 
408
              ( cd `dirname $$file` ; ln -s ../$(DEBIAN_NAME)/$$doc ) ; \
 
409
            fi ; \
 
410
          done ; \
 
411
        done
 
412
endif
 
413
 
 
414
###############################################################################################
 
415
 
 
416
# Tarball (get-orig-source & get-current-source)
 
417
GCLIENT_URL  := http://src.chromium.org/svn/trunk/tools/depot_tools
 
418
CHROMIUM_URL := http://src.chromium.org/svn/trunk/src
 
419
CHROMIUM_RLZ := http://src.chromium.org/svn/releases
 
420
DEPS_URL     := http://src.chromium.org/svn/trunk/deps/third_party
 
421
GREEN_REV_URL := http://chromium-status.appspot.com/lkgr
 
422
CHANNELS_URL  := http://omahaproxy.appspot.com/
 
423
 
 
424
TRANSLATIONS_TOOLS_BRANCH  := lp:~chromium-team/chromium-browser/chromium-translations-tools.head
 
425
TRANSLATIONS_EXPORT_BRANCH := lp:~chromium-team/chromium-browser/chromium-translations-exports.head
 
426
GRIT_TEMPLATES := \
 
427
        chrome/app/chromium_strings.grd \
 
428
        chrome/app/generated_resources.grd \
 
429
        chrome/app/policy/policy_templates.grd \
 
430
        ui/base/strings/ui_strings.grd \
 
431
        webkit/glue/inspector_strings.grd \
 
432
        webkit/glue/webkit_strings.grd \
 
433
        $(NULL)
 
434
OTHER_GRIT_TEMPLATES := \
 
435
        ui/base/strings/app_locale_settings.grd \
 
436
        chrome/app/resources/locale_settings.grd \
 
437
        chrome/app/resources/locale_settings_linux.grd \
 
438
        $(NULL)
 
439
MAPPED_GRIT_TEMPLATES := \
 
440
        --map-template-names ui/base/strings/ui_strings.grd=ui/base/strings/app_strings.grd \
 
441
        $(NULL)
 
442
 
 
443
# New langs with enough coverage to land in official builds
 
444
# (leave empty to accept all new lang)
 
445
GRIT_WHITELISTED_LANGS ?= \
 
446
        ar \
 
447
        bg \
 
448
        bn \
 
449
        ca \
 
450
        ca@valencia \
 
451
        cs \
 
452
        da \
 
453
        de \
 
454
        el \
 
455
        en_AU \
 
456
        en_GB \
 
457
        et \
 
458
        eu \
 
459
        es \
 
460
        fil \
 
461
        fi \
 
462
        fr \
 
463
        gl \
 
464
        gu \
 
465
        he \
 
466
        hi \
 
467
        hr \
 
468
        hu \
 
469
        id \
 
470
        it \
 
471
        ja \
 
472
        kn \
 
473
        ko \
 
474
        lv \
 
475
        lt \
 
476
        ml \
 
477
        ms \
 
478
        mr \
 
479
        nb \
 
480
        nl \
 
481
        ro \
 
482
        ru \
 
483
        sr \
 
484
        sk \
 
485
        sl \
 
486
        sv \
 
487
        ta \
 
488
        te \
 
489
        tr \
 
490
        ug \
 
491
        uk \
 
492
        vi \
 
493
        zh_CN \
 
494
        zh_TW \
 
495
        $(NULL)
 
496
 
 
497
GRIT_CONVERTER_FLAGS := \
 
498
        --create-patches translations-patches \
 
499
        --import-gettext ../translations-export \
 
500
        --export-grit ../translations-grit \
 
501
        --build-gyp-file build/common.gypi \
 
502
        --other-grd-files $(shell echo $(OTHER_GRIT_TEMPLATES) | tr ' ' ',') \
 
503
        $(MAPPED_GRIT_TEMPLATES) \
 
504
        $(NULL)
 
505
        
 
506
ifeq (1,$(WANT_ONLY_WHITELISTED_NEW_LANGS))
 
507
GRIT_CONVERTER_FLAGS += --whitelisted-new-langs $(shell echo $(GRIT_WHITELISTED_LANGS) | tr ' ' ',')
 
508
endif
 
509
 
 
510
# See Staying Green More Of The Time at http://dev.chromium.org/developers/how-tos/get-the-code
 
511
USE_GREEN_REV ?= 1
 
512
 
 
513
STRIP_TARBALL ?= 1
 
514
 
 
515
STRIPPED_DIRS_FROM_CO := \
 
516
        src/chrome/tools/test/reference_build \
 
517
        src/chrome/tools/test/reference_build/chrome_linux \
 
518
        src/webkit/data/layout_tests/LayoutTests \
 
519
        src/third_party/WebKit/LayoutTests \
 
520
        src/third_party/ffmpeg/binaries/chromium/linux/ia32 \
 
521
        src/third_party/ffmpeg/binaries/chromium/linux/ia32_dbg \
 
522
        src/third_party/ffmpeg/binaries/chromium/linux/x64 \
 
523
        src/third_party/ffmpeg/binaries/chromium/linux/x64_dbg \
 
524
        $(NULL)
 
525
 
 
526
# stuff we don't have access to and shouldn't be in DEPS
 
527
STRIPPED_DIRS_FROM_CO += \
 
528
        src/chrome/app/theme/google_chrome \
 
529
        src/chrome/installer/linux \
 
530
        $(NULL)
 
531
 
 
532
# prefix with _ those that we can't remove (just yet) because of the gclient
 
533
# hooks (see build/all.gyp) or of some unneeded deps/includes
 
534
STRIPPED_DIRS := \
 
535
        chrome/test/data/safe_browsing/old \
 
536
        chrome/test/data/firefox2_nss_mac \
 
537
        chrome/third_party/wtl/ \
 
538
        gears \
 
539
        google_update \
 
540
        o3d \
 
541
        third_party/boost \
 
542
        third_party/bsdiff \
 
543
        third_party/bspatch \
 
544
        third_party/ffmpeg/binaries \
 
545
        third_party/fuzzymatch \
 
546
        third_party/gles_book_examples \
 
547
        third_party/gold \
 
548
        third_party/hunspell/dictionaries \
 
549
        third_party/icu/mac \
 
550
        third_party/lcov \
 
551
        third_party/lighttpd \
 
552
        third_party/nspr \
 
553
        third_party/nss \
 
554
        third_party/ocmock \
 
555
        third_party/pthread \
 
556
        third_party/pyftpdlib \
 
557
        third_party/simplejson \
 
558
        third_party/scons \
 
559
        _third_party/tcmalloc \
 
560
        tools/symsrc \
 
561
        tools/site_compare \
 
562
        tools/stats_viewer \
 
563
        tools/valgrind \
 
564
        tools/wine_valgrind \
 
565
        v8/test/cctest \
 
566
        webkit/data/layout_tests \
 
567
        $(NULL)
 
568
 
 
569
# There are directories we want to strip, but that are unnecessarily required by the build-system
 
570
# So we drop everything but the gyp/gypi files and README.chromium (to see what that dir contained)
 
571
ALMOST_STRIPPED_DIRS := \
 
572
        courgette \
 
573
        third_party/gles2_book \
 
574
        third_party/openssl \
 
575
        $(NULL)
 
576
 
 
577
ifeq (1,$(WANT_SYSTEM_LIBS))
 
578
# Directories that will be dropped if the corresponding system lib are enabled in GYP_DEFINES
 
579
# We need to keep some files (like *.gyp) so we can't use STRIPPED_DIRS
 
580
# We can't drop third_party/zlib because we don't have contrib/minizip/*zip.h, and
 
581
# third_party/sqlite because it's a conditional build (see USE_SYSTEM_SQLITE)
 
582
STRIPPED_SYSTEM_LIB_DIRS += \
 
583
        third_party/bzip2 \
 
584
        third_party/libjpeg \
 
585
        third_party/libpng \
 
586
        third_party/libxslt \
 
587
        $(NULL)
 
588
endif
 
589
 
 
590
STRIP_SYSTEM_DIRS = \
 
591
        ($(foreach DIR,$(1),$(if $(findstring use_system_$(notdir $(DIR))=1,$(GYP_DEFINES)),\
 
592
          (cd $(2)/$(dir $(DIR)) && \
 
593
          find $(notdir $(DIR)) -depth -mindepth 1 \! \( -name \*.gyp -o -name \*.gypi -o -name README.chromium -o -name \*.patch \) -print -delete );)))
 
594
 
 
595
ALMOST_STRIP_DIRS = \
 
596
        ($(foreach DIR,$(1),(cd $(2)/$(dir $(DIR)) && \
 
597
          find $(notdir $(DIR)) -depth -mindepth 1 \! \( -name \*.gyp -o -name \*.gypi -o -name README.chromium \) -print -delete );))
 
598
 
 
599
TMP_DDIR     := $(DEBIAN_NAME)-$(shell echo $$$$)
 
600
ifeq (,$(LOCAL_BRANCH))
 
601
TMP_DIR      := $(TMP_DDIR)
 
602
else
 
603
TMP_DIR      := $(LOCAL_BRANCH)
 
604
endif
 
605
 
 
606
get-orig-source: REVISION = $(NULL)
 
607
get-orig-source: TAG      = $(NULL)
 
608
ifneq (,$(DEBIAN_TAG))
 
609
get-orig-source: TAG      = $(DEBIAN_TAG)
 
610
else
 
611
ifneq (,$(DEBIAN_REV))
 
612
get-orig-source: REVISION = --revision src@$(DEBIAN_REV)
 
613
else
 
614
# Doing either the dev or beta or stable channel
 
615
ifneq (,$(CHANNEL))
 
616
ifneq (,$(filter-out stable beta dev Stable Beta Dev,$(CHANNEL)))
 
617
# Assume it's a version
 
618
get-orig-source: VERS          = $(CHANNEL)
 
619
else
 
620
get-orig-source: VERS          = $(shell wget -qO - $(CHANNELS_URL) | grep -i '^linux,$(CHANNEL)' | cut -d, -f3)
 
621
endif
 
622
get-orig-source: CHROMIUM_URL  = $(CHROMIUM_RLZ)/$(VERS)
 
623
get-orig-source: USE_GREEN_REV = 0
 
624
endif
 
625
endif
 
626
endif
 
627
get-orig-source: gos-all
 
628
 
 
629
get-current-source: TAG      = $(NULL)
 
630
get-current-source: REVISION = --revision src@$(DEBIAN_REVISION)
 
631
ifneq (,$(DEBIAN_REV))
 
632
get-current-source: REVISION = --revision src@$(DEBIAN_REV)
 
633
endif
 
634
get-current-source: gos-all
 
635
 
 
636
gos-all: gos-co gos-pack
 
637
gos-co: GCLIENT_UPDATE_FLAGS = --nohooks --delete_unversioned_trees $(REVISION)
 
638
gos-co:
 
639
ifneq (,$(CHANNEL))
 
640
        @if [ Z$(VERS) = Z ] ; then \
 
641
          echo "Error: Cannot parse $(CHANNELS_URL) to get the release version for channel $(CHANNEL)" ; \
 
642
          exit 1 ; \
 
643
        fi
 
644
endif
 
645
ifneq (,$(TAG))
 
646
        $(error gclient doesn\'t support tags. We need to tweak CHROMIUM_URL. Abort)
 
647
endif
 
648
ifeq (,$(LOCAL_BRANCH))
 
649
        rm -rf $(TMP_DIR)
 
650
endif
 
651
        @if [ ! -d $(TMP_DIR) ] ; then echo mkdir $(TMP_DIR); mkdir $(TMP_DIR) ; fi
 
652
        @if [ ! -d $(TMP_DIR)/tools/depot_tools ] ; then \
 
653
          echo svn co $(GCLIENT_URL) $(TMP_DIR)/tools/depot_tools ; \
 
654
          svn co $(GCLIENT_URL) $(TMP_DIR)/tools/depot_tools ; \
 
655
        else \
 
656
          echo svn update $(TMP_DIR)/tools/depot_tools ; \
 
657
          svn update $(TMP_DIR)/tools/depot_tools ; \
 
658
        fi
 
659
        rm -f $(TMP_DIR)/.gclient
 
660
ifeq (1,$(USE_GREEN_REV)$(REVISION))
 
661
        cd $(TMP_DIR) && ./tools/depot_tools/gclient config $(CHROMIUM_URL) $(GREEN_REV_URL)
 
662
else
 
663
        cd $(TMP_DIR) && ./tools/depot_tools/gclient config $(CHROMIUM_URL)
 
664
endif
 
665
ifeq (1,$(STRIP_TARBALL))
 
666
ifneq (,$(STRIPPED_DIRS_FROM_CO))
 
667
        # Add exclusions in .gclient for $(STRIPPED_DIRS_FROM_CO)
 
668
        @for excl in $(STRIPPED_DIRS_FROM_CO) ; do \
 
669
          perl -i -pe 's,("custom_deps"\s*:\s*{),$$1\n      "'$$excl'": None\,,' $(TMP_DIR)/.gclient ; \
 
670
        done
 
671
        grep -Ev '^($$|[[:blank:]]*#)' $(TMP_DIR)/.gclient
 
672
endif
 
673
endif
 
674
        # Checkout (drop the previous content and retry if gclient failed, see http://crbug.com/39954)
 
675
        cd $(TMP_DIR) && ./tools/depot_tools/gclient update $(GCLIENT_UPDATE_FLAGS) || \
 
676
          ( rm -rf $(foreach dir,src [0-9]*,$(wildcard $(TMP_DIR)/$(dir))) ; \
 
677
           ./tools/depot_tools/gclient update $(GCLIENT_UPDATE_FLAGS) )
 
678
        # For NaCL, run the hooks, but not the gyp ones
 
679
        ( cd $(TMP_DIR) ; \
 
680
          SDIR=`grep '"name"' .gclient | cut -d\" -f4` ; \
 
681
          perl -i~ -pe 's%(.python., .src/build/gyp_chromium.)%"echo", "#disabled#", $$1%' $$SDIR/DEPS; \
 
682
          ./tools/depot_tools/gclient runhooks ; \
 
683
          mv $$SDIR/DEPS~ $$SDIR/DEPS ; )
 
684
 
 
685
ifneq (,$(LOCAL_BRANCH))
 
686
        rm -rf $(TMP_DDIR)
 
687
        cp -la $(TMP_DIR) $(TMP_DDIR)
 
688
endif
 
689
ifeq (1,$(STRIP_TARBALL))
 
690
        # Strip tarball from some big directories not needed on the linux platform
 
691
        cd $(TMP_DDIR)/src && rm -rfv $(STRIPPED_DIRS) | grep -vE '/\.svn(/|.$$)' > REMOVED-stripped.txt
 
692
ifneq (,$(ALMOST_STRIPPED_DIRS))
 
693
        # Strip listed dirs almost completely (keep *.gyp and README.chromium)
 
694
        $(call ALMOST_STRIP_DIRS,$(ALMOST_STRIPPED_DIRS),$(TMP_DDIR)/src) | grep -vE '/\.svn(/|.$$)' >> $(TMP_DDIR)/src/REMOVED-stripped.txt
 
695
endif
 
696
ifneq (,$(STRIPPED_SYSTEM_LIB_DIRS))
 
697
        $(call STRIP_SYSTEM_DIRS,$(STRIPPED_SYSTEM_LIB_DIRS),$(TMP_DDIR)/src) | grep -vE '/\.svn(/|.$$)' >> $(TMP_DDIR)/src/REMOVED-stripped.txt
 
698
endif
 
699
endif
 
700
        # Remove binaries
 
701
        cd $(TMP_DDIR)/src && find . -type f \( -iname \*.exe -o -iname \*.dll -o -iname \*.pdb -o -name \*.o -o -name \*.a -o -name \*.dylib -o -name \*.so -o -name \*.so.\* \) -exec rm -fv {} \; > REMOVED-bin_only.txt
 
702
        wc -l $(TMP_DDIR)/src/REMOVED-*.txt
 
703
        
 
704
gos-pack: TMP_DIR  = $(TMP_DDIR)
 
705
ifneq (,$(DEBIAN_TAG))
 
706
gos-pack: VERSION  = $(shell echo $(DEBIAN_TAG) | cut -d= -f2)
 
707
else
 
708
ifeq (,$(CHANNEL))
 
709
gos-pack: REVISION = $(shell cd $(TMP_DIR)/src && svn log --xml --limit 1 | grep -E '^( *revision=|<date>)' | tr -d '\n' | \
 
710
                     sed -e 's/.*"\([0-9]*\)".*>\(....\)-\(..\)-\(..\)T.*/\2\3\4r\1/')
 
711
gos-pack: VERSION  = $(shell cut -d= -f2 $(TMP_DIR)/src/chrome/VERSION | sed -e 's,$$,.,' | tr -d '\n' | sed -e 's/.$$//')~svn$(REVISION)
 
712
else
 
713
gos-pack: REVISION = $(shell cd $(TMP_DIR)/src && svn info | grep ^Revision: | cut -d' ' -f2)
 
714
gos-pack: VERSION  = $(shell cut -d= -f2 $(TMP_DIR)/src/chrome/VERSION | sed -e 's,$$,.,' | tr -d '\n' | sed -e 's/.$$//')~r$(REVISION)
 
715
endif
 
716
endif
 
717
gos-pack:
 
718
ifneq (,$(findstring Ubuntu,$(DEBIAN_DIST)))
 
719
        # Merge Translations from Launchpad
 
720
        if [ ! -d $(TMP_DIR)/translations-tools ] ; then bzr export $(TMP_DIR)/translations-tools $(TRANSLATIONS_TOOLS_BRANCH) ; fi
 
721
        if [ ! -d $(TMP_DIR)/translations-export ] ; then bzr export $(TMP_DIR)/translations-export $(TRANSLATIONS_EXPORT_BRANCH) ; fi
 
722
        ( cd $(TMP_DIR)/src ; ../translations-tools/chromium2pot.py $(GRIT_CONVERTER_FLAGS) $(GRIT_TEMPLATES); cp translations-patches ../../debian/patches; mv translations-patches/* ../../debian/patches; cd ../../debian/patches/translation-patches; sed 's\--- old\--- old/src\' *; sed 's\+++ new\+++ new/src\' * )
 
723
        # Patches created:
 
724
        @( cd debian/patches ; ls translations* | xargs --verbose -n 1 diffstat -p 1 )
 
725
endif
 
726
        # Pack
 
727
        if [ src != $(DEB_TAR_SRCDIR) ] ; then mv $(TMP_DIR)/src $(TMP_DIR)/$(DEB_TAR_SRCDIR) ; fi
 
728
        #mv $(TMP_DIR)/tools/depot_tools $(TMP_DIR)/$(DEB_TAR_SRCDIR)/depot_tools
 
729
        ( cd $(TMP_DIR) ; tar --exclude-vcs -zcf ../../$(DEBIAN_NAME)_$(VERSION).orig.tar.gz $(DEB_TAR_SRCDIR) )
 
730
        
 
731
        # Remove all files and re-extract to make sure we don't have any leftover VCS files
 
732
        rm -rf $(TMP_DIR) && tar -zxf ../$(DEBIAN_NAME)_$(VERSION).orig.tar.gz
 
733
        @echo "# Done (created $(DEBIAN_NAME)_$(VERSION).orig.tar.gz)"
 
734