Skip to content

On a clean clone, Makefile.. doesn't #718

@dgibson

Description

@dgibson

Attempting to build the tool from a fresh clone results in several layers of errors which are totally inscrutable to someone only passingly familiar with Go.

$ git clone https://github.com/opencontainers/runtime-tools.git
Cloning into 'runtime-tools'...
remote: Enumerating objects: 6633, done.
remote: Counting objects: 100% (119/119), done.
remote: Compressing objects: 100% (92/92), done.
remote: Total 6633 (delta 26), reused 74 (delta 14), pack-reused 6514
Receiving objects: 100% (6633/6633), 8.83 MiB | 5.08 MiB/s, done.
Resolving deltas: 100% (3193/3193), done.
$ cd runtime-tools/
$ make
go build -tags "" -ldflags "-X main.gitCommit=59cdde06764be8d761db120664020f0415f36045 -X main.version=0.9.0" -o oci-runtime-tool ./cmd/oci-runtime-tool
go: cannot find main module, but found Godeps/Godeps.json in /home/dwg/src/runtime-tools
	to create a module there, run:
	go mod init
make: *** [Makefile:14: tool] Error 1

So, I try go mod init

$ go mod init
go: creating new go.mod: module github.com/opencontainers/runtime-tools
go: copying requirements from Godeps/Godeps.json
go: to add module requirements and sums:
	go mod tidy
$ make
go build -tags "" -ldflags "-X main.gitCommit=59cdde06764be8d761db120664020f0415f36045 -X main.version=0.9.0" -o oci-runtime-tool ./cmd/oci-runtime-tool
go: inconsistent vendoring in /home/dwg/src/runtime-tools:
	github.com/blang/semver@v3.5.0+incompatible: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/davecgh/go-spew@v1.1.1-0.20170829195320-a47672248388: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/hashicorp/errwrap@v0.0.0-20141028054710-7554cd9344ce: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/hashicorp/go-multierror@v1.0.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/mndrix/tap-go@v0.0.0-20171203230836-629fa407e90b: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/mrunalp/fileutils@v0.0.0-20160930181131-4ee1cc9a8058: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/opencontainers/runtime-spec@v1.0.3-0.20201121164853-7413a7f753e1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/opencontainers/selinux@v1.0.1-0.20190118194646-2d93b96e1a01: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/pmezard/go-difflib@v1.0.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/satori/go.uuid@v1.1.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/sirupsen/logrus@v1.0.2-0.20170713114250-a3f95b5c4235: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/stretchr/testify@v1.1.5-0.20170809224252-890a5c3458b4: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/syndtr/gocapability@v0.0.0-20170704070218-db04d3cc01c8: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/urfave/cli@v1.19.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/xeipuuv/gojsonpointer@v0.0.0-20170225233418-6fe8760cad35: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/xeipuuv/gojsonreference@v0.0.0-20150808065054-e02fc20de94c: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	github.com/xeipuuv/gojsonschema@v0.0.0-20170528113821-0c8571ac0ce1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
	golang.org/x/sys@v0.0.0-20170407050850-f3918c30c5c2: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt

	To ignore the vendor directory, use -mod=readonly or -mod=mod.
	To sync the vendor directory, run:
		go mod vendor
make: *** [Makefile:14: tool] Error 1

So I try go mod vendor,

$ go mod vendor
go: finding module for package gopkg.in/yaml.v2
go: found gopkg.in/yaml.v2 in gopkg.in/yaml.v2 v2.4.0
$ make
go build -tags "" -ldflags "-X main.gitCommit=59cdde06764be8d761db120664020f0415f36045 -X main.version=0.9.0" -o oci-runtime-tool ./cmd/oci-runtime-tool
CGO_ENABLED=0 go build -installsuffix cgo -tags "" -ldflags "-X main.gitCommit=59cdde06764be8d761db120664020f0415f36045 -X main.version=0.9.0" -o runtimetest ./cmd/runtimetest
go build -tags ""  -o validation/config_updates_without_affect/config_updates_without_affect.t validation/config_updates_without_affect/config_updates_without_affect.go
go build -tags ""  -o validation/create/create.t validation/create/create.go
go build -tags ""  -o validation/default/default.t validation/default/default.go
go build -tags ""  -o validation/delete/delete.t validation/delete/delete.go
go build -tags ""  -o validation/delete_only_create_resources/delete_only_create_resources.t validation/delete_only_create_resources/delete_only_create_resources.go
go build -tags ""  -o validation/delete_resources/delete_resources.t validation/delete_resources/delete_resources.go
go build -tags ""  -o validation/hooks/hooks.t validation/hooks/hooks.go
go build -tags ""  -o validation/hooks_stdin/hooks_stdin.t validation/hooks_stdin/hooks_stdin.go
go build -tags ""  -o validation/hostname/hostname.t validation/hostname/hostname.go
go build -tags ""  -o validation/kill/kill.t validation/kill/kill.go
go build -tags ""  -o validation/kill_no_effect/kill_no_effect.t validation/kill_no_effect/kill_no_effect.go
go build -tags ""  -o validation/killsig/killsig.t validation/killsig/killsig.go
go build -tags ""  -o validation/linux_cgroups_blkio/linux_cgroups_blkio.t validation/linux_cgroups_blkio/linux_cgroups_blkio.go
go build -tags ""  -o validation/linux_cgroups_cpus/linux_cgroups_cpus.t validation/linux_cgroups_cpus/linux_cgroups_cpus.go
go build -tags ""  -o validation/linux_cgroups_devices/linux_cgroups_devices.t validation/linux_cgroups_devices/linux_cgroups_devices.go
go build -tags ""  -o validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.t validation/linux_cgroups_hugetlb/linux_cgroups_hugetlb.go
go build -tags ""  -o validation/linux_cgroups_memory/linux_cgroups_memory.t validation/linux_cgroups_memory/linux_cgroups_memory.go
go build -tags ""  -o validation/linux_cgroups_network/linux_cgroups_network.t validation/linux_cgroups_network/linux_cgroups_network.go
go build -tags ""  -o validation/linux_cgroups_pids/linux_cgroups_pids.t validation/linux_cgroups_pids/linux_cgroups_pids.go
go build -tags ""  -o validation/linux_cgroups_relative_blkio/linux_cgroups_relative_blkio.t validation/linux_cgroups_relative_blkio/linux_cgroups_relative_blkio.go
go build -tags ""  -o validation/linux_cgroups_relative_cpus/linux_cgroups_relative_cpus.t validation/linux_cgroups_relative_cpus/linux_cgroups_relative_cpus.go
go build -tags ""  -o validation/linux_cgroups_relative_devices/linux_cgroups_relative_devices.t validation/linux_cgroups_relative_devices/linux_cgroups_relative_devices.go
go build -tags ""  -o validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.t validation/linux_cgroups_relative_hugetlb/linux_cgroups_relative_hugetlb.go
go build -tags ""  -o validation/linux_cgroups_relative_memory/linux_cgroups_relative_memory.t validation/linux_cgroups_relative_memory/linux_cgroups_relative_memory.go
go build -tags ""  -o validation/linux_cgroups_relative_network/linux_cgroups_relative_network.t validation/linux_cgroups_relative_network/linux_cgroups_relative_network.go
go build -tags ""  -o validation/linux_cgroups_relative_pids/linux_cgroups_relative_pids.t validation/linux_cgroups_relative_pids/linux_cgroups_relative_pids.go
go build -tags ""  -o validation/linux_devices/linux_devices.t validation/linux_devices/linux_devices.go
go build -tags ""  -o validation/linux_masked_paths/linux_masked_paths.t validation/linux_masked_paths/linux_masked_paths.go
go build -tags ""  -o validation/linux_mount_label/linux_mount_label.t validation/linux_mount_label/linux_mount_label.go
go build -tags ""  -o validation/linux_ns_itype/linux_ns_itype.t validation/linux_ns_itype/linux_ns_itype.go
go build -tags ""  -o validation/linux_ns_nopath/linux_ns_nopath.t validation/linux_ns_nopath/linux_ns_nopath.go
go build -tags ""  -o validation/linux_ns_path/linux_ns_path.t validation/linux_ns_path/linux_ns_path.go
go build -tags ""  -o validation/linux_ns_path_type/linux_ns_path_type.t validation/linux_ns_path_type/linux_ns_path_type.go
go build -tags ""  -o validation/linux_process_apparmor_profile/linux_process_apparmor_profile.t validation/linux_process_apparmor_profile/linux_process_apparmor_profile.go
go build -tags ""  -o validation/linux_readonly_paths/linux_readonly_paths.t validation/linux_readonly_paths/linux_readonly_paths.go
go build -tags ""  -o validation/linux_rootfs_propagation/linux_rootfs_propagation.t validation/linux_rootfs_propagation/linux_rootfs_propagation.go
go build -tags ""  -o validation/linux_seccomp/linux_seccomp.t validation/linux_seccomp/linux_seccomp.go
go build -tags ""  -o validation/linux_sysctl/linux_sysctl.t validation/linux_sysctl/linux_sysctl.go
go build -tags ""  -o validation/linux_uid_mappings/linux_uid_mappings.t validation/linux_uid_mappings/linux_uid_mappings.go
go build -tags ""  -o validation/misc_props/misc_props.t validation/misc_props/misc_props.go
go build -tags ""  -o validation/mounts/mounts.t validation/mounts/mounts.go
go build -tags ""  -o validation/pidfile/pidfile.t validation/pidfile/pidfile.go
go build -tags ""  -o validation/poststart/poststart.t validation/poststart/poststart.go
go build -tags ""  -o validation/poststart_fail/poststart_fail.t validation/poststart_fail/poststart_fail.go
go build -tags ""  -o validation/poststop/poststop.t validation/poststop/poststop.go
go build -tags ""  -o validation/poststop_fail/poststop_fail.t validation/poststop_fail/poststop_fail.go
go build -tags ""  -o validation/prestart/prestart.t validation/prestart/prestart.go
go build -tags ""  -o validation/prestart_fail/prestart_fail.t validation/prestart_fail/prestart_fail.go
go build -tags ""  -o validation/process/process.t validation/process/process.go
go build -tags ""  -o validation/process_capabilities/process_capabilities.t validation/process_capabilities/process_capabilities.go
go build -tags ""  -o validation/process_capabilities_fail/process_capabilities_fail.t validation/process_capabilities_fail/process_capabilities_fail.go
go build -tags ""  -o validation/process_oom_score_adj/process_oom_score_adj.t validation/process_oom_score_adj/process_oom_score_adj.go
go build -tags ""  -o validation/process_rlimits/process_rlimits.t validation/process_rlimits/process_rlimits.go
go build -tags ""  -o validation/process_rlimits_fail/process_rlimits_fail.t validation/process_rlimits_fail/process_rlimits_fail.go
go build -tags ""  -o validation/process_user/process_user.t validation/process_user/process_user.go
go build -tags ""  -o validation/root_readonly_true/root_readonly_true.t validation/root_readonly_true/root_readonly_true.go
go build -tags ""  -o validation/start/start.t validation/start/start.go
go build -tags ""  -o validation/state/state.t validation/state/state.go

So now it finally builds, but it has made a pile of unexpected changes to my working tree:

$ git ls-files -m
vendor/github.com/hashicorp/errwrap/README.md
vendor/github.com/mndrix/tap-go/gopath/src/github.com/mndrix/tap-go
vendor/github.com/stretchr/testify/LICENCE.txt
vendor/github.com/urfave/cli/generate-flag-types
vendor/github.com/urfave/cli/runtests
vendor/github.com/xeipuuv/gojsonschema/json_schema_test_suite/LICENSE
vendor/golang.org/x/sys/unix/mkall.sh
vendor/golang.org/x/sys/unix/mkerrors.sh
vendor/golang.org/x/sys/unix/mkpost.go
vendor/golang.org/x/sys/unix/mksyscall.pl
vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
vendor/golang.org/x/sys/unix/mksysnum_linux.pl
vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
vendor/golang.org/x/sys/unix/types_darwin.go
vendor/golang.org/x/sys/unix/types_dragonfly.go
vendor/golang.org/x/sys/unix/types_freebsd.go
vendor/golang.org/x/sys/unix/types_linux.go
vendor/golang.org/x/sys/unix/types_netbsd.go
vendor/golang.org/x/sys/unix/types_openbsd.go
vendor/golang.org/x/sys/unix/types_solaris.go
vendor/gopkg.in/yaml.v2/.travis.yml
vendor/gopkg.in/yaml.v2/apic.go
vendor/gopkg.in/yaml.v2/go.mod
vendor/gopkg.in/yaml.v2/yaml.go

There's not much point having a Makefile, if it doesn't actually make the project from scratch. There also aren't useful build instructions in the README.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions