]> Cypherpunks repositories - gostls13.git/commitdiff
add -P pkgdir option to 6l to have it look first in pkgdir for a package.
authorRob Pike <r@golang.org>
Sat, 18 Apr 2009 02:39:45 +0000 (19:39 -0700)
committerRob Pike <r@golang.org>
Sat, 18 Apr 2009 02:39:45 +0000 (19:39 -0700)
this allows gotest to find the locally built package when doing
make
gotest
without this option, one would have to say
make install
gotest
which kinda defeats the purpose

based on discussions with rsc.

R=ken,rsc
DELTA=12  (10 added, 1 deleted, 1 changed)
OCL=27606
CL=27606

src/cmd/6l/l.h
src/cmd/6l/obj.c
src/cmd/gotest/gotest

index 2d3cd535a111c95e767dfcefdcd3b1620f1aa6eb..84791564638a8102bea1360c8bfc320c5e821986 100644 (file)
@@ -288,6 +288,7 @@ EXTERN      vlong   INITDAT;
 EXTERN int32   INITRND;
 EXTERN vlong   INITTEXT;
 EXTERN char*   INITENTRY;              /* entry point */
+EXTERN char*   PKGDIR;
 EXTERN Biobuf  bso;
 EXTERN int32   bsssize;
 EXTERN int     cbc;
index 3a4208cd229f562fd69eae82ac6aba5fbc7ccf1e..b65c7f313b489faa962509f983015ca91df1bc8f 100644 (file)
@@ -87,6 +87,7 @@ main(int argc, char *argv[])
        INITDAT = -1;
        INITRND = -1;
        INITENTRY = 0;
+       PKGDIR = nil;
 
        ARGBEGIN {
        default:
@@ -122,6 +123,11 @@ main(int argc, char *argv[])
                if(a)
                        INITRND = atolwhex(a);
                break;
+       case 'P':
+               a = ARGF();
+               if(a)
+                       PKGDIR = a;
+               break;
        case 'x':       /* produce export table */
                doexp = 1;
                if(argv[1] != nil && argv[1][0] != '-' && !isobjfile(argv[1]))
@@ -684,9 +690,10 @@ addlib(char *src, char *obj)
        }
 
        if(search) {
-               // try dot and then try goroot.
-               // going to have to do better (probably a command line flag) later.
+               // try dot, -P "pkgdir", and then goroot.
                snprint(pname, sizeof pname, ".%s", name);
+               if(access(pname, AEXIST) < 0 && PKGDIR != nil)
+                       snprint(pname, sizeof pname, "%s/%s", PKGDIR, name);
                if(access(pname, AEXIST) < 0)
                        snprint(pname, sizeof pname, "%s/pkg/%s", goroot, name);
                strcpy(name, pname);
index 2cb08c5290d3954d0a62496055f69a32bb9efeb7..12db03bf30533070efe04eca11fb6b4047aa3b96 100755 (executable)
@@ -13,6 +13,7 @@ GC=${GC:-${O}g}
 GL=${GL:-${O}l}
 export GC GL
 GC="$GC -I _obj"
+GL="$GL -P _obj"
 
 gofiles=""
 loop=true