You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

303 lines
11 KiB

  1. #
  2. # Copyright (C) 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. PKG_NAME:=gnunet
  9. PKG_SOURCE_VERSION:=36953
  10. PKG_VERSION:=0.10.1-svn$(PKG_SOURCE_VERSION)
  11. PKG_RELEASE:=1
  12. # ToDo:
  13. # - break-out {peer,name,data}store for each backend
  14. # - package testing stuff
  15. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  16. PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  17. PKG_SOURCE_URL:=https://gnunet.org/svn/gnunet/
  18. PKG_SOURCE_PROTO:=svn
  19. PKG_LICENSE:=GPL-3.0
  20. PKG_LICENSE_FILES:=COPYING
  21. PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
  22. PKG_BUILD_PARALLEL:=1
  23. PKG_FIXUP:=gettext-version
  24. PKG_INSTALL:=1
  25. include $(INCLUDE_DIR)/package.mk
  26. include $(INCLUDE_DIR)/nls.mk
  27. CONFIGURE_ARGS+= \
  28. --with-libiconv-prefix="$(ICONV_PREFIX)" \
  29. --with-libintl-prefix="$(INTL_PREFIX)" \
  30. --with-ltdl \
  31. $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mysql),--with-mysql="$(STAGING_DIR)/usr",--without-mysql) \
  32. $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgresql="$(STAGING_DIR)/usr/bin/pg_config",--without-postgresql) \
  33. $(if $(CONFIG_PACKAGE_$(PKG_NAME)-sqlite),--with-sqlite="$(STAGING_DIR)/usr",--without-sqlite) \
  34. --enable-experimental \
  35. --with-extractor=$(STAGING_DIR)/usr \
  36. --with-gnutls=$(STAGING_DIR)/usr \
  37. --with-libgnurl=$(STAGING_DIR)/usr \
  38. --with-libunistring-prefix=$(STAGING_DIR)/usr \
  39. --with-microhttpd=$(STAGING_DIR)/usr
  40. # ToDo: request upstream to provide --with-pulseaudio=...
  41. TARGET_LDFLAGS+= -Wl,-rpath-link=$(STAGING_DIR)/usr/lib/pulseaudio
  42. define Package/gnunet/Default
  43. SECTION:=net
  44. CATEGORY:=Network
  45. TITLE:=GNUnet
  46. URL:=https://www.gnunet.org/
  47. endef
  48. define Package/gnunet
  49. $(call Package/gnunet/Default)
  50. TITLE+= - a peer-to-peer framework focusing on security
  51. DEPENDS:=+ca-certificates +libgnurl +libgnutls +libidn +libltdl \
  52. +libmicrohttpd +libunistring +librt $(ICONV_DEPENDS) $(INTL_DEPENDS)
  53. USERID:=gnunet=400:gnunet=400
  54. MENU:=1
  55. endef
  56. define Package/gnunet/description
  57. GNUnet is a peer-to-peer framework focusing on security. The first and
  58. primary application for GNUnet is anonymous file-sharing. GNUnet is
  59. currently developed by a worldwide group of independent free software
  60. developers. GNUnet is a GNU package (http://www.gnu.org/).
  61. This is an ALPHA release. There are known and significant bugs as
  62. well as many missing features in this release.
  63. This package provides the core components of GNUnet including the
  64. CADET routing engine, a DHT implementation and basic transports as
  65. well as their helpers.
  66. endef
  67. define BuildComponent
  68. define Package/gnunet-$(1)
  69. $$(call Package/gnunet/Default)
  70. TITLE+= $(2)
  71. DEPENDS:=gnunet $(DEPENDS_$(1))
  72. $(if $(3),DEFAULT:=y if PACKAGE_gnunet)
  73. $(if $(USERID_$(1)),USERID:=$(USERID_$(1)))
  74. endef
  75. define Package/gnunet-$(1)/install
  76. ( if [ "$(BIN_$(1))" ]; then \
  77. $(INSTALL_DIR) $$(1)/usr/bin ; \
  78. for bin in $(BIN_$(1)); do \
  79. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$$$$$bin $$(1)/usr/bin/ ; \
  80. done \
  81. fi )
  82. ( if [ "$(LIB_$(1))" ]; then \
  83. $(INSTALL_DIR) $$(1)/usr/lib ; \
  84. for lib in $(LIB_$(1)); do \
  85. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnunet$$$$$$$$lib.so* $$(1)/usr/lib/ ; \
  86. done \
  87. fi )
  88. ( if [ "$(PLUGIN_$(1))" ]; then \
  89. $(INSTALL_DIR) $$(1)/usr/lib/gnunet ; \
  90. for plug in $(PLUGIN_$(1)); do \
  91. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$$$$$plug*.so $$(1)/usr/lib/gnunet ; \
  92. done \
  93. fi )
  94. ( if [ "$(LIBEXEC_$(1))" ]; then \
  95. $(INSTALL_DIR) $$(1)/usr/lib/gnunet/libexec ; \
  96. for lex in $(LIBEXEC_$(1)); do \
  97. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$$$$$lex $$(1)/usr/lib/gnunet/libexec ; \
  98. done \
  99. fi )
  100. ( if [ "$(CONF_$(1))" ]; then \
  101. $(INSTALL_DIR) $$(1)/usr/share/gnunet/config.d ; \
  102. for conf in $(CONF_$(1)); do \
  103. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$$$$$conf.conf $$(1)/usr/share/gnunet/config.d ; \
  104. done \
  105. fi )
  106. endef
  107. $$(eval $$(call BuildPackage,gnunet-$(1)))
  108. endef
  109. define Package/gnunet/install
  110. $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/gnunet/libexec
  111. $(INSTALL_DIR) $(1)/usr/share/gnunet/config.d $(1)/usr/share/gnunet/hellos
  112. ( for bin in arm ats cadet core config ecc identity nat nat-server nse \
  113. peerinfo revocation scalarproduct statistics transport uri; do \
  114. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$bin $(1)/usr/bin/ ; \
  115. done )
  116. ( for lib in arm ats block cadet core datacache dht \
  117. dns dnsparser dnsstub fragmentation friends hello identity nat nse \
  118. peerinfo regexblock regex revocation scalarproduct set \
  119. statistics transport util; do \
  120. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnunet$$$$lib.so* $(1)/usr/lib/ ; \
  121. done )
  122. ( for plug in ats_proportional block_dht block_regex datacache_heap \
  123. transport_tcp transport_udp transport_unix; do \
  124. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$plug*.so $(1)/usr/lib/gnunet ; \
  125. done )
  126. ( for lex in daemon-hostlist daemon-topology helper-nat-client \
  127. helper-nat-server service-arm service-ats service-cadet \
  128. service-core service-dht service-identity service-nse \
  129. service-peerinfo service-regex \
  130. service-revocation service-scalarproduct-alice \
  131. service-scalarproduct-bob service-scalarproduct-ecc-alice \
  132. service-scalarproduct-ecc-bob service-set service-statistics \
  133. service-transport; do \
  134. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$lex $(1)/usr/lib/gnunet/libexec ; \
  135. done )
  136. ( for conf in arm ats cadet core datacache dht hostlist identity \
  137. nat nse peerinfo regex revocation scalarproduct \
  138. set statistics topology transport util; do \
  139. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$conf.conf $(1)/usr/share/gnunet/config.d ; \
  140. done )
  141. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/hellos/* $(1)/usr/share/gnunet/hellos
  142. $(INSTALL_DIR) $(1)/etc/init.d
  143. $(INSTALL_BIN) ./files/gnunet.init $(1)/etc/init.d/gnunet
  144. $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
  145. $(INSTALL_DATA) ./files/gnunet.upgrade $(1)/lib/upgrade/keep.d/gnunet
  146. $(INSTALL_DIR) $(1)/etc/uci-defaults
  147. $(INSTALL_BIN) ./files/gnunet.defaults $(1)/etc/uci-defaults/gnunet
  148. endef
  149. define Build/InstallDev
  150. $(INSTALL_DIR) $(1)/usr/include/gnunet $(1)/usr/lib/pkgconfig
  151. $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{la,so}* $(1)/usr/lib/
  152. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
  153. $(CP) $(PKG_INSTALL_DIR)/usr/include/gnunet/*.h $(1)/usr/include/gnunet
  154. endef
  155. DEPENDS_conversation:=+gnunet-gns +libgst1app +libgst1audio +libgstreamer1 +glib2 +pulseaudio-daemon +libopus +libogg
  156. BIN_conversation:=conversation conversation-test
  157. LIB_conversation:=conversation microphone speaker
  158. PLUGIN_conversation:=gnsrecord_conversation
  159. LIBEXEC_conversation:=helper-audio-playback helper-audio-record service-conversation
  160. CONF_conversation:=conversation
  161. DEPENDS_transport-http_client:=+libgnurl
  162. PLUGIN_transport-http_client:=transport_http_client transport_https_client
  163. DEPENDS_transport-http_server:=+libmicrohttpd
  164. PLUGIN_transport-http_server:=transport_http_server transport_https_server
  165. PLUGIN_transport-wlan:=transport_wlan
  166. LIBEXEC_transport-wlan:=helper-transport-wlan
  167. DEPENDS_experiments:=+libglpk
  168. PLUGIN_experiments:=ats_mlp ats_ril
  169. LIBEXEC_experiments:=service-dht-whanau service-dht-xvine
  170. # BIN_dv:=dv
  171. LIB_dv:=dv
  172. PLUGIN_dv:=transport_dv
  173. LIBEXEC_dv:=service-dv
  174. CONF_dv:=dv
  175. DEPENDS_fs:=+gnunet-datastore +gnunet-peerstore +libextractor
  176. BIN_fs:=auto-share directory download download-manager.scm fs publish unindex search
  177. LIB_fs:=fs
  178. PLUGIN_fs:=block_fs
  179. LIBEXEC_fs:=helper-fs-publish service-fs
  180. CONF_fs:=fs
  181. DEPENDS_gns:=+gnunet-vpn
  182. USERID_gns:=gnunetdns=401:gnunetdns=401
  183. BIN_gns:=gns gns-import.sh namecache namestore resolver
  184. LIB_gns:=gns gnsrecord namecache namestore
  185. PLUGIN_gns:=block_dns block_gns gnsrecord_dns gnsrecord_gns
  186. LIBEXEC_gns:=dns2gns gns-proxy helper-dns namestore-fcfsd service-dns service-gns service-namecache service-namestore service-resolver
  187. CONF_gns:=dns gns namecache namestore resolver
  188. DEPENDS_datastore:=+gnunet-gns +libsqlite3
  189. BIN_datastore:=datastore
  190. LIB_datastore:=datastore
  191. PLUGIN_datastore:=datastore_heap
  192. LIBEXEC_datastore:=daemon-latency-logger service-datastore
  193. CONF_datastore:=datastore
  194. BIN_peerstore:=peerstore
  195. LIB_peerstore:=peerstore
  196. LIBEXEC_peerstore:=service-peerstore
  197. CONF_peerstore:=peerstore
  198. DEPENDS_flat:=+gnunet-gns
  199. PLUGIN_flat:=namecache_flat namestore_flat
  200. DEPENDS_mysql:=+gnunet-gns +gnunet-datastore +libmysqlclient
  201. LIB_mysql:=mysql
  202. PLUGIN_mysql:=datastore_mysql
  203. DEPENDS_pgsql:=+gnunet-gns +gnunet-datastore +libpq
  204. LIB_pgsql:=postgres pq
  205. PLUGIN_pgsql:=datacache_postgres datastore_postgres namecache_postgres namestore_postgres
  206. DEPENDS_rest:=+gnunet-gns +gnunet-social +jansson
  207. LIB_rest:=rest
  208. PLUGIN_rest:=rest_gns rest_identity rest_identity_provider rest_namestore
  209. LIBEXEC_rest:=rest-server
  210. CONF_rest:=rest
  211. BIN_rps:=rps
  212. LIB_rps:=rps
  213. LIBEXEC_rps:=service-rps
  214. CONF_rps:=rps
  215. DEPENDS_social:=+gnunet-sqlite +jansson
  216. BIN_social:=identity-token multicast
  217. LIB_social:=consensus identityprovider multicast psyc psycstore psycutil secretsharing social
  218. PLUGIN_social:=psycstore_sqlite
  219. LIBEXEC_social:=service-consensus service-evil-consensus service-identity-provider service-multicast service-psyc service-psycstore service-secretsharing service-social
  220. CONF_social:=consensus multicast psyc psycstore secretsharing social
  221. DEPENDS_sqlite:=+gnunet-gns +gnunet-datastore +gnunet-peerstore +libsqlite3
  222. PLUGIN_sqlite:=datacache_sqlite datastore_sqlite namecache_sqlite namestore_sqlite peerstore_sqlite
  223. DEPENDS_transport-bluetooth:=+bluez-libs
  224. PLUGIN_transport-bluetooth:=transport_bluetooth
  225. LIBEXEC_transport-bluetooth:=helper-transport-bluetooth
  226. DEPENDS_utils:=+certtool +openssl-util
  227. BIN_utils:=gns-proxy-setup-ca transport-certificate-creation scrypt
  228. DEPENDS_vpn:=+kmod-tun +iptables
  229. BIN_vpn:=vpn
  230. LIB_vpn:=tun vpn
  231. LIBEXEC_vpn:=daemon-exit daemon-pt helper-exit helper-vpn service-vpn
  232. CONF_vpn:=exit pt vpn
  233. $(eval $(call BuildPackage,gnunet))
  234. $(eval $(call BuildComponent,conversation,conversation component,))
  235. $(eval $(call BuildComponent,datastore,data storage components,))
  236. $(eval $(call BuildComponent,dv,distance-vector routing component,))
  237. $(eval $(call BuildComponent,experiments,experimental components,))
  238. $(eval $(call BuildComponent,flat,flat storage backends,))
  239. $(eval $(call BuildComponent,fs,file-sharing components,))
  240. $(eval $(call BuildComponent,gns,name resolution components,y))
  241. $(eval $(call BuildComponent,mysql,mySQL datastore backend,))
  242. $(eval $(call BuildComponent,pgsql,PostgreSQL storage backends,))
  243. $(eval $(call BuildComponent,peerstore,peerstore local persistency component,))
  244. $(eval $(call BuildComponent,rest,REST interface,))
  245. $(eval $(call BuildComponent,rps,RPS routing component,))
  246. $(eval $(call BuildComponent,social,social components,))
  247. $(eval $(call BuildComponent,sqlite,libsqlite3 storage backends,y))
  248. $(eval $(call BuildComponent,transport-bluetooth,bluetooth transport,))
  249. $(eval $(call BuildComponent,transport-http_client,HTTP/HTTPS client transport,y))
  250. $(eval $(call BuildComponent,transport-http_server,HTTP/HTTPS server transport,))
  251. $(eval $(call BuildComponent,transport-wlan,WLAN transport,))
  252. $(eval $(call BuildComponent,utils,administration utililties,))
  253. $(eval $(call BuildComponent,vpn,vpn components,y))