From 8dfc5d4e927e21f42dbd07ea90b67ac1335f2f2d Mon Sep 17 00:00:00 2001 From: Achilleas Anagnostopoulos Date: Sat, 1 Jul 2017 20:37:09 +0100 Subject: [PATCH 1/4] Use pwd as a workspace; move sources to src/gopheros and rewrite imports By setting up pwd as a Go workspace, we can trim import paths from something like "github.com/achilleasa/gopher-os/kernel" to just "kernel". These changes make forking easier and also allows us to move the code to a different git hosting provider without having to rewrite the imports. --- {arch => src/arch}/x86_64/asm/cgo_stubs.s | 0 {arch => src/arch}/x86_64/asm/constants.inc | 0 {arch => src/arch}/x86_64/asm/data.s | 0 {arch => src/arch}/x86_64/asm/multiboot_header.s | 0 {arch => src/arch}/x86_64/asm/rt0_32.s | 0 {arch => src/arch}/x86_64/asm/rt0_64.s | 0 {arch => src/arch}/x86_64/script/grub.cfg | 0 {arch => src/arch}/x86_64/script/linker.ld.in | 0 {kernel => src/gopheros/kernel}/cpu/cpu_amd64.go | 0 {kernel => src/gopheros/kernel}/cpu/cpu_amd64.s | 0 {kernel => src/gopheros/kernel}/driver/tty/tty.go | 0 {kernel => src/gopheros/kernel}/driver/tty/vt.go | 2 +- .../gopheros/kernel}/driver/tty/vt_test.go | 3 +-- .../kernel}/driver/video/console/console.go | 0 .../gopheros/kernel}/driver/video/console/ega.go | 0 .../kernel}/driver/video/console/ega_test.go | 0 {kernel => src/gopheros/kernel}/error.go | 0 {kernel => src/gopheros/kernel}/error_test.go | 0 .../gopheros/kernel}/goruntime/bootstrap.go | 9 ++++----- .../gopheros/kernel}/goruntime/bootstrap.s | 0 .../gopheros/kernel}/goruntime/bootstrap_test.go | 11 +++++------ {kernel => src/gopheros/kernel}/hal/hal.go | 6 +++--- .../gopheros/kernel}/hal/multiboot/multiboot.go | 0 .../kernel}/hal/multiboot/multiboot_test.go | 0 .../gopheros/kernel}/irq/handler_amd64.go | 0 .../gopheros/kernel}/irq/handler_amd64.s | 0 .../gopheros/kernel}/irq/interrupt_amd64.go | 2 +- .../gopheros/kernel}/irq/interrupt_amd64_test.go | 5 ++--- .../gopheros/kernel}/kfmt/early/early_fmt.go | 2 +- .../gopheros/kernel}/kfmt/early/early_fmt_test.go | 7 +++---- {kernel => src/gopheros/kernel}/kmain/kmain.go | 12 ++++++------ .../gopheros/kernel}/mem/constants_amd64.go | 0 {kernel => src/gopheros/kernel}/mem/mem.go | 0 {kernel => src/gopheros/kernel}/mem/mem_test.go | 0 .../kernel}/mem/pmm/allocator/bitmap_allocator.go | 13 ++++++------- .../mem/pmm/allocator/bitmap_allocator_test.go | 11 +++++------ .../gopheros/kernel}/mem/pmm/allocator/bootmem.go | 10 +++++----- .../kernel}/mem/pmm/allocator/bootmem_test.go | 7 +++---- {kernel => src/gopheros/kernel}/mem/pmm/frame.go | 3 +-- .../gopheros/kernel}/mem/pmm/frame_test.go | 3 +-- {kernel => src/gopheros/kernel}/mem/size.go | 0 .../gopheros/kernel}/mem/vmm/addr_space.go | 4 ++-- .../gopheros/kernel}/mem/vmm/addr_space_test.go | 0 .../gopheros/kernel}/mem/vmm/constants_amd64.go | 0 {kernel => src/gopheros/kernel}/mem/vmm/map.go | 9 ++++----- .../gopheros/kernel}/mem/vmm/map_test.go | 7 +++---- {kernel => src/gopheros/kernel}/mem/vmm/page.go | 2 +- .../gopheros/kernel}/mem/vmm/page_test.go | 3 +-- {kernel => src/gopheros/kernel}/mem/vmm/pdt.go | 9 ++++----- .../gopheros/kernel}/mem/vmm/pdt_test.go | 7 +++---- {kernel => src/gopheros/kernel}/mem/vmm/pte.go | 6 +++--- .../gopheros/kernel}/mem/vmm/pte_test.go | 3 +-- .../gopheros/kernel}/mem/vmm/translate.go | 2 +- .../gopheros/kernel}/mem/vmm/translate_test.go | 3 +-- {kernel => src/gopheros/kernel}/mem/vmm/vmm.go | 12 ++++++------ .../gopheros/kernel}/mem/vmm/vmm_test.go | 15 +++++++-------- {kernel => src/gopheros/kernel}/mem/vmm/walk.go | 3 +-- .../gopheros/kernel}/mem/vmm/walk_test.go | 3 +-- {kernel => src/gopheros/kernel}/panic.go | 4 ++-- {kernel => src/gopheros/kernel}/panic_test.go | 7 +++---- stub.go => src/gopheros/stub.go | 2 +- 61 files changed, 93 insertions(+), 114 deletions(-) rename {arch => src/arch}/x86_64/asm/cgo_stubs.s (100%) rename {arch => src/arch}/x86_64/asm/constants.inc (100%) rename {arch => src/arch}/x86_64/asm/data.s (100%) rename {arch => src/arch}/x86_64/asm/multiboot_header.s (100%) rename {arch => src/arch}/x86_64/asm/rt0_32.s (100%) rename {arch => src/arch}/x86_64/asm/rt0_64.s (100%) rename {arch => src/arch}/x86_64/script/grub.cfg (100%) rename {arch => src/arch}/x86_64/script/linker.ld.in (100%) rename {kernel => src/gopheros/kernel}/cpu/cpu_amd64.go (100%) rename {kernel => src/gopheros/kernel}/cpu/cpu_amd64.s (100%) rename {kernel => src/gopheros/kernel}/driver/tty/tty.go (100%) rename {kernel => src/gopheros/kernel}/driver/tty/vt.go (97%) rename {kernel => src/gopheros/kernel}/driver/tty/vt_test.go (96%) rename {kernel => src/gopheros/kernel}/driver/video/console/console.go (100%) rename {kernel => src/gopheros/kernel}/driver/video/console/ega.go (100%) rename {kernel => src/gopheros/kernel}/driver/video/console/ega_test.go (100%) rename {kernel => src/gopheros/kernel}/error.go (100%) rename {kernel => src/gopheros/kernel}/error_test.go (100%) rename {kernel => src/gopheros/kernel}/goruntime/bootstrap.go (96%) rename {kernel => src/gopheros/kernel}/goruntime/bootstrap.s (100%) rename {kernel => src/gopheros/kernel}/goruntime/bootstrap_test.go (96%) rename {kernel => src/gopheros/kernel}/hal/hal.go (72%) rename {kernel => src/gopheros/kernel}/hal/multiboot/multiboot.go (100%) rename {kernel => src/gopheros/kernel}/hal/multiboot/multiboot_test.go (100%) rename {kernel => src/gopheros/kernel}/irq/handler_amd64.go (100%) rename {kernel => src/gopheros/kernel}/irq/handler_amd64.s (100%) rename {kernel => src/gopheros/kernel}/irq/interrupt_amd64.go (95%) rename {kernel => src/gopheros/kernel}/irq/interrupt_amd64_test.go (93%) rename {kernel => src/gopheros/kernel}/kfmt/early/early_fmt.go (99%) rename {kernel => src/gopheros/kernel}/kfmt/early/early_fmt_test.go (95%) rename {kernel => src/gopheros/kernel}/kmain/kmain.go (79%) rename {kernel => src/gopheros/kernel}/mem/constants_amd64.go (100%) rename {kernel => src/gopheros/kernel}/mem/mem.go (100%) rename {kernel => src/gopheros/kernel}/mem/mem_test.go (100%) rename {kernel => src/gopheros/kernel}/mem/pmm/allocator/bitmap_allocator.go (97%) rename {kernel => src/gopheros/kernel}/mem/pmm/allocator/bitmap_allocator_test.go (97%) rename {kernel => src/gopheros/kernel}/mem/pmm/allocator/bootmem.go (95%) rename {kernel => src/gopheros/kernel}/mem/pmm/allocator/bootmem_test.go (96%) rename {kernel => src/gopheros/kernel}/mem/pmm/frame.go (92%) rename {kernel => src/gopheros/kernel}/mem/pmm/frame_test.go (92%) rename {kernel => src/gopheros/kernel}/mem/size.go (100%) rename {kernel => src/gopheros/kernel}/mem/vmm/addr_space.go (93%) rename {kernel => src/gopheros/kernel}/mem/vmm/addr_space_test.go (100%) rename {kernel => src/gopheros/kernel}/mem/vmm/constants_amd64.go (100%) rename {kernel => src/gopheros/kernel}/mem/vmm/map.go (96%) rename {kernel => src/gopheros/kernel}/mem/vmm/map_test.go (98%) rename {kernel => src/gopheros/kernel}/mem/vmm/page.go (92%) rename {kernel => src/gopheros/kernel}/mem/vmm/page_test.go (94%) rename {kernel => src/gopheros/kernel}/mem/vmm/pdt.go (96%) rename {kernel => src/gopheros/kernel}/mem/vmm/pdt_test.go (98%) rename {kernel => src/gopheros/kernel}/mem/vmm/pte.go (94%) rename {kernel => src/gopheros/kernel}/mem/vmm/pte_test.go (95%) rename {kernel => src/gopheros/kernel}/mem/vmm/translate.go (92%) rename {kernel => src/gopheros/kernel}/mem/vmm/translate_test.go (97%) rename {kernel => src/gopheros/kernel}/mem/vmm/vmm.go (94%) rename {kernel => src/gopheros/kernel}/mem/vmm/vmm_test.go (95%) rename {kernel => src/gopheros/kernel}/mem/vmm/walk.go (97%) rename {kernel => src/gopheros/kernel}/mem/vmm/walk_test.go (97%) rename {kernel => src/gopheros/kernel}/panic.go (91%) rename {kernel => src/gopheros/kernel}/panic_test.go (94%) rename stub.go => src/gopheros/stub.go (89%) diff --git a/arch/x86_64/asm/cgo_stubs.s b/src/arch/x86_64/asm/cgo_stubs.s similarity index 100% rename from arch/x86_64/asm/cgo_stubs.s rename to src/arch/x86_64/asm/cgo_stubs.s diff --git a/arch/x86_64/asm/constants.inc b/src/arch/x86_64/asm/constants.inc similarity index 100% rename from arch/x86_64/asm/constants.inc rename to src/arch/x86_64/asm/constants.inc diff --git a/arch/x86_64/asm/data.s b/src/arch/x86_64/asm/data.s similarity index 100% rename from arch/x86_64/asm/data.s rename to src/arch/x86_64/asm/data.s diff --git a/arch/x86_64/asm/multiboot_header.s b/src/arch/x86_64/asm/multiboot_header.s similarity index 100% rename from arch/x86_64/asm/multiboot_header.s rename to src/arch/x86_64/asm/multiboot_header.s diff --git a/arch/x86_64/asm/rt0_32.s b/src/arch/x86_64/asm/rt0_32.s similarity index 100% rename from arch/x86_64/asm/rt0_32.s rename to src/arch/x86_64/asm/rt0_32.s diff --git a/arch/x86_64/asm/rt0_64.s b/src/arch/x86_64/asm/rt0_64.s similarity index 100% rename from arch/x86_64/asm/rt0_64.s rename to src/arch/x86_64/asm/rt0_64.s diff --git a/arch/x86_64/script/grub.cfg b/src/arch/x86_64/script/grub.cfg similarity index 100% rename from arch/x86_64/script/grub.cfg rename to src/arch/x86_64/script/grub.cfg diff --git a/arch/x86_64/script/linker.ld.in b/src/arch/x86_64/script/linker.ld.in similarity index 100% rename from arch/x86_64/script/linker.ld.in rename to src/arch/x86_64/script/linker.ld.in diff --git a/kernel/cpu/cpu_amd64.go b/src/gopheros/kernel/cpu/cpu_amd64.go similarity index 100% rename from kernel/cpu/cpu_amd64.go rename to src/gopheros/kernel/cpu/cpu_amd64.go diff --git a/kernel/cpu/cpu_amd64.s b/src/gopheros/kernel/cpu/cpu_amd64.s similarity index 100% rename from kernel/cpu/cpu_amd64.s rename to src/gopheros/kernel/cpu/cpu_amd64.s diff --git a/kernel/driver/tty/tty.go b/src/gopheros/kernel/driver/tty/tty.go similarity index 100% rename from kernel/driver/tty/tty.go rename to src/gopheros/kernel/driver/tty/tty.go diff --git a/kernel/driver/tty/vt.go b/src/gopheros/kernel/driver/tty/vt.go similarity index 97% rename from kernel/driver/tty/vt.go rename to src/gopheros/kernel/driver/tty/vt.go index edccb8e..f18cef2 100644 --- a/kernel/driver/tty/vt.go +++ b/src/gopheros/kernel/driver/tty/vt.go @@ -1,6 +1,6 @@ package tty -import "github.com/achilleasa/gopher-os/kernel/driver/video/console" +import "gopheros/kernel/driver/video/console" const ( defaultFg = console.LightGrey diff --git a/kernel/driver/tty/vt_test.go b/src/gopheros/kernel/driver/tty/vt_test.go similarity index 96% rename from kernel/driver/tty/vt_test.go rename to src/gopheros/kernel/driver/tty/vt_test.go index 844a81f..4648266 100644 --- a/kernel/driver/tty/vt_test.go +++ b/src/gopheros/kernel/driver/tty/vt_test.go @@ -1,10 +1,9 @@ package tty import ( + "gopheros/kernel/driver/video/console" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/driver/video/console" ) func TestVtPosition(t *testing.T) { diff --git a/kernel/driver/video/console/console.go b/src/gopheros/kernel/driver/video/console/console.go similarity index 100% rename from kernel/driver/video/console/console.go rename to src/gopheros/kernel/driver/video/console/console.go diff --git a/kernel/driver/video/console/ega.go b/src/gopheros/kernel/driver/video/console/ega.go similarity index 100% rename from kernel/driver/video/console/ega.go rename to src/gopheros/kernel/driver/video/console/ega.go diff --git a/kernel/driver/video/console/ega_test.go b/src/gopheros/kernel/driver/video/console/ega_test.go similarity index 100% rename from kernel/driver/video/console/ega_test.go rename to src/gopheros/kernel/driver/video/console/ega_test.go diff --git a/kernel/error.go b/src/gopheros/kernel/error.go similarity index 100% rename from kernel/error.go rename to src/gopheros/kernel/error.go diff --git a/kernel/error_test.go b/src/gopheros/kernel/error_test.go similarity index 100% rename from kernel/error_test.go rename to src/gopheros/kernel/error_test.go diff --git a/kernel/goruntime/bootstrap.go b/src/gopheros/kernel/goruntime/bootstrap.go similarity index 96% rename from kernel/goruntime/bootstrap.go rename to src/gopheros/kernel/goruntime/bootstrap.go index ba8c693..e43e279 100644 --- a/kernel/goruntime/bootstrap.go +++ b/src/gopheros/kernel/goruntime/bootstrap.go @@ -3,12 +3,11 @@ package goruntime import ( + "gopheros/kernel" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm/allocator" + "gopheros/kernel/mem/vmm" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm/allocator" - "github.com/achilleasa/gopher-os/kernel/mem/vmm" ) var ( diff --git a/kernel/goruntime/bootstrap.s b/src/gopheros/kernel/goruntime/bootstrap.s similarity index 100% rename from kernel/goruntime/bootstrap.s rename to src/gopheros/kernel/goruntime/bootstrap.s diff --git a/kernel/goruntime/bootstrap_test.go b/src/gopheros/kernel/goruntime/bootstrap_test.go similarity index 96% rename from kernel/goruntime/bootstrap_test.go rename to src/gopheros/kernel/goruntime/bootstrap_test.go index 22a0f19..298c5d0 100644 --- a/kernel/goruntime/bootstrap_test.go +++ b/src/gopheros/kernel/goruntime/bootstrap_test.go @@ -1,15 +1,14 @@ package goruntime import ( + "gopheros/kernel" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" + "gopheros/kernel/mem/pmm/allocator" + "gopheros/kernel/mem/vmm" "reflect" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" - "github.com/achilleasa/gopher-os/kernel/mem/pmm/allocator" - "github.com/achilleasa/gopher-os/kernel/mem/vmm" ) func TestSysReserve(t *testing.T) { diff --git a/kernel/hal/hal.go b/src/gopheros/kernel/hal/hal.go similarity index 72% rename from kernel/hal/hal.go rename to src/gopheros/kernel/hal/hal.go index 0b211f9..36ea7e0 100644 --- a/kernel/hal/hal.go +++ b/src/gopheros/kernel/hal/hal.go @@ -1,9 +1,9 @@ package hal import ( - "github.com/achilleasa/gopher-os/kernel/driver/tty" - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" + "gopheros/kernel/driver/tty" + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal/multiboot" ) var ( diff --git a/kernel/hal/multiboot/multiboot.go b/src/gopheros/kernel/hal/multiboot/multiboot.go similarity index 100% rename from kernel/hal/multiboot/multiboot.go rename to src/gopheros/kernel/hal/multiboot/multiboot.go diff --git a/kernel/hal/multiboot/multiboot_test.go b/src/gopheros/kernel/hal/multiboot/multiboot_test.go similarity index 100% rename from kernel/hal/multiboot/multiboot_test.go rename to src/gopheros/kernel/hal/multiboot/multiboot_test.go diff --git a/kernel/irq/handler_amd64.go b/src/gopheros/kernel/irq/handler_amd64.go similarity index 100% rename from kernel/irq/handler_amd64.go rename to src/gopheros/kernel/irq/handler_amd64.go diff --git a/kernel/irq/handler_amd64.s b/src/gopheros/kernel/irq/handler_amd64.s similarity index 100% rename from kernel/irq/handler_amd64.s rename to src/gopheros/kernel/irq/handler_amd64.s diff --git a/kernel/irq/interrupt_amd64.go b/src/gopheros/kernel/irq/interrupt_amd64.go similarity index 95% rename from kernel/irq/interrupt_amd64.go rename to src/gopheros/kernel/irq/interrupt_amd64.go index dcab9ef..6525d3e 100644 --- a/kernel/irq/interrupt_amd64.go +++ b/src/gopheros/kernel/irq/interrupt_amd64.go @@ -1,6 +1,6 @@ package irq -import "github.com/achilleasa/gopher-os/kernel/kfmt/early" +import "gopheros/kernel/kfmt/early" // Regs contains a snapshot of the register values when an interrupt occurred. type Regs struct { diff --git a/kernel/irq/interrupt_amd64_test.go b/src/gopheros/kernel/irq/interrupt_amd64_test.go similarity index 93% rename from kernel/irq/interrupt_amd64_test.go rename to src/gopheros/kernel/irq/interrupt_amd64_test.go index 3c2d22a..750482b 100644 --- a/kernel/irq/interrupt_amd64_test.go +++ b/src/gopheros/kernel/irq/interrupt_amd64_test.go @@ -2,11 +2,10 @@ package irq import ( "bytes" + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal" ) func TestRegsPrint(t *testing.T) { diff --git a/kernel/kfmt/early/early_fmt.go b/src/gopheros/kernel/kfmt/early/early_fmt.go similarity index 99% rename from kernel/kfmt/early/early_fmt.go rename to src/gopheros/kernel/kfmt/early/early_fmt.go index b24cbfe..224152c 100644 --- a/kernel/kfmt/early/early_fmt.go +++ b/src/gopheros/kernel/kfmt/early/early_fmt.go @@ -1,6 +1,6 @@ package early -import "github.com/achilleasa/gopher-os/kernel/hal" +import "gopheros/kernel/hal" var ( errMissingArg = []byte("(MISSING)") diff --git a/kernel/kfmt/early/early_fmt_test.go b/src/gopheros/kernel/kfmt/early/early_fmt_test.go similarity index 95% rename from kernel/kfmt/early/early_fmt_test.go rename to src/gopheros/kernel/kfmt/early/early_fmt_test.go index 4a004df..32440a6 100644 --- a/kernel/kfmt/early/early_fmt_test.go +++ b/src/gopheros/kernel/kfmt/early/early_fmt_test.go @@ -2,12 +2,11 @@ package early import ( "bytes" + "gopheros/kernel/driver/tty" + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/driver/tty" - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal" ) func TestPrintf(t *testing.T) { diff --git a/kernel/kmain/kmain.go b/src/gopheros/kernel/kmain/kmain.go similarity index 79% rename from kernel/kmain/kmain.go rename to src/gopheros/kernel/kmain/kmain.go index 631d67e..c39861e 100644 --- a/kernel/kmain/kmain.go +++ b/src/gopheros/kernel/kmain/kmain.go @@ -1,12 +1,12 @@ package kmain import ( - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/goruntime" - "github.com/achilleasa/gopher-os/kernel/hal" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" - "github.com/achilleasa/gopher-os/kernel/mem/pmm/allocator" - "github.com/achilleasa/gopher-os/kernel/mem/vmm" + "gopheros/kernel" + "gopheros/kernel/goruntime" + "gopheros/kernel/hal" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/mem/pmm/allocator" + "gopheros/kernel/mem/vmm" ) var ( diff --git a/kernel/mem/constants_amd64.go b/src/gopheros/kernel/mem/constants_amd64.go similarity index 100% rename from kernel/mem/constants_amd64.go rename to src/gopheros/kernel/mem/constants_amd64.go diff --git a/kernel/mem/mem.go b/src/gopheros/kernel/mem/mem.go similarity index 100% rename from kernel/mem/mem.go rename to src/gopheros/kernel/mem/mem.go diff --git a/kernel/mem/mem_test.go b/src/gopheros/kernel/mem/mem_test.go similarity index 100% rename from kernel/mem/mem_test.go rename to src/gopheros/kernel/mem/mem_test.go diff --git a/kernel/mem/pmm/allocator/bitmap_allocator.go b/src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator.go similarity index 97% rename from kernel/mem/pmm/allocator/bitmap_allocator.go rename to src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator.go index f0e8602..1030b47 100644 --- a/kernel/mem/pmm/allocator/bitmap_allocator.go +++ b/src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator.go @@ -1,16 +1,15 @@ package allocator import ( + "gopheros/kernel" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/kfmt/early" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" + "gopheros/kernel/mem/vmm" "math" "reflect" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" - "github.com/achilleasa/gopher-os/kernel/kfmt/early" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" - "github.com/achilleasa/gopher-os/kernel/mem/vmm" ) var ( diff --git a/kernel/mem/pmm/allocator/bitmap_allocator_test.go b/src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator_test.go similarity index 97% rename from kernel/mem/pmm/allocator/bitmap_allocator_test.go rename to src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator_test.go index d1d214c..a36c80d 100644 --- a/kernel/mem/pmm/allocator/bitmap_allocator_test.go +++ b/src/gopheros/kernel/mem/pmm/allocator/bitmap_allocator_test.go @@ -1,16 +1,15 @@ package allocator import ( + "gopheros/kernel" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" + "gopheros/kernel/mem/vmm" "math" "strconv" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" - "github.com/achilleasa/gopher-os/kernel/mem/vmm" ) func TestSetupPoolBitmaps(t *testing.T) { diff --git a/kernel/mem/pmm/allocator/bootmem.go b/src/gopheros/kernel/mem/pmm/allocator/bootmem.go similarity index 95% rename from kernel/mem/pmm/allocator/bootmem.go rename to src/gopheros/kernel/mem/pmm/allocator/bootmem.go index 86473a9..4970348 100644 --- a/kernel/mem/pmm/allocator/bootmem.go +++ b/src/gopheros/kernel/mem/pmm/allocator/bootmem.go @@ -1,11 +1,11 @@ package allocator import ( - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" - "github.com/achilleasa/gopher-os/kernel/kfmt/early" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" + "gopheros/kernel" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/kfmt/early" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" ) var ( diff --git a/kernel/mem/pmm/allocator/bootmem_test.go b/src/gopheros/kernel/mem/pmm/allocator/bootmem_test.go similarity index 96% rename from kernel/mem/pmm/allocator/bootmem_test.go rename to src/gopheros/kernel/mem/pmm/allocator/bootmem_test.go index ebc4dd7..0494d5a 100644 --- a/kernel/mem/pmm/allocator/bootmem_test.go +++ b/src/gopheros/kernel/mem/pmm/allocator/bootmem_test.go @@ -1,12 +1,11 @@ package allocator import ( + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal" + "gopheros/kernel/hal/multiboot" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal" - "github.com/achilleasa/gopher-os/kernel/hal/multiboot" ) func TestBootMemoryAllocator(t *testing.T) { diff --git a/kernel/mem/pmm/frame.go b/src/gopheros/kernel/mem/pmm/frame.go similarity index 92% rename from kernel/mem/pmm/frame.go rename to src/gopheros/kernel/mem/pmm/frame.go index b7f52e8..10d5df7 100644 --- a/kernel/mem/pmm/frame.go +++ b/src/gopheros/kernel/mem/pmm/frame.go @@ -2,9 +2,8 @@ package pmm import ( + "gopheros/kernel/mem" "math" - - "github.com/achilleasa/gopher-os/kernel/mem" ) // Frame describes a physical memory page index. diff --git a/kernel/mem/pmm/frame_test.go b/src/gopheros/kernel/mem/pmm/frame_test.go similarity index 92% rename from kernel/mem/pmm/frame_test.go rename to src/gopheros/kernel/mem/pmm/frame_test.go index cc01e53..f05968f 100644 --- a/kernel/mem/pmm/frame_test.go +++ b/src/gopheros/kernel/mem/pmm/frame_test.go @@ -1,9 +1,8 @@ package pmm import ( + "gopheros/kernel/mem" "testing" - - "github.com/achilleasa/gopher-os/kernel/mem" ) func TestFrameMethods(t *testing.T) { diff --git a/kernel/mem/size.go b/src/gopheros/kernel/mem/size.go similarity index 100% rename from kernel/mem/size.go rename to src/gopheros/kernel/mem/size.go diff --git a/kernel/mem/vmm/addr_space.go b/src/gopheros/kernel/mem/vmm/addr_space.go similarity index 93% rename from kernel/mem/vmm/addr_space.go rename to src/gopheros/kernel/mem/vmm/addr_space.go index 695168c..af40bee 100644 --- a/kernel/mem/vmm/addr_space.go +++ b/src/gopheros/kernel/mem/vmm/addr_space.go @@ -1,8 +1,8 @@ package vmm import ( - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" + "gopheros/kernel" + "gopheros/kernel/mem" ) var ( diff --git a/kernel/mem/vmm/addr_space_test.go b/src/gopheros/kernel/mem/vmm/addr_space_test.go similarity index 100% rename from kernel/mem/vmm/addr_space_test.go rename to src/gopheros/kernel/mem/vmm/addr_space_test.go diff --git a/kernel/mem/vmm/constants_amd64.go b/src/gopheros/kernel/mem/vmm/constants_amd64.go similarity index 100% rename from kernel/mem/vmm/constants_amd64.go rename to src/gopheros/kernel/mem/vmm/constants_amd64.go diff --git a/kernel/mem/vmm/map.go b/src/gopheros/kernel/mem/vmm/map.go similarity index 96% rename from kernel/mem/vmm/map.go rename to src/gopheros/kernel/mem/vmm/map.go index ccfa128..1edaa5a 100644 --- a/kernel/mem/vmm/map.go +++ b/src/gopheros/kernel/mem/vmm/map.go @@ -1,12 +1,11 @@ package vmm import ( + "gopheros/kernel" + "gopheros/kernel/cpu" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) // ReservedZeroedFrame is a special zero-cleared frame allocated by the diff --git a/kernel/mem/vmm/map_test.go b/src/gopheros/kernel/mem/vmm/map_test.go similarity index 98% rename from kernel/mem/vmm/map_test.go rename to src/gopheros/kernel/mem/vmm/map_test.go index 1ecd15c..70116c1 100644 --- a/kernel/mem/vmm/map_test.go +++ b/src/gopheros/kernel/mem/vmm/map_test.go @@ -1,13 +1,12 @@ package vmm import ( + "gopheros/kernel" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" "runtime" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) func TestNextAddrFn(t *testing.T) { diff --git a/kernel/mem/vmm/page.go b/src/gopheros/kernel/mem/vmm/page.go similarity index 92% rename from kernel/mem/vmm/page.go rename to src/gopheros/kernel/mem/vmm/page.go index f1e9cb4..5f11aff 100644 --- a/kernel/mem/vmm/page.go +++ b/src/gopheros/kernel/mem/vmm/page.go @@ -1,6 +1,6 @@ package vmm -import "github.com/achilleasa/gopher-os/kernel/mem" +import "gopheros/kernel/mem" // Page describes a virtual memory page index. type Page uintptr diff --git a/kernel/mem/vmm/page_test.go b/src/gopheros/kernel/mem/vmm/page_test.go similarity index 94% rename from kernel/mem/vmm/page_test.go rename to src/gopheros/kernel/mem/vmm/page_test.go index 8786e97..8ad9113 100644 --- a/kernel/mem/vmm/page_test.go +++ b/src/gopheros/kernel/mem/vmm/page_test.go @@ -1,9 +1,8 @@ package vmm import ( + "gopheros/kernel/mem" "testing" - - "github.com/achilleasa/gopher-os/kernel/mem" ) func TestPageMethods(t *testing.T) { diff --git a/kernel/mem/vmm/pdt.go b/src/gopheros/kernel/mem/vmm/pdt.go similarity index 96% rename from kernel/mem/vmm/pdt.go rename to src/gopheros/kernel/mem/vmm/pdt.go index 68505cd..012ceba 100644 --- a/kernel/mem/vmm/pdt.go +++ b/src/gopheros/kernel/mem/vmm/pdt.go @@ -1,12 +1,11 @@ package vmm import ( + "gopheros/kernel" + "gopheros/kernel/cpu" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) var ( diff --git a/kernel/mem/vmm/pdt_test.go b/src/gopheros/kernel/mem/vmm/pdt_test.go similarity index 98% rename from kernel/mem/vmm/pdt_test.go rename to src/gopheros/kernel/mem/vmm/pdt_test.go index c971030..b862feb 100644 --- a/kernel/mem/vmm/pdt_test.go +++ b/src/gopheros/kernel/mem/vmm/pdt_test.go @@ -1,13 +1,12 @@ package vmm import ( + "gopheros/kernel" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" "runtime" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) func TestPageDirectoryTableInitAmd64(t *testing.T) { diff --git a/kernel/mem/vmm/pte.go b/src/gopheros/kernel/mem/vmm/pte.go similarity index 94% rename from kernel/mem/vmm/pte.go rename to src/gopheros/kernel/mem/vmm/pte.go index d261a76..5418a01 100644 --- a/kernel/mem/vmm/pte.go +++ b/src/gopheros/kernel/mem/vmm/pte.go @@ -1,9 +1,9 @@ package vmm import ( - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" + "gopheros/kernel" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" ) var ( diff --git a/kernel/mem/vmm/pte_test.go b/src/gopheros/kernel/mem/vmm/pte_test.go similarity index 95% rename from kernel/mem/vmm/pte_test.go rename to src/gopheros/kernel/mem/vmm/pte_test.go index 108986c..1173e64 100644 --- a/kernel/mem/vmm/pte_test.go +++ b/src/gopheros/kernel/mem/vmm/pte_test.go @@ -1,9 +1,8 @@ package vmm import ( + "gopheros/kernel/mem/pmm" "testing" - - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) func TestPageTableEntryFlags(t *testing.T) { diff --git a/kernel/mem/vmm/translate.go b/src/gopheros/kernel/mem/vmm/translate.go similarity index 92% rename from kernel/mem/vmm/translate.go rename to src/gopheros/kernel/mem/vmm/translate.go index a5d9f51..4493f32 100644 --- a/kernel/mem/vmm/translate.go +++ b/src/gopheros/kernel/mem/vmm/translate.go @@ -1,6 +1,6 @@ package vmm -import "github.com/achilleasa/gopher-os/kernel" +import "gopheros/kernel" // Translate returns the physical address that corresponds to the supplied // virtual address or ErrInvalidMapping if the virtual address does not diff --git a/kernel/mem/vmm/translate_test.go b/src/gopheros/kernel/mem/vmm/translate_test.go similarity index 97% rename from kernel/mem/vmm/translate_test.go rename to src/gopheros/kernel/mem/vmm/translate_test.go index 2f9ad78..6d7cca5 100644 --- a/kernel/mem/vmm/translate_test.go +++ b/src/gopheros/kernel/mem/vmm/translate_test.go @@ -1,11 +1,10 @@ package vmm import ( + "gopheros/kernel/mem/pmm" "runtime" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) func TestTranslateAmd64(t *testing.T) { diff --git a/kernel/mem/vmm/vmm.go b/src/gopheros/kernel/mem/vmm/vmm.go similarity index 94% rename from kernel/mem/vmm/vmm.go rename to src/gopheros/kernel/mem/vmm/vmm.go index 9044489..3814347 100644 --- a/kernel/mem/vmm/vmm.go +++ b/src/gopheros/kernel/mem/vmm/vmm.go @@ -1,12 +1,12 @@ package vmm import ( - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/irq" - "github.com/achilleasa/gopher-os/kernel/kfmt/early" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" + "gopheros/kernel" + "gopheros/kernel/cpu" + "gopheros/kernel/irq" + "gopheros/kernel/kfmt/early" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" ) var ( diff --git a/kernel/mem/vmm/vmm_test.go b/src/gopheros/kernel/mem/vmm/vmm_test.go similarity index 95% rename from kernel/mem/vmm/vmm_test.go rename to src/gopheros/kernel/mem/vmm/vmm_test.go index 030c922..bec50d4 100644 --- a/kernel/mem/vmm/vmm_test.go +++ b/src/gopheros/kernel/mem/vmm/vmm_test.go @@ -3,17 +3,16 @@ package vmm import ( "bytes" "fmt" + "gopheros/kernel" + "gopheros/kernel/cpu" + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal" + "gopheros/kernel/irq" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" "strings" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel" - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal" - "github.com/achilleasa/gopher-os/kernel/irq" - "github.com/achilleasa/gopher-os/kernel/mem" - "github.com/achilleasa/gopher-os/kernel/mem/pmm" ) func TestRecoverablePageFault(t *testing.T) { diff --git a/kernel/mem/vmm/walk.go b/src/gopheros/kernel/mem/vmm/walk.go similarity index 97% rename from kernel/mem/vmm/walk.go rename to src/gopheros/kernel/mem/vmm/walk.go index 8c38469..849117a 100644 --- a/kernel/mem/vmm/walk.go +++ b/src/gopheros/kernel/mem/vmm/walk.go @@ -1,9 +1,8 @@ package vmm import ( + "gopheros/kernel/mem" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/mem" ) var ( diff --git a/kernel/mem/vmm/walk_test.go b/src/gopheros/kernel/mem/vmm/walk_test.go similarity index 97% rename from kernel/mem/vmm/walk_test.go rename to src/gopheros/kernel/mem/vmm/walk_test.go index ee235eb..25f1338 100644 --- a/kernel/mem/vmm/walk_test.go +++ b/src/gopheros/kernel/mem/vmm/walk_test.go @@ -1,11 +1,10 @@ package vmm import ( + "gopheros/kernel/mem" "runtime" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/mem" ) func TestPtePtrFn(t *testing.T) { diff --git a/kernel/panic.go b/src/gopheros/kernel/panic.go similarity index 91% rename from kernel/panic.go rename to src/gopheros/kernel/panic.go index 562e3eb..a326266 100644 --- a/kernel/panic.go +++ b/src/gopheros/kernel/panic.go @@ -1,8 +1,8 @@ package kernel import ( - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/kfmt/early" + "gopheros/kernel/cpu" + "gopheros/kernel/kfmt/early" ) var ( diff --git a/kernel/panic_test.go b/src/gopheros/kernel/panic_test.go similarity index 94% rename from kernel/panic_test.go rename to src/gopheros/kernel/panic_test.go index 6e1e6bb..68bfad8 100644 --- a/kernel/panic_test.go +++ b/src/gopheros/kernel/panic_test.go @@ -3,12 +3,11 @@ package kernel import ( "bytes" "errors" + "gopheros/kernel/cpu" + "gopheros/kernel/driver/video/console" + "gopheros/kernel/hal" "testing" "unsafe" - - "github.com/achilleasa/gopher-os/kernel/cpu" - "github.com/achilleasa/gopher-os/kernel/driver/video/console" - "github.com/achilleasa/gopher-os/kernel/hal" ) func TestPanic(t *testing.T) { diff --git a/stub.go b/src/gopheros/stub.go similarity index 89% rename from stub.go rename to src/gopheros/stub.go index 0e62711..73c6d49 100644 --- a/stub.go +++ b/src/gopheros/stub.go @@ -1,6 +1,6 @@ package main -import "github.com/achilleasa/gopher-os/kernel/kmain" +import "gopheros/kernel/kmain" var multibootInfoPtr uintptr From 00fdf7988854485390a92902f81176817df9914f Mon Sep 17 00:00:00 2001 From: Achilleas Anagnostopoulos Date: Sat, 1 Jul 2017 20:38:37 +0100 Subject: [PATCH 2/4] Append pwd to GOPATH when compiling the kernel The Makefile changes create a standalone Go workspace routed at pwd --- Makefile | 33 ++++++++++++++++++--------------- Vagrantfile | 8 ++++++-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 8d861c0..153fe08 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ iso_target := $(BUILD_DIR)/kernel-$(ARCH).iso # If your go is called something else set it on the commandline, like # this: make run GO=go1.8 GO ?= go +GOPATH := $(GOPATH):$(shell pwd) ifeq ($(OS), Linux) export SHELL := /bin/bash -o pipefail @@ -22,13 +23,14 @@ GOROOT := $(shell $(GO) env GOROOT) GC_FLAGS ?= LD_FLAGS := -n -T $(BUILD_DIR)/linker.ld -static --no-ld-generated-unwind-info -AS_FLAGS := -g -f elf64 -F dwarf -I $(BUILD_DIR)/ -I arch/$(ARCH)/asm/ -dNUM_REDIRECTS=$(shell $(GO) run tools/redirects/redirects.go count) +AS_FLAGS := -g -f elf64 -F dwarf -I $(BUILD_DIR)/ -I src/arch/$(ARCH)/asm/ \ + -dNUM_REDIRECTS=$(shell GOPATH=$(GOPATH) $(GO) run tools/redirects/redirects.go count) MIN_OBJCOPY_VERSION := 2.26.0 HAVE_VALID_OBJCOPY := $(shell objcopy -V | head -1 | awk -F ' ' '{print "$(MIN_OBJCOPY_VERSION)\n" $$NF}' | sort -ct. -k1,1n -k2,2n && echo "y") -asm_src_files := $(wildcard arch/$(ARCH)/asm/*.s) -asm_obj_files := $(patsubst arch/$(ARCH)/asm/%.s, $(BUILD_DIR)/arch/$(ARCH)/asm/%.o, $(asm_src_files)) +asm_src_files := $(wildcard src/arch/$(ARCH)/asm/*.s) +asm_obj_files := $(patsubst src/arch/$(ARCH)/asm/%.s, $(BUILD_DIR)/arch/$(ARCH)/asm/%.o, $(asm_src_files)) .PHONY: kernel iso clean binutils_version_check @@ -36,8 +38,8 @@ kernel: binutils_version_check kernel_image kernel_image: $(kernel_target) @echo "[tools:redirects] populating kernel image redirect table" - @$(GO) run tools/redirects/redirects.go populate-table $(kernel_target) - + @GOPATH=$(GOPATH) $(GO) run tools/redirects/redirects.go populate-table $(kernel_target) + $(kernel_target): asm_files linker_script go.o @echo "[$(LD)] linking kernel-$(ARCH).bin" @$(LD) $(LD_FLAGS) -o $(kernel_target) $(asm_obj_files) $(BUILD_DIR)/go.o @@ -46,7 +48,7 @@ go.o: @mkdir -p $(BUILD_DIR) @echo "[go] compiling go sources into a standalone .o file" - @GOARCH=$(GOARCH) GOOS=$(GOOS) $(GO) build -gcflags '$(GC_FLAGS)' -n 2>&1 | sed \ + @GOARCH=$(GOARCH) GOOS=$(GOOS) GOPATH=$(GOPATH) $(GO) build -gcflags '$(GC_FLAGS)' -n gopheros 2>&1 | sed \ -e "1s|^|set -e\n|" \ -e "1s|^|export GOOS=$(GOOS)\n|" \ -e "1s|^|export GOARCH=$(GOARCH)\n|" \ @@ -61,7 +63,8 @@ go.o: @# asm entrypoint code needs to know the address to 'main.main' so we use @# objcopy to make that symbol exportable. Since nasm does not support externs @# with slashes we create a global symbol alias for kernel.Kmain - @echo "[objcopy] creating global symbol alias 'kernel.Kmain' for 'github.com/achilleasa/gopher-os/kernel.Kmain' in go.o" + @echo "[objcopy] create kernel.Kmain alias to gopheros/kernel/kmain.Kmain" + @echo "[objcopy] globalizing symbols {_rt0_interrupt_handlers, runtime.g0/m0/physPageSize}" @objcopy \ --add-symbol kernel.Kmain=.text:0x`nm $(BUILD_DIR)/go.o | grep "kmain.Kmain$$" | cut -d' ' -f1` \ --globalize-symbol _rt0_interrupt_handlers \ @@ -85,17 +88,17 @@ grub-pc-bin_check: linker_script: @echo "[sed] extracting LMA and VMA from constants.inc" @echo "[gcc] pre-processing arch/$(ARCH)/script/linker.ld.in" - @gcc `cat arch/$(ARCH)/asm/constants.inc | sed -e "/^$$/d; /^;/d; s/^/-D/g; s/\s*equ\s*/=/g;" | tr '\n' ' '` \ + @gcc `cat src/arch/$(ARCH)/asm/constants.inc | sed -e "/^$$/d; /^;/d; s/^/-D/g; s/\s*equ\s*/=/g;" | tr '\n' ' '` \ -E -x \ - c arch/$(ARCH)/script/linker.ld.in | grep -v "^#" > $(BUILD_DIR)/linker.ld + c src/arch/$(ARCH)/script/linker.ld.in | grep -v "^#" > $(BUILD_DIR)/linker.ld $(BUILD_DIR)/go_asm_offsets.inc: @mkdir -p $(BUILD_DIR) - - @echo "[tools:offsets] calculating OS/arch-specific offsets for g, m and stack structs" - @$(GO) run tools/offsets/offsets.go -target-os $(GOOS) -target-arch $(GOARCH) -go-binary $(GO) -out $@ -$(BUILD_DIR)/arch/$(ARCH)/asm/%.o: arch/$(ARCH)/asm/%.s + @echo "[tools:offsets] calculating OS/arch-specific offsets for g, m and stack structs" + @GOPATH=$(GOPATH) $(GO) run tools/offsets/offsets.go -target-os $(GOOS) -target-arch $(GOARCH) -go-binary $(GO) -out $@ + +$(BUILD_DIR)/arch/$(ARCH)/asm/%.o: src/arch/$(ARCH)/asm/%.s @mkdir -p $(shell dirname $@) @echo "[$(AS)] $<" @$(AS) $(AS_FLAGS) $< -o $@ @@ -109,12 +112,12 @@ $(iso_target): iso_prereq kernel_image @mkdir -p $(BUILD_DIR)/isofiles/boot/grub @cp $(kernel_target) $(BUILD_DIR)/isofiles/boot/kernel.bin - @cp arch/$(ARCH)/script/grub.cfg $(BUILD_DIR)/isofiles/boot/grub + @cp src/arch/$(ARCH)/script/grub.cfg $(BUILD_DIR)/isofiles/boot/grub @grub-mkrescue -o $(iso_target) $(BUILD_DIR)/isofiles 2>&1 | sed -e "s/^/ | /g" @rm -r $(BUILD_DIR)/isofiles else -VAGRANT_SRC_FOLDER = /home/vagrant/workspace/src/github.com/achilleasa/gopher-os +VAGRANT_SRC_FOLDER = /home/vagrant/workspace .PHONY: kernel iso vagrant-up vagrant-down vagrant-ssh run gdb clean diff --git a/Vagrantfile b/Vagrantfile index b637b4e..a440a79 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -13,15 +13,19 @@ Vagrant.configure("2") do |config| config.vm.box = "minimal/xenial64" - config.vm.synced_folder "./", "/home/vagrant/workspace/src/github.com/achilleasa/gopher-os" + config.vm.synced_folder "./", "/home/vagrant/workspace" config.vm.provision "shell", inline: <<-SHELL apt-get update apt-get install -y nasm make xorriso [ ! -d "/usr/local/go" ] && wget -qO- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz | tar xz -C /usr/local + mkdir -p /home/vagrant/go/src + mkdir -p /home/vagrant/go/bin + mkdir -p /home/vagrant/go/pkg + chown -R vagrant:vagrant /home/vagrant/go echo "export GOROOT=/usr/local/go" > /etc/profile.d/go.sh echo "export GOBIN=/usr/local/go/bin" >> /etc/profile.d/go.sh - echo "export GOPATH=/home/vagrant/workspace" >> /etc/profile.d/go.sh + echo "export GOPATH=/home/vagrant/go" >> /etc/profile.d/go.sh echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile.d/go.sh SHELL end From f9612709045cf526b7dea08cb6ae8131ca76be59 Mon Sep 17 00:00:00 2001 From: Achilleas Anagnostopoulos Date: Sat, 1 Jul 2017 20:39:47 +0100 Subject: [PATCH 3/4] Use the new Go workspace paths when building qualified symbol names --- tools/redirects/redirects.go | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/tools/redirects/redirects.go b/tools/redirects/redirects.go index 18ecdfb..5f70aa5 100644 --- a/tools/redirects/redirects.go +++ b/tools/redirects/redirects.go @@ -15,6 +15,8 @@ import ( "strings" ) +const pathToKernel = "src/gopheros/" + type redirect struct { src string dst string @@ -28,16 +30,6 @@ func exit(err error) { os.Exit(1) } -func pkgPrefix() (string, error) { - goPath := os.Getenv("GOPATH") + "/src/" - cwd, err := os.Getwd() - if err != nil { - return "", err - } - - return strings.TrimPrefix(cwd, goPath), nil -} - func collectGoFiles(root string) ([]string, error) { var goFiles []string err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { @@ -61,11 +53,6 @@ func collectGoFiles(root string) ([]string, error) { func findRedirects(goFiles []string) ([]*redirect, error) { var redirects []*redirect - prefix, err := pkgPrefix() - if err != nil { - return nil, err - } - for _, goFile := range goFiles { fset := token.NewFileSet() @@ -88,9 +75,8 @@ func findRedirects(goFiles []string) ([]*redirect, error) { } // build qualified name to fn - fqName := fmt.Sprintf("%s/%s.%s", - prefix, - goFile[:strings.LastIndexByte(goFile, '/')], + fqName := fmt.Sprintf("%s.%s", + goFile[strings.Index(goFile, "gopheros"):strings.LastIndexByte(goFile, '/')], fnDecl.Name, ) @@ -185,8 +171,8 @@ func elfResolveRedirectSymbols(redirects []*redirect, imgFile string) error { func main() { flag.Parse() - if matches, _ := filepath.Glob("kernel/"); len(matches) != 1 { - exit(errors.New("this tool must be run from the kernel root folder")) + if matches, _ := filepath.Glob(pathToKernel); len(matches) != 1 { + exit(errors.New("this tool must be run from the gopher-os root folder")) } if len(flag.Args()) == 0 { @@ -206,7 +192,7 @@ func main() { exit(fmt.Errorf("unknown command %q", cmd)) } - goFiles, err := collectGoFiles("kernel/") + goFiles, err := collectGoFiles(pathToKernel) if err != nil { exit(err) } From 5f8f42a0c5472b0fb80518c716469a680720aaef Mon Sep 17 00:00:00 2001 From: Achilleas Anagnostopoulos Date: Sat, 1 Jul 2017 20:50:27 +0100 Subject: [PATCH 4/4] Override GOPATH when collecting coverage --- .travis.yml | 4 +--- Makefile | 10 +++++++--- coverage.sh | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index d807a66..aefbc09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,8 @@ language: go sudo: required go: - 1.8 -before_install: - - go get -t -v ./... script: - make lint - - bash coverage.sh + - make collect-coverage after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/Makefile b/Makefile index 153fe08..ec80919 100644 --- a/Makefile +++ b/Makefile @@ -119,7 +119,7 @@ $(iso_target): iso_prereq kernel_image else VAGRANT_SRC_FOLDER = /home/vagrant/workspace -.PHONY: kernel iso vagrant-up vagrant-down vagrant-ssh run gdb clean +.PHONY: kernel iso vagrant-up vagrant-down vagrant-ssh run gdb clean lint lint-check-deps test collect-coverage kernel: vagrant ssh -c 'cd $(VAGRANT_SRC_FOLDER); make GC_FLAGS="$(GC_FLAGS)" kernel' @@ -173,8 +173,12 @@ lint: lint-check-deps ./... lint-check-deps: - @$(GO) get -u gopkg.in/alecthomas/gometalinter.v1 + @GOPATH=$(GOPATH) $(GO) get -u -t gopkg.in/alecthomas/gometalinter.v1 @gometalinter.v1 --install >/dev/null test: - $(GO) test -cover ./... + GOPATH=$(GOPATH) $(GO) test -cover gopheros/... + +collect-coverage: + GOPATH=$(GOPATH) sh coverage.sh + diff --git a/coverage.sh b/coverage.sh index d91f8fa..4b0827a 100644 --- a/coverage.sh +++ b/coverage.sh @@ -3,7 +3,7 @@ set -e echo "" > coverage.txt -for d in $(go list ./... | grep -v vendor); do +for d in $(go list ./... | grep gopheros); do go test -v -race -coverprofile=profile.out -covermode=atomic $d if [ -f profile.out ]; then cat profile.out >> coverage.txt