For years now, we at ITA have been satisfied with a patch that does the following while building QRes: allow to specify module names that include a directory component, without having to redundantly as in
(:module "subdir1/subdir2" :components ((:file "subdir3/name3") (:file "subdir4/name4.subname4")))
instead of the cumbersome (to be portable):
(:module "subdir1/subdir2" :pathname #.(make-pathname :directory '(:relative "subdir" "subdir2")) :components ((:file "subdir3/name3" :pathname #.(make-pathname :directory '(:relative "subdir3" :name "name3"))) (:file "subdir4/name4.subname4" :pathname #.(make-pathname :directory '(:relative "subdir4" :name "name4.subname4"))))))
Since there is active ASDF development again, I cleaned it up and here it is.
The methods should replace those currently in ASDF. The helper function now uses the existing ASDF split function (as previously requested by Xof).
The patch is both backwards compatible and portable, in that * the "/" character was previously forbidden in names of portable components without a :pathname statement, least it breaks miserably on most platforms. * the "/" character is now recognized by ASDF itself as a separator for directories later made with make-pathname, thus doing what is expected even on the odd platform without "/" as the pathname separator.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Selfishness is the measure of all good (and bad) in the world. There cannot be any good whatsoever without a self to feel it. WHO is whatever "altruistic" oppression ever good for? No one. Why is gratuitous vandalism or well-intentioned mass murder bad? Not because it is selfish, but precisely because it hurts other people's selfish interest.
Oh yes - this should hopefully also fix the problem with (:static-file "foo.bar") previously expanding to a (make-pathname :name "foo.bar" :type nil) Now it would expand to (pathname "foo.bar")
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] To have a right to do a thing is not at all the same as to be right in doing it. -- G.K. Chesterton
2009/8/28 Faré fahree@gmail.com:
For years now, we at ITA have been satisfied with a patch that does the following while building QRes: allow to specify module names that include a directory component, without having to redundantly as in
(:module "subdir1/subdir2" :components ((:file "subdir3/name3") (:file "subdir4/name4.subname4")))
instead of the cumbersome (to be portable):
(:module "subdir1/subdir2" :pathname #.(make-pathname :directory '(:relative "subdir" "subdir2")) :components ((:file "subdir3/name3" :pathname #.(make-pathname :directory '(:relative "subdir3" :name "name3"))) (:file "subdir4/name4.subname4" :pathname #.(make-pathname :directory '(:relative "subdir4" :name "name4.subname4"))))))
Since there is active ASDF development again, I cleaned it up and here it is.
The methods should replace those currently in ASDF. The helper function now uses the existing ASDF split function (as previously requested by Xof).
The patch is both backwards compatible and portable, in that
- the "/" character was previously forbidden in names of portable
components without a :pathname statement, least it breaks miserably on most platforms.
- the "/" character is now recognized by ASDF itself as a separator
for directories later made with make-pathname, thus doing what is expected even on the odd platform without "/" as the pathname separator.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Selfishness is the measure of all good (and bad) in the world. There cannot be any good whatsoever without a self to feel it. WHO is whatever "altruistic" oppression ever good for? No one. Why is gratuitous vandalism or well-intentioned mass murder bad? Not because it is selfish, but precisely because it hurts other people's selfish interest.
Hi Fare,
I finally got to looking at your patch. It opens with
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Confidential and proprietary information of ITA Software, Inc. ;;; ;;; ;;; ;;; Copyright (c) 2007-2009 ITA Software, Inc. All rights reserved. ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
which makes it hard for me to include it <smile>
Maybe I'm dotting the wrong i's hear but can you provide the patch without the license or otherwise release it?
thanks,
On Aug 28, 2009, at 9:44 AM, Faré wrote:
For years now, we at ITA have been satisfied with a patch that does the following while building QRes: allow to specify module names that include a directory component, without having to redundantly as in
(:module "subdir1/subdir2" :components ((:file "subdir3/name3") (:file "subdir4/ name4.subname4")))
instead of the cumbersome (to be portable):
(:module "subdir1/subdir2" :pathname #.(make-pathname :directory '(:relative "subdir" "subdir2")) :components ((:file "subdir3/name3" :pathname #.(make-pathname :directory '(:relative "subdir3" :name "name3"))) (:file "subdir4/name4.subname4" :pathname #.(make-pathname :directory '(:relative "subdir4" :name "name4.subname4"))))))
Since there is active ASDF development again, I cleaned it up and here it is.
The methods should replace those currently in ASDF. The helper function now uses the existing ASDF split function (as previously requested by Xof).
The patch is both backwards compatible and portable, in that
- the "/" character was previously forbidden in names of portable
components without a :pathname statement, least it breaks miserably on most platforms.
- the "/" character is now recognized by ASDF itself as a separator
for directories later made with make-pathname, thus doing what is expected even on the odd platform without "/" as the pathname separator.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Selfishness is the measure of all good (and bad) in the world. There cannot be any good whatsoever without a self to feel it. WHO is whatever "altruistic" oppression ever good for? No one. Why is gratuitous vandalism or well-intentioned mass murder bad? Not because it is selfish, but precisely because it hurts other people's selfish interest. <asdf-paths.lisp>_______________________________________________ asdf-devel mailing list asdf-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
-- Gary Warren King, metabang.com Cell: (413) 559 8738 Fax: (206) 338-4052 gwkkwg on Skype * garethsan on AIM * gwking on twitter
Oops. The header was boiler-plate from a QRes-specific file inside which this patch was initially, and was never updated when the ASDF-specific code was extracted. This is all free software under the same license as ASDF. If you credit me in a git message, please use my ITA address fare@itasoftware.com.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] The party of the first part shall be known in this contract as the party of the first part. -- Groucho Marx
2009/9/9 Gary King gwking@metabang.com:
Hi Fare,
I finally got to looking at your patch. It opens with
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Confidential and proprietary information of ITA Software, Inc. ;;; ;;; ;;; ;;; Copyright (c) 2007-2009 ITA Software, Inc. All rights reserved. ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
which makes it hard for me to include it <smile>
Maybe I'm dotting the wrong i's hear but can you provide the patch without the license or otherwise release it?
Hi Faré,
I was incorporating your patch and wrote this test system to test the change:
;;; -*- Lisp -*-
(asdf:defsystem test-module-pathnames :components ((:module "sources/level1" :components ((:file "file1") (:file "level2/file2")))))
The problem is that this system works fine without your patch. Am I missing something?
thanks,
On Sep 10, 2009, at 6:42 AM, Faré wrote:
Oops. The header was boiler-plate from a QRes-specific file inside which this patch was initially, and was never updated when the ASDF-specific code was extracted. This is all free software under the same license as ASDF. If you credit me in a git message, please use my ITA address fare@itasoftware.com.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] The party of the first part shall be known in this contract as the party of the first part. -- Groucho Marx
2009/9/9 Gary King gwking@metabang.com:
Hi Fare,
I finally got to looking at your patch. It opens with
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Confidential and proprietary information of ITA Software, Inc. ;;; ;;; ;;; ;;; Copyright (c) 2007-2009 ITA Software, Inc. All rights reserved. ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
which makes it hard for me to include it <smile>
Maybe I'm dotting the wrong i's hear but can you provide the patch without the license or otherwise release it?
You're probably not testing with SBCL, but with some implementation that either doesn't care that there are / in a pathname-name component or does some underlying magic.
I can assure you that the current ASDF will try to do non-portable things like
(make-pathname :directory `(:relative "source/level1") ...) (make-pathname :name "level2/file2" ...))
and if you add a (asdf:static-file "foo.bar") you'll get the lovely (make-pathname :name "foo.bar" :type nil)
I invite you to (TRACE MAKE-PATHNAME) and see the lossage. Trying on SBCL will make it more blatant.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] He who says he will die for a cause will probably lie for it and may kill for it. -- John McCarthy
2009/9/12 Gary King garywarrenking@gmail.com:
Hi Faré,
I was incorporating your patch and wrote this test system to test the change:
;;; -*- Lisp -*-
(asdf:defsystem test-module-pathnames :components ((:module "sources/level1" :components ((:file "file1") (:file "level2/file2")))))
The problem is that this system works fine without your patch. Am I missing something?
thanks,
On Sep 10, 2009, at 6:42 AM, Faré wrote:
Oops. The header was boiler-plate from a QRes-specific file inside which this patch was initially, and was never updated when the ASDF-specific code was extracted. This is all free software under the same license as ASDF. If you credit me in a git message, please use my ITA address fare@itasoftware.com.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org%C2%A0] The party of the first part shall be known in this contract as the party of the first part. -- Groucho Marx
2009/9/9 Gary King gwking@metabang.com:
Hi Fare,
I finally got to looking at your patch. It opens with
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Confidential and proprietary information of ITA Software, Inc. ;;; ;;; ;;; ;;; Copyright (c) 2007-2009 ITA Software, Inc. All rights reserved. ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
which makes it hard for me to include it <smile>
Maybe I'm dotting the wrong i's hear but can you provide the patch without the license or otherwise release it?