01a7d796de5f549706e909a6faea801539d2ba14
[openwrt/openwrt.git] / package / system / opkg / Makefile
1 #
2 # Copyright (C) 2006-2015 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6
7 include $(TOPDIR)/rules.mk
8 include $(INCLUDE_DIR)/kernel.mk
9 include $(INCLUDE_DIR)/version.mk
10 include $(INCLUDE_DIR)/feeds.mk
11
12 PKG_NAME:=opkg
13 PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
14 PKG_VERSION:=$(PKG_REV)
15 PKG_RELEASE:=12
16
17 PKG_SOURCE_PROTO:=git
18 PKG_SOURCE_VERSION:=$(PKG_REV)
19 PKG_SOURCE_SUBDIR:=opkg-$(PKG_VERSION)
20 PKG_SOURCE_URL:=http://git.yoctoproject.org/git/opkg
21 PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
22 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
23 PKG_FIXUP:=autoreconf
24 PKG_REMOVE_FILES = autogen.sh aclocal.m4
25
26 PKG_LICENSE:=GPL-2.0
27 PKG_LICENSE_FILES:=COPYING
28
29 PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
30
31 PKG_FLAGS := nonshared
32 PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES
33
34 PKG_BUILD_PARALLEL:=1
35 HOST_BUILD_PARALLEL:=1
36 PKG_INSTALL:=1
37
38 include $(INCLUDE_DIR)/package.mk
39 include $(INCLUDE_DIR)/host-build.mk
40
41 define Package/opkg/Default
42 SECTION:=base
43 CATEGORY:=Base system
44 TITLE:=opkg package manager
45 DEPENDS:=+uclient-fetch
46 URL:=http://wiki.openmoko.org/wiki/Opkg
47 MENU:=1
48 endef
49
50 define Package/opkg/Default/description
51 Lightweight package management system
52 opkg is the opkg Package Management System, for handling
53 installation and removal of packages on a system. It can
54 recursively follow dependencies and download all packages
55 necessary to install a particular package.
56
57 opkg knows how to install both .ipk and .deb packages.
58 endef
59
60 define Package/opkg/config
61 config OPKG_SUPPORT_MD5
62 bool
63 default n
64 depends on PACKAGE_opkg
65 prompt "Support reading old md5 hashes."
66 help
67 Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
68 endef
69
70 define Package/opkg
71 $(call Package/opkg/Default)
72 VARIANT:=unsigned
73 endef
74
75 define Package/opkg/description
76 $(call Package/opkg/Default/description)
77 endef
78
79 define Package/opkg/conffiles
80 /etc/opkg.conf
81 /etc/opkg/keys/
82 /etc/opkg/customfeeds.conf
83 endef
84
85
86 define Package/opkg-smime
87 $(call Package/opkg/Default)
88 TITLE+= (with S/MIME signature support)
89 DEPENDS+=+PACKAGE_opkg-smime:libopenssl
90 VARIANT:=smime
91 endef
92
93 define Package/opkg-smime/description
94 $(call Package/opkg/Default/description)
95
96 This package allows the Package index to be verified with S/MIME.
97 endef
98
99 define Package/opkg-smime/config
100 config OPKG_SMIME_SUPPORT_MD5
101 bool
102 default n
103 depends on PACKAGE_opkg-smime
104 prompt "Support reading old md5 hashes."
105 help
106 Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
107 endef
108
109 Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
110
111 TARGET_CFLAGS += -ffunction-sections -fdata-sections
112 EXTRA_CFLAGS += $(TARGET_CPPFLAGS)
113
114 CONFIGURE_ARGS += \
115 --disable-curl \
116 --disable-gpg \
117 --enable-sha256 \
118 --with-opkgetcdir=/etc \
119 --with-opkglockfile=/var/lock/opkg.lock
120
121 ifeq ($(BUILD_VARIANT),smime)
122 CONFIGURE_ARGS += --enable-openssl --disable-usign
123 ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y)
124 CONFIGURE_ARGS += --enable-md5
125 else
126 CONFIGURE_ARGS += --disable-md5
127 endif
128 else
129 ifndef CONFIG_SIGNED_PACKAGES
130 CONFIGURE_ARGS += --disable-usign
131 endif
132 ifeq ($(CONFIG_OPKG_SUPPORT_MD5),y)
133 CONFIGURE_ARGS += --enable-md5
134 else
135 CONFIGURE_ARGS += --disable-md5
136 endif
137 endif
138
139 MAKE_FLAGS = \
140 CC="$(TARGET_CC)" \
141 DESTDIR="$(PKG_INSTALL_DIR)" \
142 HOST_CPU="$(PKGARCH)" \
143 LDFLAGS="-Wl,--gc-sections" \
144
145 define Package/opkg/Default/install
146 $(INSTALL_DIR) $(1)/usr/lib/opkg
147 $(INSTALL_DIR) $(1)/bin
148 $(INSTALL_DIR) $(1)/etc/opkg
149 $(INSTALL_DIR) $(1)/etc/uci-defaults
150 $(INSTALL_DATA) ./files/customfeeds.conf $(1)/etc/opkg/customfeeds.conf
151 $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
152 $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf)
153 $(VERSION_SED) $(1)/etc/opkg/distfeeds.conf
154 $(INSTALL_BIN) ./files/20_migrate-feeds $(1)/etc/uci-defaults/
155 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
156 endef
157
158 define Package/opkg/install
159 $(call Package/opkg/Default/install,$(1),)
160 ifneq ($(CONFIG_SIGNED_PACKAGES),)
161 echo "option check_signature 1" >> $(1)/etc/opkg.conf
162 endif
163 mkdir $(1)/usr/sbin
164 $(INSTALL_BIN) ./files/opkg-key $(1)/usr/sbin/
165 endef
166
167 define Package/opkg-smime/install
168 $(call Package/opkg/Default/install,$(1),-smime)
169 $(INSTALL_DIR) $(1)/etc/ssl/certs
170 $(if $(CONFIG_OPKGSMIME_CERT),$(INSTALL_DATA) $(call qstrip,$(CONFIG_OPKGSMIME_CERT)) $(1)/etc/ssl/certs/opkg.pem,)
171 endef
172
173 define Build/InstallDev
174 mkdir -p $(1)/usr/include
175 $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/
176 endef
177
178
179 HOST_CONFIGURE_ARGS+= \
180 --disable-curl \
181 --disable-gpg \
182 --enable-sha256 \
183 --with-opkgetcdir=/etc \
184 --with-opkglockfile=/tmp/opkg.lock
185
186 define Host/Compile
187 +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all
188 endef
189
190 define Host/Install
191 $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/opkg-cl $(STAGING_DIR_HOST)/bin/opkg
192 endef
193
194 $(eval $(call BuildPackage,opkg))
195 $(eval $(call BuildPackage,opkg-smime))
196 $(eval $(call HostBuild))