nomad: update to 0.9.0.

- Updated to build new UI with yarn. Broken on i686 because yarn can't
  be built for it -- works fine when cross-compiling.

- Commit now set in version string. _git_commit must be updated to the
  version's tag alongside the version for this to be correct.

- Removed golang.org/x/crypto/blake2b version workaround.

- Includes upstream patch to disable nvidia support on musl systems.

Closes: #10766 [via git-merge-pr]
This commit is contained in:
Noel Cower 2019-04-09 20:47:33 -07:00 committed by Michael Aldridge
parent 851a83b478
commit 770e5ba3d9
2 changed files with 106 additions and 9 deletions

View file

@ -0,0 +1,90 @@
From a09e3bf1a130cdc70dd07b0d5adc5ab17d0f9131 Mon Sep 17 00:00:00 2001
From: Mahmood Ali <mahmood@hashicorp.com>
Date: Wed, 10 Apr 2019 09:07:08 -0400
Subject: [PATCH] Allow compiling without nvidia integration
nvidia library use of dynamic library seems to conflict with alpine and
musl based OSes. This adds a `nonvidia` tag to allow compiling nomad
for alpine images.
The nomad releases currently only support glibc based OS environments,
so we default to compiling with nvidia.
---
drivers/docker/driver.go | 6 ++++--
helper/pluginutils/catalog/register_linux.go | 2 --
.../pluginutils/catalog/register_nvidia_linux.go | 14 ++++++++++++++
3 files changed, 18 insertions(+), 4 deletions(-)
create mode 100644 helper/pluginutils/catalog/register_nvidia_linux.go
diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go
index 3403c2621..62830089b 100644
--- a/drivers/docker/driver.go
+++ b/drivers/docker/driver.go
@@ -18,7 +18,6 @@ import (
multierror "github.com/hashicorp/go-multierror"
plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/nomad/client/taskenv"
- "github.com/hashicorp/nomad/devices/gpu/nvidia"
"github.com/hashicorp/nomad/drivers/docker/docklog"
"github.com/hashicorp/nomad/drivers/shared/eventer"
nstructs "github.com/hashicorp/nomad/nomad/structs"
@@ -56,6 +55,9 @@ var (
// taskHandleVersion is the version of task handle which this driver sets
// and understands how to decode driver state
taskHandleVersion = 1
+
+ // Nvidia-container-runtime environment variable names
+ nvidiaVisibleDevices = "NVIDIA_VISIBLE_DEVICES"
)
type Driver struct {
@@ -684,7 +686,7 @@ func (d *Driver) createContainerConfig(task *drivers.TaskConfig, driverConfig *T
PidsLimit: driverConfig.PidsLimit,
}
- if _, ok := task.DeviceEnv[nvidia.NvidiaVisibleDevices]; ok {
+ if _, ok := task.DeviceEnv[nvidiaVisibleDevices]; ok {
if !d.gpuRuntime {
return c, fmt.Errorf("requested docker-runtime %q was not found", d.config.GPURuntimeName)
}
diff --git a/helper/pluginutils/catalog/register_linux.go b/helper/pluginutils/catalog/register_linux.go
index bb5175d11..42314cb57 100644
--- a/helper/pluginutils/catalog/register_linux.go
+++ b/helper/pluginutils/catalog/register_linux.go
@@ -1,7 +1,6 @@
package catalog
import (
- "github.com/hashicorp/nomad/devices/gpu/nvidia"
"github.com/hashicorp/nomad/drivers/rkt"
)
@@ -10,5 +9,4 @@ import (
// register_XXX.go file.
func init() {
RegisterDeferredConfig(rkt.PluginID, rkt.PluginConfig, rkt.PluginLoader)
- Register(nvidia.PluginID, nvidia.PluginConfig)
}
diff --git a/helper/pluginutils/catalog/register_nvidia_linux.go b/helper/pluginutils/catalog/register_nvidia_linux.go
new file mode 100644
index 000000000..a50cbe833
--- /dev/null
+++ b/helper/pluginutils/catalog/register_nvidia_linux.go
@@ -0,0 +1,14 @@
+// +build !nonvidia
+
+package catalog
+
+import (
+ "github.com/hashicorp/nomad/devices/gpu/nvidia"
+)
+
+// This file is where all builtin plugins should be registered in the catalog.
+// Plugins with build restrictions should be placed in the appropriate
+// register_XXX.go file.
+func init() {
+ Register(nvidia.PluginID, nvidia.PluginConfig)
+}
--
2.21.0

View file

@ -1,25 +1,32 @@
# Template file for 'nomad'
pkgname=nomad
version=0.8.7
version=0.9.0
revision=1
build_style=go
go_import_path="github.com/hashicorp/nomad"
hostmakedepends="git govendor"
go_build_tags="ui"
_git_commit=28e768721992df5097203eea6e2b247abd56ca6f
go_ldflags="-X github.com/hashicorp/nomad/version.GitCommit=${_git_commit}"
hostmakedepends="git nodejs-lts python yarn"
short_desc="Cluster scheduler designed to easily integrate into existing workflows"
maintainer="iaroki <iaroki@protonmail.com>"
license="MPL-2.0"
homepage="https://www.nomadproject.io/"
distfiles="https://${go_import_path}/archive/v${version}.tar.gz"
checksum=f74eac627de69190e586358b1956573a0ae1a40d0755ecdee163016949f9c7fe
checksum=fb6a0afd6895540dd5e18c878421c39e2a2759e90af8eb771c84802d082475df
patch_args="-Np1"
case "$XBPS_MACHINE" in
i686*) broken="yarn is broken on i686" ;;
esac
case "$XBPS_TARGET_MACHINE" in
*-musl) go_build_tags+=" nonvidia" ;;
esac
pre_build() {
# NOTE: This can probably be removed in nomad 0.9.x if Hashicorp updates
# their golang.org/x/crypto/blake2b dependency.
cd "$GOSRCPATH"
govendor fetch golang.org/x/sys/cpu@1b2967e3c290b7c545b3db0deeda16e9be4f98a2
govendor fetch golang.org/x/crypto/blake2b@de0752318171da717af4ce24d0a2e8626afaeb11
cd -
local depbin="${wrksrc}/_build-depbin"
GOOS= GOARCH= CGO_ENABLED=0 PATH="$depbin:$PATH" GOBIN="$depbin" make deps ember-dist static-assets
}
post_install() {