Opened 16 years ago

Closed 13 years ago

#15198 closed defect (fixed)

mzscheme-371 - incorrect collects-dir

Reported by: eric.m.kidd@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: Cc:
Port: mzscheme

Description

mzscheme 371 is has an incorrect value for collects-dir, which breaks the compilation manager.

See the discussion thread for details of why the current behavior is wrong, and why it causes a problem.

To reproduce this bug, save the following script as collects-test.ss:

;; Print out two paths built into our executable.
(printf "exec-file: ~s~ncollects-dir: ~s~n"
        (find-system-path 'exec-file)
        (find-system-path 'collects-dir))

;; Find the default collects-dir built into our executable.  This
;; path may be relative to exec-file's parent directory.  This will
;; let us know where PLT thinks it should be finding its
;; collections.
(define (default-collects-dir)
  (call-with-values (lambda () (split-path (find-system-path 'exec-file)))
    (lambda (base name must-be-dir?)
      (let [[collects (find-system-path 'collects-dir)]]
        (if (eq? base 'relative)
          (path->complete-path collects)
          (path->complete-path collects base))))))

;; Does this work?
(if (file-exists? (build-path (default-collects-dir) "mzlib" "list.ss"))
  (printf "OK: This copy of mzscheme is set up correctly.~n")
  (printf "BROKEN: This copy of mzscheme has a bad collects-dir.~n"))

Then run it from the command line:

$ mzscheme -r collects-test.ss
exec-file: #<path:mzscheme>
collects-dir: #<path:../collects>
BROKEN: This copy of mzscheme has a bad collects-dir.

Desired behavior: This script should print "OK".

Thank you to the MacPorts maintainers for such a useful port system!

(Yes, I'm aware that MacPorts mzscheme is currently unmaintained. This bug is more a reminder to a future maintainer than anything else.)

Change History (5)

comment:1 Changed 16 years ago by eric.m.kidd@…

Note that this implementation of (default-collects-dir) should probably try to resolve symbolic links in exec-file.

See the current Subversion documentation for (find-library-collection-paths), which will specify the exact algorithm to use for (default-collects-dir).

comment:2 Changed 16 years ago by jmroot (Joshua Root)

Milestone: Port Bugs

comment:3 Changed 15 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

comment:4 Changed 13 years ago by jmroot (Joshua Root)

Port: mzscheme added

Is this still a problem with 4.1.5?

comment:5 Changed 13 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.