I reported a related problem some time ago
   http://lists.common-lisp.net/pipermail/cl-ppcre-devel/2011-January/000706.html

However, instead of the values I supplied now cl-unicode is using :unspecific for the :type of a pathname.

(defun dump-derived-tests ()
  "Parses the Unicode data file \"DerivedCoreProperties.txt\" \(which
is not used in read.lisp) and uses it to create a file
\"derived-properties\" which will be used by CL-UNICODE-TEST."
  (with-output-to-source-file (out (make-pathname :name "derived-properties"
                                                  :type :unspecific
                                                  :directory '(:relative :up "test"))
                                   :no-header-p t)

This is not supported by ECL, which uses NIL to represent an unfilled value (absent therefore). From the Hyperspec

http://www.lispworks.com/documentation/HyperSpec/Body/19_bbbc.htm
A conforming program must never unconditionally use a :unspecific as the value of a pathname component because such a value is not guaranteed to be permissible in all implementations.

Probably what you want to solve is the merge-pathnames above the code (in the macro), which might instead read

  `(let* ((directory (make-pathname :name nil :type nil :version nil :defaults *this-file*))
          (pathname (merge-pathnames ,relative-path directory))

Cheers,

Juanjo

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com