From 03e0e4c43a935859f0decce03b2556877294e437 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Mon, 10 Jun 2013 20:26:49 -0400 Subject: [PATCH] Fix collects for setup with single-collect package Before this commit, raco would try to setup each subdirectory inside of a single collection package as separate collects. --- collects/pkg/lib.rkt | 31 ++++++++++--------- .../tests/pkg/test-pkgs/pkg-test3-v3/info.rkt | 3 ++ .../tests/pkg/test-pkgs/pkg-test3-v3/main.rkt | 4 +++ .../pkg/test-pkgs/pkg-test3-v3/subdir/README | 3 ++ collects/tests/pkg/tests-raco.rkt | 8 ++++- 5 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 collects/tests/pkg/test-pkgs/pkg-test3-v3/info.rkt create mode 100644 collects/tests/pkg/test-pkgs/pkg-test3-v3/main.rkt create mode 100644 collects/tests/pkg/test-pkgs/pkg-test3-v3/subdir/README diff --git a/collects/pkg/lib.rkt b/collects/pkg/lib.rkt index d2c4092baa..690109880f 100644 --- a/collects/pkg/lib.rkt +++ b/collects/pkg/lib.rkt @@ -1250,20 +1250,23 @@ (define (get-setup-collects pkg-directories metadata-ns) (maybe-append (for/list ([pkg-dir (in-list pkg-directories)]) - (get-metadata metadata-ns pkg-dir - 'setup-collects (lambda () (package-collections - pkg-dir - metadata-ns)) - #:checker (lambda (v) - (unless (or (eq? v 'all) - (and (list? v) - (for ([c (in-list v)]) - (or (path-string? c) - (and (list? c) - (pair? c) - (andmap path-string? c)))))) - (pkg-error "bad 'setup-collects value\n value: ~e" - v))))))) + (define single-collect + (pkg-single-collection pkg-dir #:namespace metadata-ns)) + (or (and single-collect (list single-collect)) + (get-metadata metadata-ns pkg-dir + 'setup-collects (lambda () (package-collections + pkg-dir + metadata-ns)) + #:checker (lambda (v) + (unless (or (eq? v 'all) + (and (list? v) + (for ([c (in-list v)]) + (or (path-string? c) + (and (list? c) + (pair? c) + (andmap path-string? c)))))) + (pkg-error "bad 'setup-collects value\n value: ~e" + v)))))))) (define (pkg-install descs #:old-infos [old-infos empty] diff --git a/collects/tests/pkg/test-pkgs/pkg-test3-v3/info.rkt b/collects/tests/pkg/test-pkgs/pkg-test3-v3/info.rkt new file mode 100644 index 0000000000..4de4652394 --- /dev/null +++ b/collects/tests/pkg/test-pkgs/pkg-test3-v3/info.rkt @@ -0,0 +1,3 @@ +#lang setup/infotab +(define single-collection "pkg-test3") + diff --git a/collects/tests/pkg/test-pkgs/pkg-test3-v3/main.rkt b/collects/tests/pkg/test-pkgs/pkg-test3-v3/main.rkt new file mode 100644 index 0000000000..5dbec17d00 --- /dev/null +++ b/collects/tests/pkg/test-pkgs/pkg-test3-v3/main.rkt @@ -0,0 +1,4 @@ +#lang racket/base + +(printf "pkg-test3/main loaded\n") +(exit 0) diff --git a/collects/tests/pkg/test-pkgs/pkg-test3-v3/subdir/README b/collects/tests/pkg/test-pkgs/pkg-test3-v3/subdir/README new file mode 100644 index 0000000000..36c1645d1a --- /dev/null +++ b/collects/tests/pkg/test-pkgs/pkg-test3-v3/subdir/README @@ -0,0 +1,3 @@ +This subdir exists to test that raco pkg correctly handles +single collections with subdirectories inside them. + diff --git a/collects/tests/pkg/tests-raco.rkt b/collects/tests/pkg/tests-raco.rkt index ead0ac504c..eb4fac0e66 100644 --- a/collects/tests/pkg/tests-raco.rkt +++ b/collects/tests/pkg/tests-raco.rkt @@ -27,4 +27,10 @@ $ "raco pkg create --format plt test-pkgs/raco-pkg" $ "raco raco-pkg" =exit> 1 $ "raco pkg install test-pkgs/raco-pkg.plt" - $ "raco raco-pkg" =exit> 0))) + $ "raco raco-pkg" =exit> 0)) + + (with-fake-root + (shelly-case + "raco install uses raco setup with single collect" + $ "raco pkg install test-pkgs/pkg-test3-v3" =exit> 0))) +