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))) +