2 # Linux-specific packaging script
5 ifndef OPENPILOT_IS_COOL
6 $(error Top level Makefile must be used to build this target
)
9 # Are we using a debian based distro?
10 ifneq ($(shell which dpkg
2> /dev
/null
),)
13 # Instead of RELEASE-15.01-RC1 debian wants 15.01~RC1
14 UPSTREAM_VER
:= $(subst -,~
,$(subst RELEASE-
,,$(PACKAGE_LBL
)))
16 ifeq ($(DEB_DIST
), trusty
)
17 DEB_REV
:= $(DEB_REV
)$(DEB_DIST
)1
19 DEB_NAME
:= $(OP_SMALL_NAME
)
20 DEB_ORIG_SRC
:= $(PACKAGE_DIR
)/$(DEB_NAME
)_
$(UPSTREAM_VER
).orig.
tar.gz
21 DEB_PACKAGE_DIR
:= $(PACKAGE_DIR
)/$(DEB_NAME
)-$(UPSTREAM_VER
)
22 DEB_ARCH
:= $(shell dpkg
--print-architecture
)
23 DEB_PACKAGE_NAME
:= $(DEB_NAME
)_
$(UPSTREAM_VER
)-$(DEB_REV
)_
$(DEB_ARCH
)
24 DEB_DIR
:= package
/linux
/debian
26 SED_DATE_STRG
= $(shell date
-R
)
27 SED_SCRIPT
= sed
-i
-e
' \
28 s/<VERSION>/$(UPSTREAM_VER)-$(DEB_REV)/g; \
29 s/<DATE>/$(SED_DATE_STRG)/g; \
30 s/<DIST>/$(DEB_DIST)/g; \
31 s/<NAME>/$(DEB_NAME)/g; \
34 # Ubuntu 14.04 (Trusty Tahr) has different names for the qml-modules
35 TRUSTY_DEPS_SED
:= s
/qml-module-qtquick-controls
/qtdeclarative5-controls-plugin
/g
; \
36 s
/qml-module-qtquick-dialogs
/qtdeclarative5-dialogs-plugin
/g
; \
37 s
/qml-module-qtquick-localstorage
/qtdeclarative5-localstorage-plugin
/g
; \
38 s
/qml-module-qtquick-particles2
/qtdeclarative5-particles-plugin
/g
; \
39 s
/qml-module-qtquick2
/qtdeclarative5-qtquick2-plugin
/g
; \
40 s
/qml-module-qtquick-window2
/qtdeclarative5-window-plugin
/g
; \
41 s
/qml-module-qtquick-xmllistmodel
/qtdeclarative5-xmllistmodel-plugin
/g
;
43 # Leave off Qt and ARM compiler dependencies if calling package target under the assumption that
44 # OP is providing them or the user already has them installed because OP is already built.
45 PACKAGE_DEPS_SED
:= s
/python.
*/python
/;s
/{misc
:Depends
}.
*/{misc
:Depends
}/;
49 @
$(ECHO
) "Building Linux package, please wait..."
50 $(V1
) sed
-i
-e
"$(PACKAGE_DEPS_SED)" debian
/control
51 $(V1
) dpkg-buildpackage
-b
-us
-uc
-nc
52 $(V1
) mv
$(ROOT_DIR
)/..
/$(DEB_PACKAGE_NAME
).deb
$(BUILD_DIR
)
53 $(V1
) mv
$(ROOT_DIR
)/..
/$(DEB_PACKAGE_NAME
).changes
$(BUILD_DIR
)
59 $(V1
) cp
-r
$(DEB_DIR
) debian
60 $(V1
) cp
-T package
/linux
/45-openpilot-permissions.rules debian
/$(DEB_NAME
).udev
61 $(V1
) $(SED_SCRIPT
) debian
/changelog debian
/control
62 ifeq ($(DEB_DIST
), trusty
)
63 $(V1
) sed
-i
-e
"$(TRUSTY_DEPS_SED)" debian
/control
67 package_src
: $(DEB_ORIG_SRC_NAME
) $(DEB_PACKAGE_DIR
)
68 $(V1
) cd
$(DEB_PACKAGE_DIR
) && dpkg-buildpackage
-S
-us
-uc
70 $(DEB_ORIG_SRC
): $(DIST_NAME
).gz |
$(PACKAGE_DIR
)
71 $(V1
) cp
$(DIST_NAME
).gz
$(DEB_ORIG_SRC
)
73 $(DEB_PACKAGE_DIR
): $(DEB_ORIG_SRC
) debian |
$(PACKAGE_DIR
)
74 $(V1
) tar -xf
$(DEB_ORIG_SRC
) -C
$(PACKAGE_DIR
)
75 $(V1
) mv debian
$(PACKAGE_DIR
)/$(PACKAGE_NAME
)
76 $(V1
) rm -rf
$(DEB_PACKAGE_DIR
) && mv
$(PACKAGE_DIR
)/$(PACKAGE_NAME
) $(DEB_PACKAGE_DIR
)
78 endif # Debian based distro?
79 ##############################
83 ##############################
85 bindir := $(prefix)/bin
86 libdir := $(prefix)/lib
87 datadir := $(prefix)/share
89 INSTALL
= cp
-a
--no-preserve
=ownership
95 @
$(ECHO
) " INSTALLING GCS TO $(DESTDIR)/)"
96 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(bindir)
97 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(libdir)
98 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(datadir)
99 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(datadir)/applications
100 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(datadir)/pixmaps
101 $(V1
) $(MKDIR
) -p
$(DESTDIR
)$(udevdir
)
102 $(V1
) $(INSTALL
) $(BUILD_DIR
)/$(GCS_SMALL_NAME
)_
$(GCS_BUILD_CONF
)/bin
/$(GCS_SMALL_NAME
) $(DESTDIR
)$(bindir)
103 $(V1
) $(INSTALL
) $(BUILD_DIR
)/$(GCS_SMALL_NAME
)_
$(GCS_BUILD_CONF
)/lib
/$(GCS_SMALL_NAME
) $(DESTDIR
)$(libdir)
104 $(V1
) $(INSTALL
) $(BUILD_DIR
)/$(GCS_SMALL_NAME
)_
$(GCS_BUILD_CONF
)/share
/$(GCS_SMALL_NAME
) $(DESTDIR
)$(datadir)
105 $(V1
) $(INSTALL
) -T
$(ROOT_DIR
)/package
/linux
/openpilot.desktop
$(DESTDIR
)$(datadir)/applications
/$(OP_SMALL_NAME
).desktop
106 $(V1
) sed
-i
-e
's/openpilotgcs/$(GCS_SMALL_NAME)/g;s/OpenPilot GCS/$(GCS_BIG_NAME)/g' $(DESTDIR
)$(datadir)/applications
/$(OP_SMALL_NAME
).desktop
107 $(V1
) $(INSTALL
) -T
$(ROOT_DIR
)/package
/linux
/openpilot.png
$(DESTDIR
)$(datadir)/pixmaps
/$(OP_SMALL_NAME
).png