Initial spec file

This commit is contained in:
Derek Parker 2018-11-01 13:37:02 -07:00
parent d30f6c2bdd
commit 1881006b0f
3 changed files with 265 additions and 0 deletions

94
delve.spec Normal file
View File

@ -0,0 +1,94 @@
# Run tests in check section
%bcond_without check
# https://github.com/derekparker/delve
%global goipath github.com/derekparker/delve
Version: 1.1.0
%global common_description %{expand:
Delve is a debugger for the Go programming language. The goal of the project
is to provide a simple, full featured debugging tool for Go. Delve should be
easy to invoke and easy to use. Chances are if you're using a debugger, things
aren't going your way. With that in mind, Delve should stay out of your way as
much as possible.}
%gometa
Name: delve
Release: 1%{?dist}
Summary: A debugger for the Go programming language
# Detected licences
# - Expat License at 'LICENSE'
License: MIT
URL: %{gourl}
Source0: %{gosource}
Patch1: ./eval-symlink-in-test.patch
Patch2: ./test-fixture-vendor-to-internal.patch
BuildRequires: golang(github.com/cosiner/argv)
BuildRequires: golang(github.com/mattn/go-isatty)
BuildRequires: golang(github.com/peterh/liner)
BuildRequires: golang(github.com/pkg/profile)
BuildRequires: golang(github.com/sirupsen/logrus)
BuildRequires: golang(github.com/spf13/cobra)
BuildRequires: golang(golang.org/x/arch/x86/x86asm)
BuildRequires: golang(golang.org/x/sys/unix)
BuildRequires: golang(golang.org/x/sys/windows)
BuildRequires: golang(gopkg.in/yaml.v2)
%description
%{common_description}
%package -n %{goname}-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{goname}-devel
%{common_description}
This package contains library source intended for
building other packages which use import path with
%{goipath} prefix.
%prep
%forgesetup
%patch1 -p1
%patch2 -p1
rm -rf vendor/
%build
%gobuildroot
%gobuild -o _bin/dlv %{goipath}/cmd/dlv
%install
%goinstall
install -Dpm 0755 _bin/dlv %{buildroot}%{_bindir}/dlv
%if %{with check}
%check
%gochecks
%endif
%files
%license LICENSE
%doc CONTRIBUTING.md CHANGELOG.md
%doc Documentation/*
%{_bindir}/dlv
%files -n %{goname}-devel -f devel.file-list
%license LICENSE
%changelog
* Fri Nov 2 2018 Derek Parker <deparker@redhat.com> - 1.1.0-1
- First package for Fedora

View File

@ -0,0 +1,29 @@
From de6682d29149cc8f2131d295d68a5e3d65102590 Mon Sep 17 00:00:00 2001
From: Derek Parker <parkerderek86@gmail.com>
Date: Fri, 4 Jan 2019 02:03:16 -0800
Subject: [PATCH] pkg/proc/test: Eval symlinks for test source (#1452)
Some build environments (such as when building RPMs) enjoy symlinking
things. This unfortunately causes our tests to fail as we record the
path of fixtures and use that when looking up file:line information.
However, the debug info in the binary records the original file
location, not the location of the symlink.
---
pkg/proc/test/support.go | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/pkg/proc/test/support.go b/pkg/proc/test/support.go
index 733bad85..5f4a4127 100644
--- a/pkg/proc/test/support.go
+++ b/pkg/proc/test/support.go
@@ -150,6 +150,10 @@ func BuildFixture(name string, flags BuildFlags) Fixture {
source, _ := filepath.Abs(path)
source = filepath.ToSlash(source)
+ sympath, err := filepath.EvalSymlinks(source)
+ if err == nil {
+ source = strings.Replace(sympath, "\\", "/", -1)
+ }
fixture := Fixture{Name: name, Path: tmpfile, Source: source}

View File

@ -0,0 +1,142 @@
From 73d636f7d7adf159e26f35f37aba514f647492ce Mon Sep 17 00:00:00 2001
From: aarzilli <alessandro.arzilli@gmail.com>
Date: Tue, 6 Nov 2018 12:11:51 +0100
Subject: [PATCH] tests: rename _fixtures/vendor to _fixtures/internal
Some tests used a fake vendor directory placed inside _fixtures to
import some support packages.
In go.mod mode vendor directory are only supported on the root of the
project, which breaks some of our tests.
Since vendor directories outside the root of the project are so rare
anyway it's possible that a future version of go will stop supporting
it even in GOPATH mode.
Also it was weird and unnecessary in the first place anyawy.
---
_fixtures/consts.go | 2 +-
_fixtures/dotpackagesiface.go | 4 ++--
_fixtures/{vendor => internal}/dir.io/dir.go | 0
.../{vendor => internal}/dir.io/io.io/io.go | 0
.../{vendor => internal}/dir0/pkg/main.go | 0
.../dir0/renamedpackage/main.go | 0
.../{vendor => internal}/dir1/pkg/main.go | 0
_fixtures/pkgrenames.go | 6 ++---
service/test/variables_test.go | 24 +++++++++----------
9 files changed, 18 insertions(+), 18 deletions(-)
rename _fixtures/{vendor => internal}/dir.io/dir.go (100%)
rename _fixtures/{vendor => internal}/dir.io/io.io/io.go (100%)
rename _fixtures/{vendor => internal}/dir0/pkg/main.go (100%)
rename _fixtures/{vendor => internal}/dir0/renamedpackage/main.go (100%)
rename _fixtures/{vendor => internal}/dir1/pkg/main.go (100%)
diff --git a/_fixtures/consts.go b/_fixtures/consts.go
index 531a27db..54bfa8b2 100644
--- a/_fixtures/consts.go
+++ b/_fixtures/consts.go
@@ -1,8 +1,8 @@
package main
import (
- "dir0/pkg"
"fmt"
+ "github.com/derekparker/delve/_fixtures/internal/dir0/pkg"
"runtime"
)
diff --git a/_fixtures/dotpackagesiface.go b/_fixtures/dotpackagesiface.go
index 5ad147c2..5952ebeb 100644
--- a/_fixtures/dotpackagesiface.go
+++ b/_fixtures/dotpackagesiface.go
@@ -1,9 +1,9 @@
package main
import (
- "dir.io"
- "dir.io/io.io"
"fmt"
+ "github.com/derekparker/delve/_fixtures/internal/dir.io"
+ "github.com/derekparker/delve/_fixtures/internal/dir.io/io.io"
"runtime"
)
diff --git a/_fixtures/vendor/dir.io/dir.go b/_fixtures/internal/dir.io/dir.go
similarity index 100%
rename from _fixtures/vendor/dir.io/dir.go
rename to _fixtures/internal/dir.io/dir.go
diff --git a/_fixtures/vendor/dir.io/io.io/io.go b/_fixtures/internal/dir.io/io.io/io.go
similarity index 100%
rename from _fixtures/vendor/dir.io/io.io/io.go
rename to _fixtures/internal/dir.io/io.io/io.go
diff --git a/_fixtures/vendor/dir0/pkg/main.go b/_fixtures/internal/dir0/pkg/main.go
similarity index 100%
rename from _fixtures/vendor/dir0/pkg/main.go
rename to _fixtures/internal/dir0/pkg/main.go
diff --git a/_fixtures/vendor/dir0/renamedpackage/main.go b/_fixtures/internal/dir0/renamedpackage/main.go
similarity index 100%
rename from _fixtures/vendor/dir0/renamedpackage/main.go
rename to _fixtures/internal/dir0/renamedpackage/main.go
diff --git a/_fixtures/vendor/dir1/pkg/main.go b/_fixtures/internal/dir1/pkg/main.go
similarity index 100%
rename from _fixtures/vendor/dir1/pkg/main.go
rename to _fixtures/internal/dir1/pkg/main.go
diff --git a/_fixtures/pkgrenames.go b/_fixtures/pkgrenames.go
index d315e6b7..6e0882dc 100644
--- a/_fixtures/pkgrenames.go
+++ b/_fixtures/pkgrenames.go
@@ -8,9 +8,9 @@ import (
pkg1 "go/ast"
pkg2 "net/http"
- "dir0/pkg"
- "dir0/renamedpackage"
- dir1pkg "dir1/pkg"
+ "github.com/derekparker/delve/_fixtures/internal/dir0/pkg"
+ "github.com/derekparker/delve/_fixtures/internal/dir0/renamedpackage"
+ dir1pkg "github.com/derekparker/delve/_fixtures/internal/dir1/pkg"
)
func main() {
diff --git a/service/test/variables_test.go b/service/test/variables_test.go
index 83fb6e7a..0e29202a 100644
--- a/service/test/variables_test.go
+++ b/service/test/variables_test.go
@@ -978,20 +978,20 @@ func TestPackageRenames(t *testing.T) {
{"amap", true, "interface {}(map[go/ast.BadExpr]net/http.Request) [{From: 2, To: 3}: *{Method: \"othermethod\", …", "", "interface {}", nil},
// Package name that doesn't match import path
- {"iface3", true, `interface {}(*github.com/derekparker/delve/_fixtures/vendor/dir0/renamedpackage.SomeType) *{A: true}`, "", "interface {}", nil},
+ {"iface3", true, `interface {}(*github.com/derekparker/delve/_fixtures/internal/dir0/renamedpackage.SomeType) *{A: true}`, "", "interface {}", nil},
// Interfaces to anonymous types
{"amap2", true, "interface {}(*map[go/ast.BadExpr]net/http.Request) *[{From: 2, To: 3}: *{Method: \"othermethod\", …", "", "interface {}", nil},
- {"dir0someType", true, "interface {}(*github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType) *{X: 3}", "", "interface {}", nil},
- {"dir1someType", true, "interface {}(github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType) {X: 1, Y: 2}", "", "interface {}", nil},
- {"amap3", true, "interface {}(map[github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType]github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType) [{X: 4}: {X: 5, Y: 6}, ]", "", "interface {}", nil},
- {"anarray", true, `interface {}([2]github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType) [{X: 1},{X: 2}]`, "", "interface {}", nil},
- {"achan", true, `interface {}(chan github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType) chan github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType 0/0`, "", "interface {}", nil},
- {"aslice", true, `interface {}([]github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType) [{X: 3},{X: 4}]`, "", "interface {}", nil},
- {"afunc", true, `interface {}(func(github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType, github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType)) main.main.func1`, "", "interface {}", nil},
- {"astruct", true, `interface {}(*struct { A github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType; B github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType }) *{A: github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType {X: 1, Y: 2}, B: github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType {X: 3}}`, "", "interface {}", nil},
- {"astruct2", true, `interface {}(*struct { github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType; X int }) *{SomeType: github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType {X: 1, Y: 2}, X: 10}`, "", "interface {}", nil},
- {"iface2iface", true, `interface {}(*interface { AMethod(int) int; AnotherMethod(int) int }) **github.com/derekparker/delve/_fixtures/vendor/dir0/pkg.SomeType {X: 4}`, "", "interface {}", nil},
+ {"dir0someType", true, "interface {}(*github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType) *{X: 3}", "", "interface {}", nil},
+ {"dir1someType", true, "interface {}(github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType) {X: 1, Y: 2}", "", "interface {}", nil},
+ {"amap3", true, "interface {}(map[github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType]github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType) [{X: 4}: {X: 5, Y: 6}, ]", "", "interface {}", nil},
+ {"anarray", true, `interface {}([2]github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType) [{X: 1},{X: 2}]`, "", "interface {}", nil},
+ {"achan", true, `interface {}(chan github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType) chan github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType 0/0`, "", "interface {}", nil},
+ {"aslice", true, `interface {}([]github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType) [{X: 3},{X: 4}]`, "", "interface {}", nil},
+ {"afunc", true, `interface {}(func(github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType, github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType)) main.main.func1`, "", "interface {}", nil},
+ {"astruct", true, `interface {}(*struct { A github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType; B github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType }) *{A: github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType {X: 1, Y: 2}, B: github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType {X: 3}}`, "", "interface {}", nil},
+ {"astruct2", true, `interface {}(*struct { github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType; X int }) *{SomeType: github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType {X: 1, Y: 2}, X: 10}`, "", "interface {}", nil},
+ {"iface2iface", true, `interface {}(*interface { AMethod(int) int; AnotherMethod(int) int }) **github.com/derekparker/delve/_fixtures/internal/dir0/pkg.SomeType {X: 4}`, "", "interface {}", nil},
{`"dir0/pkg".A`, false, "0", "", "int", nil},
{`"dir1/pkg".A`, false, "1", "", "int", nil},
@@ -1010,7 +1010,7 @@ func TestPackageRenames(t *testing.T) {
if ver.Major > 0 && !ver.AfterOrEqual(goversion.GoVersion{1, 9, -1, 0, 0, ""}) {
// before 1.9 embedded struct field have fieldname == type
if tc.name == "astruct2" {
- tc.value = `interface {}(*struct { github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType; X int }) *{github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType: github.com/derekparker/delve/_fixtures/vendor/dir1/pkg.SomeType {X: 1, Y: 2}, X: 10}`
+ tc.value = `interface {}(*struct { github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType; X int }) *{github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType: github.com/derekparker/delve/_fixtures/internal/dir1/pkg.SomeType {X: 1, Y: 2}, X: 10}`
}
}
variable, err := evalVariable(p, tc.name, pnormalLoadConfig)