From patchwork Mon Oct 16 17:08:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Compagnucci X-Patchwork-Id: 826431 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="FKOyeUUj"; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yG4Y93WSXz9t2c for ; Tue, 17 Oct 2017 04:09:01 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 0B7B52E02D; Mon, 16 Oct 2017 17:08:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id B75HW9gQ2+RP; Mon, 16 Oct 2017 17:08:58 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id F3EEC2DD2E; Mon, 16 Oct 2017 17:08:57 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id B17EE1C3F97 for ; Mon, 16 Oct 2017 17:08:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id AC7B186686 for ; Mon, 16 Oct 2017 17:08:56 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t1db3sO4ViIC for ; Mon, 16 Oct 2017 17:08:55 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 3416C8662F for ; Mon, 16 Oct 2017 17:08:55 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id k7so3628133wre.2 for ; Mon, 16 Oct 2017 10:08:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=u4mkb2F9jqLwxLXNIOrFMGnuO9UyEdnMvocp57AdGwo=; b=FKOyeUUjgifuhLi2cKAwPUcGv9TTYrzfYA9/RKIIFFR5sbaxi+o+RZySd6LkBua+eX n1FjyjvG1BTUYZSAxavrM1HKcxetTcvVsG9j8Jr22lnUK5t4OJISSkY1W2aRvszZEGCs SPNGO8UICM+JUFG85AFpWvh4CzSkdMXs+zyyyotdNTQ+rAhoosbVeAShYy+1cIndjFp8 zYDUER6Jj6i/3fbBeRtJ0REKTwf9mUlSD7uA3UnntQVWHCxj++hHUII+7Xd2wzFx/F/P wig3dJKnV9GVE2Q2R4o5K51zzBHGvQ2K8/tiCQGfotFM3s2UC66AGtH4mju244io0H+C zlyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=u4mkb2F9jqLwxLXNIOrFMGnuO9UyEdnMvocp57AdGwo=; b=KfXyK8nItUoOppHhgrIy752nG73j6cfKXFkPwWyhKUFTuE8i2gYz6FV7PmgiGkja0T 3U8QzQLjc6ut7SWgrc3or4C1Nc8e15H541AJgOIoerAeUGpl6I5RlkuA4jt/PGQ3M4Pq Ta6w7wh/50wMSJ402CUnQwZrTXZaDAHpXvCRHhxSb/Xb3ok7Df0w9GOQfhKTbq9iH3iA QTivFiqQAt0k8PgOri2kp8UiZ2/PmS5eisKZuE1Mvtl2q5BfYyDUWkJ2ihLD5QdJkNT/ XFady9AjgbIYg2zMdojVzkwAPdlWI+eiySYuPCreiQ7CGGDXREWBfJq3Si6hvxTVe1Lu kMqQ== X-Gm-Message-State: AMCzsaWVv6Cz9cUJukNadMK9F+v1l3Us30/h431zgj4z+ImejTPfgY98 iT43f3PuZBd4NO7AkMm/OVrQhM3D X-Google-Smtp-Source: ABhQp+SI671yk8Ynlkrq/nXgKYwim0/dmIYPetsf96FNqMkwrjTElpWfe97ciwRZk8V1TSPsjrgfog== X-Received: by 10.223.147.135 with SMTP id 7mr1297923wrp.237.1508173733055; Mon, 16 Oct 2017 10:08:53 -0700 (PDT) Received: from localhost.localdomain ([89.202.204.147]) by smtp.gmail.com with ESMTPSA id d195sm4539553wmd.0.2017.10.16.10.08.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Oct 2017 10:08:51 -0700 (PDT) From: Angelo Compagnucci To: buildroot@buildroot.org Date: Mon, 16 Oct 2017 19:08:45 +0200 Message-Id: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [Buildroot] [RFC v2 1/4] package/go: fixing crosscompilation settings X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch fixes a bug with the BR2_TOOLCHAIN_HAS_THREADS variable handling which causes CGO_ENABLED to be always 0. Furthermore, it fixes the cross compilation options for the go compiler: setting CGO_ENABLED should be done only for the target compiler not the host one. Signed-off-by: Angelo Compagnucci --- package/go/go.mk | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/package/go/go.mk b/package/go/go.mk index 0781dff..6035164 100644 --- a/package/go/go.mk +++ b/package/go/go.mk @@ -52,7 +52,7 @@ HOST_GO_TARGET_ENV = \ # set, build in cgo support for any go programs that may need it. Note that # any target package needing cgo support must include # 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file. -ifeq (BR2_TOOLCHAIN_HAS_THREADS,y) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) HOST_GO_CGO_ENABLED = 1 else HOST_GO_CGO_ENABLED = 0 @@ -74,8 +74,8 @@ HOST_GO_MAKE_ENV = \ GOARCH=$(GO_GOARCH) \ $(if $(GO_GOARM),GOARM=$(GO_GOARM)) \ GOOS=linux \ - CGO_ENABLED=$(HOST_GO_CGO_ENABLED) \ - CC=$(HOSTCC_NOCCACHE) + CC=$(HOSTCC_NOCCACHE) \ + CXX=$(HOSTCXX_NOCCACHE) HOST_GO_TARGET_CC = \ CC_FOR_TARGET="$(TARGET_CC)" \ @@ -83,16 +83,18 @@ HOST_GO_TARGET_CC = \ HOST_GO_HOST_CC = \ CC_FOR_TARGET=$(HOSTCC_NOCCACHE) \ - CXX_FOR_TARGET=$(HOSTCC_NOCCACHE) + CXX_FOR_TARGET=$(HOSTCXX_NOCCACHE) HOST_GO_TMP = $(@D)/host-go-tmp define HOST_GO_BUILD_CMDS - cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) ./make.bash + cd $(@D)/src && \ + $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) CGO_ENABLED=0 ./make.bash mkdir -p $(HOST_GO_TMP) mv $(@D)/pkg/tool $(HOST_GO_TMP)/ mv $(@D)/bin/ $(HOST_GO_TMP)/ - cd $(@D)/src && $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) ./make.bash + cd $(@D)/src && \ + $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) CGO_ENABLED=$(HOST_GO_CGO_ENABLED) ./make.bash endef define HOST_GO_INSTALL_CMDS From patchwork Mon Oct 16 17:08:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Compagnucci X-Patchwork-Id: 826433 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="rlx9QefU"; dkim-atps=neutral Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yG4YL34krz9sBZ for ; Tue, 17 Oct 2017 04:09:10 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 5DFDE87368; Mon, 16 Oct 2017 17:09:06 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id A0TCUN6kjXDZ; Mon, 16 Oct 2017 17:09:02 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id F121B8733C; Mon, 16 Oct 2017 17:09:01 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id D8DEC1C3F97 for ; Mon, 16 Oct 2017 17:08:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id D2ABA2DD2E for ; Mon, 16 Oct 2017 17:08:57 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b8H+gR9PKTcZ for ; Mon, 16 Oct 2017 17:08:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by silver.osuosl.org (Postfix) with ESMTPS id AD6F42D3C8 for ; Mon, 16 Oct 2017 17:08:56 +0000 (UTC) Received: by mail-wm0-f68.google.com with SMTP id u138so5444268wmu.4 for ; Mon, 16 Oct 2017 10:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TptsfQWpg7Js2I+qWEY2FX7rqankaz/422AfU5pEEd4=; b=rlx9QefUVlL+QBD1zghoGRABQrksK1fvSc8+L5HhpdBatyGbcMZ8PLW4tG6Wb8hCVq opDXwWD1LW1NYsnIvH9PkFf4o5aCL0spC+hvoO+3jHBEvSBNEN5VyKUmIrY4eO9Fo5wb 1TvjYKD1Df5K/O2u/aIXJMoXBFfMhRxRWlm0bmEu0mdoxbGFLDvtePaTudJtKRJTmHXc S2aAPpwzpYrs/mW5qjWtIwKGI+LfZ1MNWW4LpLLgGeIOTRghIcRpvEX5zHFZ4oB4g2gf sDUurWAYMUb6wCPyhJM8jCY0sXVPy4dKkRdrcIZ2DRMd/LYHkauwSvVhgF7Qd1juP937 uXhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TptsfQWpg7Js2I+qWEY2FX7rqankaz/422AfU5pEEd4=; b=VZmhSswlz9o1yYHzv7rzShfQf2bepk0bTQ5cAPHlv0t7ykk+gRguB+UtEgpd0SadX9 ly7MqxO4nYPhoYSX1vA+Mq0B8l5TT611wi9pdG+W3FQAc0VkzbH7AMMcTCGePFm1KDI6 oyhM27/K52WpjnaMGXA5jh1egVq3c9WwKIKUdqUC/1OgwE5m+KdYxxCDqo7G0rw1sLsT hihATFR8YAqVEUlOSfN5p5voaHGIdw++9aGT6mklqyz3acGUy2aeWBdEzc4tCUVaz5z1 NHCkIJre5dT33WpTVquNAIfntR4bFLWmGfes8ksGqn8hwe2kAiSH+XL0wz0vz7TkP7vZ EU4A== X-Gm-Message-State: AMCzsaU4NSv1X0pJPyQrIuPTHdqhoYHC8EjDG9TaaSqKmF7ROgxApzWe 9sHxz0gDABxoubZM8k4Fc6zjJXCp X-Google-Smtp-Source: ABhQp+QsmCSyZOpSYjBwETPshZQkm0X+sDK+MEynuKKX+hPRHuG4lN0WaWC4Xbrjgn37RMGRCsnMhA== X-Received: by 10.28.153.206 with SMTP id b197mr1686376wme.60.1508173734647; Mon, 16 Oct 2017 10:08:54 -0700 (PDT) Received: from localhost.localdomain ([89.202.204.147]) by smtp.gmail.com with ESMTPSA id d195sm4539553wmd.0.2017.10.16.10.08.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Oct 2017 10:08:53 -0700 (PDT) From: Angelo Compagnucci To: buildroot@buildroot.org Date: Mon, 16 Oct 2017 19:08:46 +0200 Message-Id: <1508173728-29181-2-git-send-email-angelo.compagnucci@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> References: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> Subject: [Buildroot] [RFC v2 2/4] package/pkg-golang: new package infrastructure X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch adds a new infrastructure for golang based packages. Signed-off-by: Angelo Compagnucci --- package/Makefile.in | 1 + package/pkg-golang.mk | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 package/pkg-golang.mk diff --git a/package/Makefile.in b/package/Makefile.in index a1a5316..60d98d0 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -429,3 +429,4 @@ include package/pkg-kconfig.mk include package/pkg-rebar.mk include package/pkg-kernel-module.mk include package/pkg-waf.mk +include package/pkg-golang.mk diff --git a/package/pkg-golang.mk b/package/pkg-golang.mk new file mode 100644 index 0000000..c4e6410 --- /dev/null +++ b/package/pkg-golang.mk @@ -0,0 +1,121 @@ +################################################################################ +# Golang package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Go packages. It should be used for all +# packages that are written in go. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# +# In terms of implementation, this golang infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default golang behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +################################################################################ +# inner-golang-package -- defines how the configuration, compilation and +# installation of a Go package should be done, implements a few hooks to +# tune the build process for Go specifities and calls the generic package +# infrastructure to generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-golang-package + +ifndef $(2)_MAKE_ENV +define $(2)_MAKE_ENV + $$(HOST_GO_TARGET_ENV) \ + GOPATH="$$(@D)/gopath" \ + CGO_ENABLED=$$(HOST_GO_CGO_ENABLED) +endef +endif + +# Target packages need the Go compiler on the host. +$(2)_DEPENDENCIES += host-go + +# +# go install command doesn't work well when cross compilation is enabled, +# we set the executable output of the compilation to a specific location. +# We set this variable here to be used by packages if needed. +# +$(2)_EXECUTABLE = $$(@D)/gopath/bin/$(1) + +# +# Source files in Go should be uncompressed in a precise folder in the +# hiearchy of GOPATH. It usually resolves around domain/vendor/software. +# +$(1)_src_path ?= $$(call domain,$($(2)_SITE))/$$(firstword $$(subst /, ,$$(call notdomain,$($(2)_SITE)))) +$(2)_SRC_PATH = $$(@D)/gopath/src/$$($(1)_src_path)/$(1) + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + mkdir -p $$(@D)/gopath/bin + mkdir -p $$(@D)/gopath/src/$$($(1)_src_path) + ln -sf $$(@D) $$($(2)_SRC_PATH) +endef +endif + +# +# Build step. Only define it if not already defined by the package .mk file. +# There is no differences between host and target packages. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + cd $$($(2)_SRC_PATH) && $$($(2)_MAKE_ENV) $(HOST_DIR)/bin/go build \ + -o $$($(2)_EXECUTABLE) -v $$($(2)_BUILD_OPTS) +endef +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $(INSTALL) -D -m 0755 $$($(2)_EXECUTABLE) $(HOST_DIR)/usr/bin/ +endef +endif + +# +# Target installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $$($(2)_EXECUTABLE) $(TARGET_DIR)/usr/bin/ +endef +endif + +# Call the generic package infrastructure to generate the necessary make +# targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef # inner-golang-package + +################################################################################ +# golang-package -- the target generator macro for Go packages +################################################################################ + +golang-package = $(call inner-golang-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-golang-package = $(call inner-golang-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + From patchwork Mon Oct 16 17:08:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Compagnucci X-Patchwork-Id: 826432 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="elEQqRgd"; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yG4YH18rmz9sBZ for ; Tue, 17 Oct 2017 04:09:06 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 9386486586; Mon, 16 Oct 2017 17:09:04 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F34ORwMyvS7B; Mon, 16 Oct 2017 17:09:03 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 271068662E; Mon, 16 Oct 2017 17:09:03 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id A87921C3F97 for ; Mon, 16 Oct 2017 17:08:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id A379586688 for ; Mon, 16 Oct 2017 17:08:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id glTxJCHEuXDH for ; Mon, 16 Oct 2017 17:08:58 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 3F3FB8662F for ; Mon, 16 Oct 2017 17:08:58 +0000 (UTC) Received: by mail-wr0-f193.google.com with SMTP id l24so3635944wre.1 for ; Mon, 16 Oct 2017 10:08:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XV2FrRod4LXuT7dJSXjjJ33xp/BlDs84B/SVG4evcgU=; b=elEQqRgdBGs+qJOpRVnhutszzIh015UQQoa+qNjY8lWCIvQ0VA4OJKTS195aedmJIR zNvgN1oimXe9SzdvwzoYNT+rujJncGe+/ysWxXYrdsMNjvphZuHQV/fp470hBqyaIHk/ z/dSj+MGZAgB6U1YTY0BkSxC2HJnznltKvrJ3t4YWEonvNhqE9/SgkxfRebo1bbZM66G dHQkJbdbPiObocrJiofAsLTT8E5GFID0IClE+KpJvkw7v4+OGQVo6MQkvRHCNxSNBkkr axVv83iNK73tdWbQNDcy1mFZ5jAQZ3wwJlUr42Mr44ijScFmaMA+DX1pJOmAAufY5c4z torg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XV2FrRod4LXuT7dJSXjjJ33xp/BlDs84B/SVG4evcgU=; b=HDgz1ZjbGBEst3vVa4om8Exf4lteTS2LONsiBBifC60TRf84UjWyJYSDOt5yw3MSME 7DKKzLy78Oj4ySUn8lPjs6hkATVuUVxwd4cNXZZ922Rl2w5dddwj4+7QFzrGnO4nUWxg MdwRq2aC7Dym0OMwkFJTOOVkGwR2zwxhiu8Csm/eFJILaoA0v7at3Wef7dy2oECkipKD 9/bc4XVrwypNlatF5tk9bBfCpTU1mKet2FTNDf79vmmuQEdeuat46lPWDb2Qo5y3qjfW cGWOzbg8z9yNOed/DEvZHcp9AunG5FzFUw2hmxeCTo5YIPUPdoZB2mfehQOdWXMRro3V A9Ag== X-Gm-Message-State: AMCzsaVzLFLMzQFLFpgHbWgtrlcS5pp9mM7k0q29TDYXJp0aBJgZEmXb YQS9xlJI5xHdpvDf+V6gkabjzo+r X-Google-Smtp-Source: ABhQp+RnDcVCLPPDTj0wOZQ4zmqCAr8VHVLCt32ITGR6WljvBJoDXtJCAUScxkRrblIARcK5nki3vA== X-Received: by 10.223.145.105 with SMTP id j96mr1355198wrj.273.1508173736175; Mon, 16 Oct 2017 10:08:56 -0700 (PDT) Received: from localhost.localdomain ([89.202.204.147]) by smtp.gmail.com with ESMTPSA id d195sm4539553wmd.0.2017.10.16.10.08.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Oct 2017 10:08:55 -0700 (PDT) From: Angelo Compagnucci To: buildroot@buildroot.org Date: Mon, 16 Oct 2017 19:08:47 +0200 Message-Id: <1508173728-29181-3-git-send-email-angelo.compagnucci@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> References: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> Subject: [Buildroot] [RFC v2 3/4] docs/manual: adding documentation for the golang infrastructure X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch adds the documentation for the golang infrastructure. Signed-off-by: Angelo Compagnucci --- docs/manual/adding-packages-golang.txt | 111 +++++++++++++++++++++++++++++++++ docs/manual/adding-packages.txt | 2 + 2 files changed, 113 insertions(+) create mode 100644 docs/manual/adding-packages-golang.txt diff --git a/docs/manual/adding-packages-golang.txt b/docs/manual/adding-packages-golang.txt new file mode 100644 index 0000000..2ba45f0 --- /dev/null +++ b/docs/manual/adding-packages-golang.txt @@ -0,0 +1,111 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +[[golang-package-tutorial]] + +==== +golang-package+ tutorial + +First, let's see how to write a +.mk+ file for a go package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # go-foo +04: # +05: ################################################################################ +06: +07: GO_FOO_VERSION = 1.0 +08: GO_FOO_SOURCE = go-foo-$(GO_FOO_VERSION).tar.xz +09: GO_FOO_SITE = http://www.foosoftware.org/download +10: GO_FOO_LICENSE = BSD-3-Clause +11: GO_FOO_LICENSE_FILES = LICENSE +12: +13: $(eval $(golang-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +Finally, on line 13, we invoke the +golang-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +[[golang-package-reference]] + +==== +golang-package+ reference + +As a policy packages can freely choose their name (existing example in +Buildroot is +flannel+). + +In their +Config.in+ file, they should depend on ++BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS+ and ++BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS+ cause host-go will compile when Buildroot will add the +dependency automatically. + +The main macro of the Go package infrastructure is ++golang-package+. It is similar to the +generic-package+ macro. It is +also possible to create Go host packages with the ++host-golang-package+ macro. + +Just like the generic infrastructure, the Go infrastructure works +by defining a number of variables before calling the +golang-package+ +or +host-golang-package+ macros. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Go infrastructure: +GO_FOO_VERSION+, ++GO_FOO_SOURCE+, +GO_FOO_PATCH+, +GO_FOO_SITE+, ++GO_FOO_SUBDIR+, +GO_FOO_DEPENDENCIES+, +GO_FOO_LICENSE+, ++GO_FOO_LICENSE_FILES+, +GO_FOO_INSTALL_STAGING+, etc. + +Note that: + + * It is not necessary to add +go+ or +host-go+ in the + +GO_FOO_DEPENDENCIES+ variable of a package, since these basic + dependencies are automatically added as needed by the Go + package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* +GO_FOO_GO_SRC_PATH+: go sources should be compiled inside GOPATH. + The golang package infrastructure tries to guess the correct + GOPATH subfolder to compile in. If guessing is not correct or your + package behaves differently, you can use this variable to + adjust the path. + + +* +GO_FOO_BUILD_OPTS+, to specify additional options to pass to the + Go +setup.py+ script during the build step. For target distutils + packages, the +PKG_GO_DISTUTILS_BUILD_OPTS+ options are already + passed automatically by the infrastructure. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package +.mk+ file defines its own + +GO_FOO_BUILD_CMDS+ variable, it will be used instead of the + default Go one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. + diff --git a/docs/manual/adding-packages.txt b/docs/manual/adding-packages.txt index d577ff0..be7468b 100644 --- a/docs/manual/adding-packages.txt +++ b/docs/manual/adding-packages.txt @@ -34,6 +34,8 @@ include::adding-packages-rebar.txt[] include::adding-packages-waf.txt[] +include::adding-packages-golang.txt[] + include::adding-packages-kernel-module.txt[] include::adding-packages-asciidoc.txt[] From patchwork Mon Oct 16 17:08:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Compagnucci X-Patchwork-Id: 826434 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Jp7IeWNk"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yG4YT4Gcxz9sBZ for ; Tue, 17 Oct 2017 04:09:17 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 42E2C866C9; Mon, 16 Oct 2017 17:09:10 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Qr3ud7dnmawp; Mon, 16 Oct 2017 17:09:07 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id A13E5866A6; Mon, 16 Oct 2017 17:09:06 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 025691C3F97 for ; Mon, 16 Oct 2017 17:09:02 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id E736C2DF72 for ; Mon, 16 Oct 2017 17:09:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lGytpgPvmQwx for ; Mon, 16 Oct 2017 17:09:00 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by silver.osuosl.org (Postfix) with ESMTPS id 6CC5A2DE3D for ; Mon, 16 Oct 2017 17:09:00 +0000 (UTC) Received: by mail-wr0-f193.google.com with SMTP id l24so3636039wre.1 for ; Mon, 16 Oct 2017 10:09:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pvhYTaxxPFg53+BjF+lVa8DV2TtVC7pA1SPKL6OXn0E=; b=Jp7IeWNkGgOkObQh4UIKRw09BIm3xfslyPbb6qIZ6qfdfwIVWJFSpXecRJsxBPBDwI imk2w7MPKlCdGvXU5FwZ+Wqpt+onj6grW4Jpe9C1Uh4mgV+q3Run4Tra0lVrwXcAOtTa RnD0EyHdmVHdrbHSGsqtHZyUjZYQv4OnF3FJL9TQB1jz4BIWAXs3DfgZyZBRI5jDaagP Yv1MeY8fOjG8gdtZkluHH2m9PhY9E34uA3Hbcfv+NcSJl7tURI4zhhzuBUHmIfE33Vq9 /ziuhvBrc0Aeb6EeUGLAmKlOwis2Y96lKKZEdgzMNWikpBzt+lOsipOO2cgC4SCm6L3B Cn5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pvhYTaxxPFg53+BjF+lVa8DV2TtVC7pA1SPKL6OXn0E=; b=crHZ1OutvnmNGRHP+j/32/O4kwB21u7+rRcfZAOjMuAgaRqAIueMcrhTtuBdRCFkLG hXrHbGSpo3tu332ixECrC7ZFExo2OzaNGLAxtz6pNjjCRSc/DXCQ8MccZPJPHereTHYu ry56bIxv5ywKE49SKE8xUdqt4TOvZIM5tjteLZ25B7irEvU7IezI9W4PYw/w8FHZmnFx Qwy6aVkiqZMg9hS3JPLq7cuIWaIACdjAq6SOTIKR3JxPKQHjbOZa04aZEZrRLqUgDsYY 3mtdPDbh0DfJSFgAY+auqdgUPQ+L8sT/RRHKI6ljBy9gs1zEZ4m/YoTYXkUVAMnCeFLV ruWQ== X-Gm-Message-State: AMCzsaXtCtc8chblX+YF48Q/214pgNyc/8IJtg+CQFhz1sueWrAjdDSg KMlXWO9GOzo8vdSdpZDWGQsPhqEB X-Google-Smtp-Source: ABhQp+TDLyH/1JK2UESVH6N/4LBCO2HF00xFqMQd+Do2rcXMNhaWysR89YDyLYLRQy/KOXI6m8+Uug== X-Received: by 10.223.177.139 with SMTP id q11mr1339066wra.77.1508173737813; Mon, 16 Oct 2017 10:08:57 -0700 (PDT) Received: from localhost.localdomain ([89.202.204.147]) by smtp.gmail.com with ESMTPSA id d195sm4539553wmd.0.2017.10.16.10.08.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Oct 2017 10:08:56 -0700 (PDT) From: Angelo Compagnucci To: buildroot@buildroot.org Date: Mon, 16 Oct 2017 19:08:48 +0200 Message-Id: <1508173728-29181-4-git-send-email-angelo.compagnucci@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> References: <1508173728-29181-1-git-send-email-angelo.compagnucci@gmail.com> Subject: [Buildroot] [RFC v2 4/4] package/flannel: converting to golang infrastructure X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch converts the flannel package to the new golang infrastructure. Signed-off-by: Angelo Compagnucci --- package/flannel/flannel.mk | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/package/flannel/flannel.mk b/package/flannel/flannel.mk index bbb2c72..641bb97 100644 --- a/package/flannel/flannel.mk +++ b/package/flannel/flannel.mk @@ -11,14 +11,6 @@ FLANNEL_SOURCE = $(FLANNEL_VERSION).tar.gz FLANNEL_LICENSE = Apache-2.0 FLANNEL_LICENSE_FILES = LICENSE -FLANNEL_DEPENDENCIES = host-go - -FLANNEL_MAKE_ENV = \ - $(HOST_GO_TARGET_ENV) \ - GOBIN="$(@D)/bin" \ - GOPATH="$(@D)/gopath" \ - CGO_ENABLED=1 - FLANNEL_GLDFLAGS = \ -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) @@ -26,21 +18,12 @@ ifeq ($(BR2_STATIC_LIBS),y) FLANNEL_GLDFLAGS += -extldflags '-static' endif -define FLANNEL_CONFIGURE_CMDS - # Put sources at prescribed GOPATH location. - mkdir -p $(@D)/gopath/src/github.com/coreos - ln -s $(@D) $(@D)/gopath/src/github.com/coreos/flannel -endef - -define FLANNEL_BUILD_CMDS - cd $(@D) && $(FLANNEL_MAKE_ENV) $(HOST_DIR)/bin/go \ - build -v -o $(@D)/bin/flanneld -ldflags "$(FLANNEL_GLDFLAGS)" . -endef +FLANNEL_BUILD_OPTS = -ldflags "$(FLANNEL_GLDFLAGS)" +# Install flannel to its well known location. define FLANNEL_INSTALL_TARGET_CMDS - # Install flannel to its well known location. - $(INSTALL) -D -m 0755 $(@D)/bin/flanneld $(TARGET_DIR)/opt/bin/flanneld + $(INSTALL) -D -m 0755 $(FLANNEL_EXECUTABLE) $(TARGET_DIR)/opt/bin/flanneld $(INSTALL) -D -m 0755 $(@D)/dist/mk-docker-opts.sh $(TARGET_DIR)/opt/bin/mk-docker-opts.sh endef -$(eval $(generic-package)) +$(eval $(golang-package))