Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

remove all trace of externals

  • Loading branch information...
commit cc56b1423a297b6b44e3aa8863220712b15e1cf2 1 parent 0599e1f
@blindglobe authored
Showing with 0 additions and 4,735 deletions.
  1. +0 −1,221 external/asdf.lisp
  2. +0 −762 external/asdf_README.txt
  3. +0 −21 external/cffi.darcs/COPYRIGHT
  4. +0 −28 external/cffi.darcs/HEADER
  5. +0 −68 external/cffi.darcs/Makefile
  6. +0 −17 external/cffi.darcs/README
  7. +0 −99 external/cffi.darcs/TODO
  8. +0 −1,347 external/cffi.darcs/_darcs/inventories/20060204082912-6edf7-7e2b4c6a411d31f8ea37404f91d3d13131897805.gz
  9. +0 −623 external/cffi.darcs/_darcs/inventories/20060908205321-28748-3e1607bb4785d20b1155b93269ebc815243e7343.gz
  10. +0 −549 external/cffi.darcs/_darcs/inventory
  11. BIN  external/cffi.darcs/_darcs/patches/20050607202929-135ac-44fab1ca228971c2ba470ee621e90b8cc0c87b43.gz
  12. BIN  external/cffi.darcs/_darcs/patches/20050607220508-135ac-450534905112089b327fc8a73d9a11611819076e.gz
  13. BIN  external/cffi.darcs/_darcs/patches/20050607220700-135ac-a759e7137d105b9e8e6b17fda98f2e286bf6eea4.gz
  14. BIN  external/cffi.darcs/_darcs/patches/20050607220858-135ac-c7bddf50be9d8195d1cca99bdadd4521a2859a94.gz
  15. BIN  external/cffi.darcs/_darcs/patches/20050608065952-135ac-903b859a2b70e66bf40094ffceab40e1f90ab0ce.gz
  16. BIN  external/cffi.darcs/_darcs/patches/20050608070132-135ac-b01a823f3d2c09f7a933e4524d365df9410e44a0.gz
  17. BIN  external/cffi.darcs/_darcs/patches/20050608072818-135ac-0af588b66c1c2b35e3883dd4249c57e4fb2b17fb.gz
  18. BIN  external/cffi.darcs/_darcs/patches/20050610130047-135ac-a091a03ddc2183b4f45ee78c67e1018df8731681.gz
  19. BIN  external/cffi.darcs/_darcs/patches/20050611052654-135ac-16a40a72c410b4dbf7ef413d14261c9879d4e189.gz
  20. BIN  external/cffi.darcs/_darcs/patches/20050611071624-135ac-1ec8b4f7118b20bc4ed28ef391cc0622748a2a8a.gz
  21. BIN  external/cffi.darcs/_darcs/patches/20050611071811-135ac-8a37138d2b6be30691ec88e60ce0d7b74966f3a8.gz
  22. BIN  external/cffi.darcs/_darcs/patches/20050611080628-135ac-888a48b1c19c62125292661e80960ce6be1b3698.gz
  23. BIN  external/cffi.darcs/_darcs/patches/20050612082119-135ac-b79bdd983f9efdb8d71ebd3932b39e2379d52268.gz
  24. BIN  external/cffi.darcs/_darcs/patches/20050612082351-135ac-2c3e777a67bb38cff469d21e1d4d1327c3e7bef7.gz
  25. BIN  external/cffi.darcs/_darcs/patches/20050612082516-135ac-ac1e65d11630de676d976657faa7a86e6b51ba70.gz
  26. BIN  external/cffi.darcs/_darcs/patches/20050612082708-135ac-34404bb0891f76badc4b6db1b2e0f4f5439a3781.gz
  27. BIN  external/cffi.darcs/_darcs/patches/20050612082825-135ac-e57bc9d12757eb89b6a0a4abfbfea702b7fc1474.gz
  28. BIN  external/cffi.darcs/_darcs/patches/20050612083348-135ac-b5c174fe187d688be0a7f5c1541b12e97e62ff11.gz
  29. BIN  external/cffi.darcs/_darcs/patches/20050612083615-135ac-2dcae0556b62331c545f55a6a16d74e6f61bfb37.gz
  30. BIN  external/cffi.darcs/_darcs/patches/20050612091327-135ac-331e3560b19e5871b42230422fab38708636e26d.gz
  31. BIN  external/cffi.darcs/_darcs/patches/20050613094503-135ac-152e4a98f26e41a4fd8f796a6339f1b181f72fda.gz
  32. BIN  external/cffi.darcs/_darcs/patches/20050613094608-135ac-9af23b166f7f66afa74642ddd6ee917b37b97dcf.gz
  33. BIN  external/cffi.darcs/_darcs/patches/20050613095632-135ac-22b7cc759daaa87251a35b15c518148560c685a8.gz
  34. BIN  external/cffi.darcs/_darcs/patches/20050613095658-135ac-e1d767d7a1f8b321d1e77cb5cb53fb3f8cd0ac6b.gz
  35. BIN  external/cffi.darcs/_darcs/patches/20050613105629-135ac-5afdd22e42f0056fe6dd1f21f7b11b9f810bb629.gz
  36. BIN  external/cffi.darcs/_darcs/patches/20050613131834-135ac-273fdc0737676b9c6c818a11a101cd8dd2b43d86.gz
  37. BIN  external/cffi.darcs/_darcs/patches/20050613132718-135ac-f24af414a5b20a85001fd95ae7b0750e39b91750.gz
  38. BIN  external/cffi.darcs/_darcs/patches/20050613141701-135ac-d295c4e3ac175e7cdf28b0b33b6cb705c9378ca8.gz
  39. BIN  external/cffi.darcs/_darcs/patches/20050614022318-135ac-4c37e9b19d912cc681e21f690354f71b3ea33221.gz
  40. BIN  external/cffi.darcs/_darcs/patches/20050614033113-135ac-99beb6711dee207d31eabe35f21b3a8eee8ac7fc.gz
  41. BIN  external/cffi.darcs/_darcs/patches/20050614033543-135ac-2e7a2b0a6c3ef42b8acfe510d14e6221cad1738e.gz
  42. BIN  external/cffi.darcs/_darcs/patches/20050623001311-135ac-7ba0d570f0a1adcd57554ac8ac54a195ed64b5f9.gz
  43. BIN  external/cffi.darcs/_darcs/patches/20050623054422-135ac-1fcfa13656b3af9748dbc48235e89d5fbc683bac.gz
  44. BIN  external/cffi.darcs/_darcs/patches/20050623055150-135ac-36233a410bf09abea228d9ff1ce6f3a2e7272ac1.gz
  45. BIN  external/cffi.darcs/_darcs/patches/20050627184929-135ac-5d1da2384a5edf8c1187d4b56e8340fa2d2d0a59.gz
  46. BIN  external/cffi.darcs/_darcs/patches/20050703013832-28748-3034d8dab1631e596dbfac3d4b5c7bacbe300b1c.gz
  47. BIN  external/cffi.darcs/_darcs/patches/20050704031609-28748-e6f14a1fd46769b30ec64b89419c244b0ce04653.gz
  48. BIN  external/cffi.darcs/_darcs/patches/20050705002935-28748-b560ff4f7ca336080ad95b1afbd25469ca616a04.gz
  49. BIN  external/cffi.darcs/_darcs/patches/20050705025245-28748-30b62400f6069a912670bfcba15fc03d43972eb2.gz
  50. BIN  external/cffi.darcs/_darcs/patches/20050705075324-6edf7-485012f2a79d42e684a8d056e056cca7e5059b03.gz
  51. BIN  external/cffi.darcs/_darcs/patches/20050705083800-6edf7-37d2cad6669b40045c8d4ae01960754745e6ee05.gz
  52. BIN  external/cffi.darcs/_darcs/patches/20050705110100-6edf7-7963e447c666d29c68a09286e2bdb6b4330a716f.gz
  53. BIN  external/cffi.darcs/_darcs/patches/20050705135052-28748-ab6881d11fae62ecba21a732f99adcdea17d5fde.gz
  54. BIN  external/cffi.darcs/_darcs/patches/20050705164350-6edf7-2bf8844a6ff49e1cdefba484df197a16ce21a983.gz
  55. BIN  external/cffi.darcs/_darcs/patches/20050705193828-6edf7-cdc95d54948b2446d26ca443a2ce3f7911f35b81.gz
  56. BIN  external/cffi.darcs/_darcs/patches/20050705223418-6edf7-0ea6a4d4cb89bce1a19ad5753a10f8cc0d236c07.gz
  57. BIN  external/cffi.darcs/_darcs/patches/20050707005106-28748-ede29c0cea72f5ed38770fc6db266a94f69ce443.gz
  58. BIN  external/cffi.darcs/_darcs/patches/20050711022020-28748-da259226db4690882f327c3fca2083d7ace2ec86.gz
  59. BIN  external/cffi.darcs/_darcs/patches/20050711043643-28748-f1f82f31ab497e9f4cac365a275cdd03132f0123.gz
  60. BIN  external/cffi.darcs/_darcs/patches/20050711043729-28748-b85fc45c51d5009d99ee7b0ee79f35800b268a84.gz
  61. BIN  external/cffi.darcs/_darcs/patches/20050711043851-28748-138ecf11d99590394b25573d3736b16dd4f6db88.gz
  62. BIN  external/cffi.darcs/_darcs/patches/20050711044713-28748-7f4759dbfddead971b7ee114ffe8fad057b0441e.gz
  63. BIN  external/cffi.darcs/_darcs/patches/20050711044934-28748-3ff91d603284f5cb286c796340599f70b20fa079.gz
  64. BIN  external/cffi.darcs/_darcs/patches/20050711045136-28748-8fdbd900b07b72807adaba345a89592441c2cab1.gz
  65. BIN  external/cffi.darcs/_darcs/patches/20050711045325-28748-574b20c3fb65f69ca89c570bfee226d9f1606f28.gz
  66. BIN  external/cffi.darcs/_darcs/patches/20050711045738-28748-bc576eda92b6ea75e780ba3c7cbda3181a5ac0d7.gz
  67. BIN  external/cffi.darcs/_darcs/patches/20050711052929-28748-57435105ed120873d2b8a61924e0dbba9fe2302f.gz
  68. BIN  external/cffi.darcs/_darcs/patches/20050711061611-28748-23892499e9d9a14d224d539976418629b627bc75.gz
  69. BIN  external/cffi.darcs/_darcs/patches/20050713224259-28748-43c5f8acf32c1ed115adb0262e4af000db10d11b.gz
  70. BIN  external/cffi.darcs/_darcs/patches/20050730160328-28748-6aeb56afcd838ee31c69b1467f007e7fd03d596a.gz
  71. BIN  external/cffi.darcs/_darcs/patches/20050802021638-28748-52cc2f54599044d6e78fe2046abc3c9389d25f52.gz
  72. BIN  external/cffi.darcs/_darcs/patches/20050803002935-28748-6745c35052d25f3dd292443e92873dd06fbad40c.gz
  73. BIN  external/cffi.darcs/_darcs/patches/20050804043827-28748-0d158e74855b5bdeb2b679610c11593328e889f5.gz
  74. BIN  external/cffi.darcs/_darcs/patches/20050805183631-28748-2b8f1b6d119eefc513b3ed4de2f4fe3686067edb.gz
  75. BIN  external/cffi.darcs/_darcs/patches/20050805184509-28748-a7f8e825195a146a8a3da5387e081d37091652e5.gz
  76. BIN  external/cffi.darcs/_darcs/patches/20050805185915-28748-2a2038709109c2e809609d64607981e6f7fd0728.gz
  77. BIN  external/cffi.darcs/_darcs/patches/20050805191454-28748-ddb4c80d8306303e3c2d8aeb77573fc4d222b9af.gz
  78. BIN  external/cffi.darcs/_darcs/patches/20050805191902-28748-fd6e8b1d7baf49168fb8df9e99988102e8bd5d67.gz
  79. BIN  external/cffi.darcs/_darcs/patches/20050805192631-28748-d2f931cb1356d7238842fa19d74575a894b8cd96.gz
  80. BIN  external/cffi.darcs/_darcs/patches/20050805193417-28748-c38b13d57099668a0c783b4d363011869ddf363a.gz
  81. BIN  external/cffi.darcs/_darcs/patches/20050805193658-28748-c40ec3f90f0206e453ee4f2945db68a645bf674b.gz
  82. BIN  external/cffi.darcs/_darcs/patches/20050805193844-28748-fb4503d765096b34e3a450772b831400cb534b67.gz
  83. BIN  external/cffi.darcs/_darcs/patches/20050806040043-28748-d76e1ed9cb63874bdddeeb68fcae3fb80f4acf42.gz
  84. BIN  external/cffi.darcs/_darcs/patches/20050806041119-28748-7a4670cf2aec5a5b562bfc4dfc0669ac58724f32.gz
  85. BIN  external/cffi.darcs/_darcs/patches/20050810010007-28748-db98ec42c54b1181db3962d84998875465887678.gz
  86. BIN  external/cffi.darcs/_darcs/patches/20050811044353-28748-06ea308f5cc065098689940fa3e198b21dc9a234.gz
  87. BIN  external/cffi.darcs/_darcs/patches/20050821133513-28748-e171c49038fd802d863cffc852cfac7bbe5270e0.gz
  88. BIN  external/cffi.darcs/_darcs/patches/20050826144708-28748-67d99a8fe6d1d92a59c9068be4664ebcc233670c.gz
  89. BIN  external/cffi.darcs/_darcs/patches/20050827030127-28748-1271b3e635277f0ed8875e576474aaae6fdc657f.gz
  90. BIN  external/cffi.darcs/_darcs/patches/20050827080900-28748-d0d8fabc93a795f5d185080bc7b94171e67ddc1b.gz
  91. BIN  external/cffi.darcs/_darcs/patches/20050830025906-28748-ba09830cbf53813b08891d750f62ccda4c6bee6c.gz
  92. BIN  external/cffi.darcs/_darcs/patches/20050831022358-28748-1ad878f809f0bafb058412fa8fe404505ca43e07.gz
  93. BIN  external/cffi.darcs/_darcs/patches/20050831063013-28748-aea0449d555e98a20ea8ed2adbff263bb1e3b765.gz
  94. BIN  external/cffi.darcs/_darcs/patches/20050831064645-28748-cf5e8fa186738aa835538ab488df4332a44091e8.gz
  95. BIN  external/cffi.darcs/_darcs/patches/20050901073604-28748-26ddf26ab6cd0f893572d84ceec7e52c03766eaa.gz
  96. BIN  external/cffi.darcs/_darcs/patches/20050902044050-28748-546334e922e11f5e9a504ca28b1f4d2759be931e.gz
  97. BIN  external/cffi.darcs/_darcs/patches/20050902075750-28748-5fabd0a1b67b659c15ea5cfc06177e7a6ccc08f9.gz
  98. BIN  external/cffi.darcs/_darcs/patches/20050907053119-28748-014b89b71258d85d3d5ea1db3b2391cfde151e2a.gz
  99. BIN  external/cffi.darcs/_darcs/patches/20050908061253-28748-e593477652bb72588e0c46cf5668317d0f36a859.gz
  100. BIN  external/cffi.darcs/_darcs/patches/20050909010022-28748-ccd59710603b18e47eedf3e84b72770a2ee954d5.gz
  101. BIN  external/cffi.darcs/_darcs/patches/20050912031053-28748-085903c80dfad7691b0952f9312286125ef20d55.gz
  102. BIN  external/cffi.darcs/_darcs/patches/20050912065252-28748-2f0c8f3cbce58a63b1010a3d6ecca7c679c9786c.gz
  103. BIN  external/cffi.darcs/_darcs/patches/20050913054015-28748-cc2c9034fe03c1243afb9382217c4d679d5f2e09.gz
  104. BIN  external/cffi.darcs/_darcs/patches/20050914002507-28748-b40a877eb89db7a392aae418223ae40a49bd39cb.gz
  105. BIN  external/cffi.darcs/_darcs/patches/20050914203204-28748-0fd3cd9519db7418fb2e105f3f169bae7055ef2c.gz
  106. BIN  external/cffi.darcs/_darcs/patches/20050915001414-28748-298e8a7a3cebde1b12ec31dbea71e0471d31ccd1.gz
  107. BIN  external/cffi.darcs/_darcs/patches/20050915013027-28748-2703faa3c1b4e4e4c127f84b0783d06af9ef50d6.gz
  108. BIN  external/cffi.darcs/_darcs/patches/20050915043423-28748-381a883a7eeb44bf49b7c3f9581c15e7d3e133de.gz
  109. BIN  external/cffi.darcs/_darcs/patches/20050915142238-28748-17d562894fdb2a536d07ad74550b7095d8210cfd.gz
  110. BIN  external/cffi.darcs/_darcs/patches/20050916004700-28748-64e7086d3dc6e2aad4d31a220b16942493d42b75.gz
  111. BIN  external/cffi.darcs/_darcs/patches/20050920173532-28748-32096ec1df0c2f99e4a7b3204e308348f92c5584.gz
  112. BIN  external/cffi.darcs/_darcs/patches/20050924200146-28748-30fc1160783b69c4220c7bad355958d926e61c91.gz
  113. BIN  external/cffi.darcs/_darcs/patches/20050924201305-28748-92694ccf57a304d3f5993c96ff1eefa95eb4692a.gz
  114. BIN  external/cffi.darcs/_darcs/patches/20050925044242-28748-ec1c0fdc9e9b6acf4c0658ee12aba441d20af566.gz
  115. BIN  external/cffi.darcs/_darcs/patches/20050925193602-28748-fc32e5f4828e8803f7db2acc5e0f3615ee121f1a.gz
  116. BIN  external/cffi.darcs/_darcs/patches/20050926234141-28748-2151fe3c173b215bc1dbb2e0a209fd4481bee92e.gz
  117. BIN  external/cffi.darcs/_darcs/patches/20051002122416-28748-254e7ce5d3858311d08654705a72b4975a62931b.gz
  118. BIN  external/cffi.darcs/_darcs/patches/20051003142016-28748-9c8badbdb4798d81e6c9b9c1098556b982aca506.gz
  119. BIN  external/cffi.darcs/_darcs/patches/20051006001347-28748-760845d7cbead582de261090e58a6be323d88585.gz
  120. BIN  external/cffi.darcs/_darcs/patches/20051007003251-28748-0d8090bf8ff547cb081182122d8c5420100af574.gz
  121. BIN  external/cffi.darcs/_darcs/patches/20051011123357-28748-a84e225c8c8d136e72f97f89671dc2ad0cf57552.gz
  122. BIN  external/cffi.darcs/_darcs/patches/20051027142855-28748-ca2e2cef3884627bd1383fe392864a7d57e32d46.gz
  123. BIN  external/cffi.darcs/_darcs/patches/20051027143948-28748-1f320b0e070e17461560498bd2cb5c3e499bc4d4.gz
  124. BIN  external/cffi.darcs/_darcs/patches/20051102153220-28748-fb7e9b27b3eab618b16791c39a1bc0c3b2a05282.gz
  125. BIN  external/cffi.darcs/_darcs/patches/20051102153416-28748-9fc1969945e2ba144ad42f22fc9f2b04117986a9.gz
  126. BIN  external/cffi.darcs/_darcs/patches/20051102203613-28748-2c49e4a753a2f2d4e903ab47e3ffce2872b8239a.gz
  127. BIN  external/cffi.darcs/_darcs/patches/20051103133245-28748-7813c1432fe2e3d09740b42dbbcaa95fbc71d084.gz
  128. BIN  external/cffi.darcs/_darcs/patches/20051104101358-28748-17c3f42e317845f0f0edc6354610240cc1fb9529.gz
  129. BIN  external/cffi.darcs/_darcs/patches/20051104121605-28748-112592447101fdbdb1d88b097dc937ade7338338.gz
  130. BIN  external/cffi.darcs/_darcs/patches/20051104200531-28748-ea4832bfd4407ce124017dc5c46b2642ccef457b.gz
  131. BIN  external/cffi.darcs/_darcs/patches/20051104202843-28748-be16e0c6d264ea5e64c24ff3659d8b5d108878bb.gz
  132. BIN  external/cffi.darcs/_darcs/patches/20051104230305-28748-e192bdd79c3b471dcfd5acad1647c7c779ed440e.gz
  133. BIN  external/cffi.darcs/_darcs/patches/20051104232143-28748-0003bc520f423e7685b5a17ca37da67e70e9849b.gz
  134. BIN  external/cffi.darcs/_darcs/patches/20051114194120-28748-bf3381c57f16c2e4efa8abacf019ce9099ffcdd6.gz
  135. BIN  external/cffi.darcs/_darcs/patches/20051115022728-64fd6-9c622f6097f46141ced845d55f081067a84ae0d7.gz
  136. BIN  external/cffi.darcs/_darcs/patches/20051202075637-28748-92980bb394611516959e578877cf686cda111284.gz
  137. BIN  external/cffi.darcs/_darcs/patches/20051203011223-28748-b1874af4059202cc0309d5c4d5459b4aa70461a1.gz
  138. BIN  external/cffi.darcs/_darcs/patches/20051203034826-28748-8b2324ae63420e11fa2c03f2e89515ef5c0d7e27.gz
  139. BIN  external/cffi.darcs/_darcs/patches/20051205014628-28748-e22144bb9a750a70792b4dcd9282803bb4007b54.gz
  140. BIN  external/cffi.darcs/_darcs/patches/20051208063412-28748-e591cc7f7c0b35e1f876555789638214ace15711.gz
  141. BIN  external/cffi.darcs/_darcs/patches/20051208065807-28748-ebf49e00b971f7c068901101d106daab9671688d.gz
  142. BIN  external/cffi.darcs/_darcs/patches/20051209022821-28748-eb4f28d766fabf93563b696b9f02a2ede52eabbd.gz
  143. BIN  external/cffi.darcs/_darcs/patches/20051209053051-28748-39e5bcfa47ea9476c5951c78b7b1264fa14ff830.gz
  144. BIN  external/cffi.darcs/_darcs/patches/20051209172237-62fec-3566262450db38d6faf2f942915fbfd913b9550f.gz
  145. BIN  external/cffi.darcs/_darcs/patches/20051211052201-28748-6900288f5542d1f30ba70e4f8d88a8b8baa4e2d3.gz
  146. BIN  external/cffi.darcs/_darcs/patches/20051211053118-28748-1eab6279f0343d525e6731ec7dd178d42f9264b4.gz
  147. BIN  external/cffi.darcs/_darcs/patches/20051211064557-28748-b7180a199660ac9fb60c565be6f227b998bd2f20.gz
  148. BIN  external/cffi.darcs/_darcs/patches/20051211100102-28748-a4efa7a019719f460f62bc172253eb64d1367487.gz
  149. BIN  external/cffi.darcs/_darcs/patches/20051212053739-28748-89b72fc91b1cfd4e079ef4e08b7b1188725555ae.gz
  150. BIN  external/cffi.darcs/_darcs/patches/20051214110839-28748-1954e5c74f4e8aad97043caa3b4f87d6c39eb6e2.gz
  151. BIN  external/cffi.darcs/_darcs/patches/20051214133725-62fec-e247811fca2f11563673800373ee73f34250cf00.gz
  152. BIN  external/cffi.darcs/_darcs/patches/20051214133908-62fec-0f737b8001002294751a57ffdb1ef22557a09d84.gz
  153. BIN  external/cffi.darcs/_darcs/patches/20051215085649-62fec-46a5a0fd40661f373ea0c9ec6c37ef9d8c0d9785.gz
  154. BIN  external/cffi.darcs/_darcs/patches/20051215095834-28748-03001fd10b2ee6b4cd23ba6eec26c9b1bd4896d4.gz
  155. BIN  external/cffi.darcs/_darcs/patches/20051215154526-28748-5111853f9dcf8d1bed59668d5be320be78ce05a3.gz
  156. BIN  external/cffi.darcs/_darcs/patches/20051220035858-28748-42397ec081fb5ff505a9e8adb20d6a415aa9188d.gz
  157. BIN  external/cffi.darcs/_darcs/patches/20051220043849-28748-37d38957f7835bdcebea10301a73d25d7b16aeb6.gz
  158. BIN  external/cffi.darcs/_darcs/patches/20051220111627-62fec-daf4f350a1bea3d135ea68277e242ccc906d1910.gz
  159. BIN  external/cffi.darcs/_darcs/patches/20051221105427-28748-aeb193d31a868b604ed6856a49927615b4ebd3d6.gz
  160. BIN  external/cffi.darcs/_darcs/patches/20051221170235-28748-2393dd279c81f8e1eb77555d65e2deb8f262d0f4.gz
  161. BIN  external/cffi.darcs/_darcs/patches/20051222141506-62fec-6d03e0b445626dc88e0b7d3275ecff5aa01cab7a.gz
  162. BIN  external/cffi.darcs/_darcs/patches/20051222141931-62fec-9747bc0bf0bd5a4bf186d88001a5cadb8c83341a.gz
  163. BIN  external/cffi.darcs/_darcs/patches/20051222151302-62fec-210618c5cdf2749fa757c6332805276c7f391fbf.gz
  164. BIN  external/cffi.darcs/_darcs/patches/20051222162055-28748-14a329f27abe834b08907fdb15171755b7ff3ae3.gz
  165. BIN  external/cffi.darcs/_darcs/patches/20051222170147-28748-7dab200c889a2ad0bb56432c1d0dc00463cdf4c3.gz
  166. BIN  external/cffi.darcs/_darcs/patches/20051222193904-28748-5423d2efe0afb7c6b79b28f7aedd129362aac625.gz
  167. BIN  external/cffi.darcs/_darcs/patches/20051223014350-64fd6-83591118c6240e22ae7863da6679a06a4bc34fca.gz
  168. BIN  external/cffi.darcs/_darcs/patches/20051223091139-28748-baf36d9fd1d2fba8c4361ce123a7efb2cc3d2f41.gz
  169. BIN  external/cffi.darcs/_darcs/patches/20051223091203-28748-8fb97a56c999befeaf8c8c8270301fed5469b0ac.gz
  170. BIN  external/cffi.darcs/_darcs/patches/20051223101748-28748-4cc1d881db63d4160056194008cdb0e97fa0ec30.gz
  171. BIN  external/cffi.darcs/_darcs/patches/20051223102106-28748-ac2d350cabdb1c6b62ce349abd46e00f79ac33a1.gz
  172. BIN  external/cffi.darcs/_darcs/patches/20051223110805-6edf7-25522cf2ad09853abaf7321f345f904e657f0cc5.gz
  173. BIN  external/cffi.darcs/_darcs/patches/20051223113330-6edf7-67c1888531de5ccdd611cb1857c04387ded5cac6.gz
  174. BIN  external/cffi.darcs/_darcs/patches/20051223113523-6edf7-f387b88fbb023375138136d7528e7d23b038162e.gz
  175. BIN  external/cffi.darcs/_darcs/patches/20051223123549-62fec-f046557617979ffefba93993a887375504ddade7.gz
  176. BIN  external/cffi.darcs/_darcs/patches/20051223123712-62fec-0f18d3c81858c3a7fbf8d6a631eb7a7de352e176.gz
  177. BIN  external/cffi.darcs/_darcs/patches/20051223131305-62fec-41b74874c0dc3b8992eb60a8460c4e10386b48c8.gz
  178. BIN  external/cffi.darcs/_darcs/patches/20051223131408-62fec-502bb9cd453ca481cb5d2fb4f2268ed236c8a4b2.gz
  179. BIN  external/cffi.darcs/_darcs/patches/20051223135321-62fec-0d0525b390820b7b7b6ffc94dede3bfb258e3d93.gz
  180. BIN  external/cffi.darcs/_darcs/patches/20051223144701-6edf7-b680fc08b1ba3474ea6b4e1688c017c6933b815a.gz
  181. BIN  external/cffi.darcs/_darcs/patches/20051223144749-6edf7-7b299fc0b541e2f1517847b0c00a90a7cef7e9b3.gz
  182. BIN  external/cffi.darcs/_darcs/patches/20051223153500-6edf7-1f1787ed8c8aa1e9d4567769bf3a55a11fe7a300.gz
  183. BIN  external/cffi.darcs/_darcs/patches/20051223194115-6edf7-c409d5e87adcae01ffb2ad3a9129f7642d7ac89d.gz
  184. BIN  external/cffi.darcs/_darcs/patches/20051223195127-6edf7-76c37d5d356cb60ab2e6218a0ea39a960f347495.gz
  185. BIN  external/cffi.darcs/_darcs/patches/20051223195348-6edf7-4b8a40673a29f1e969aeec2ec0385b55974799d3.gz
  186. BIN  external/cffi.darcs/_darcs/patches/20051226135322-28748-4ea461a323d07f934c552ae48ea36e521f344a08.gz
  187. BIN  external/cffi.darcs/_darcs/patches/20051226135806-28748-2451790e923a7ed2b08768e3615d211f5223fa40.gz
  188. BIN  external/cffi.darcs/_darcs/patches/20051227154753-28748-894564f542c1ca95b8e5d140bdb851ca063a2360.gz
  189. BIN  external/cffi.darcs/_darcs/patches/20051228150424-28748-fe2804c37610c92b50d244af9d0a84f320cf5b9e.gz
  190. BIN  external/cffi.darcs/_darcs/patches/20051228151536-28748-cae10e3cfde2b9040d68a882696dfcbe42a4b0a2.gz
  191. BIN  external/cffi.darcs/_darcs/patches/20051228172421-6edf7-4a9b3ee744e0570fe87ec12fa3010d0320f53982.gz
  192. BIN  external/cffi.darcs/_darcs/patches/20051228173014-6edf7-3d2b585e9b9356e1374aa8d0a73b56a5bcfaa84d.gz
  193. BIN  external/cffi.darcs/_darcs/patches/20051228174102-6edf7-1729424589bbebcb530f9a48c6913cb50276c9f3.gz
  194. BIN  external/cffi.darcs/_darcs/patches/20051228195843-28748-d8abe963df82cb326d4d0641fa151dad62ce5ac6.gz
  195. BIN  external/cffi.darcs/_darcs/patches/20051228235427-28748-cccc16a3ab083539452351cb8526982e97dc335c.gz
  196. BIN  external/cffi.darcs/_darcs/patches/20051230074303-28748-5946a70f7a0481d4ce1f93342c8ae401135b6142.gz
  197. BIN  external/cffi.darcs/_darcs/patches/20051230081818-6edf7-dc1832fb1f32f32d517c5b61c25f21ebc7a7d942.gz
  198. BIN  external/cffi.darcs/_darcs/patches/20051230121846-28748-78d6fbd91f461d0d7320b2425dbfa435d34d48ab.gz
  199. BIN  external/cffi.darcs/_darcs/patches/20051230215218-28748-4af5b8741e730b5540940a3b423ae35f9294ad92.gz
  200. BIN  external/cffi.darcs/_darcs/patches/20051230233959-6edf7-2fb7c71b34a3d0ee01f54e0cb21242975917a42b.gz
  201. BIN  external/cffi.darcs/_darcs/patches/20060101043915-6edf7-92b6f6f920d538ecdb06efd8e81e5bfd133ed7fb.gz
  202. BIN  external/cffi.darcs/_darcs/patches/20060101091535-6edf7-8e9a419f028708de3cb756258b3def2ea30f4218.gz
  203. BIN  external/cffi.darcs/_darcs/patches/20060101091727-6edf7-9f94501bfa553d9121e8c67bb0dbe8ed4b0259b9.gz
  204. BIN  external/cffi.darcs/_darcs/patches/20060101093028-6edf7-e5572ae096715327c479e47a0e56f50cfa9ed210.gz
  205. BIN  external/cffi.darcs/_darcs/patches/20060101093154-6edf7-d5a7481ff643aa7b22bb6302373280d8c142d65d.gz
  206. BIN  external/cffi.darcs/_darcs/patches/20060101100935-6edf7-ce40e6256c8a4736db28d83fc6acd7db22e8ffc8.gz
  207. BIN  external/cffi.darcs/_darcs/patches/20060102152202-62fec-a2fd3c59c7abca3cb95a5b49b2ea10026f548284.gz
  208. BIN  external/cffi.darcs/_darcs/patches/20060102152957-62fec-45b5d7599fc33bd5153d6b2dacec72c2f2aeff97.gz
  209. BIN  external/cffi.darcs/_darcs/patches/20060103004525-28748-c9581bc461af7f06c4c654c500f5c3ef947306a4.gz
  210. BIN  external/cffi.darcs/_darcs/patches/20060103092448-6edf7-e9cb0e437781f31fbbd8ac83742a5f3fff7421ac.gz
  211. BIN  external/cffi.darcs/_darcs/patches/20060103153527-62fec-db2a06579985d370a1eaf5b5389df1f3821ff805.gz
  212. BIN  external/cffi.darcs/_darcs/patches/20060103153551-62fec-b334e1ef5aa6ea42095c377c8a30f453152fbc53.gz
  213. BIN  external/cffi.darcs/_darcs/patches/20060103202816-6edf7-7856039dba564e1bed68ad72a9485082d898c197.gz
  214. BIN  external/cffi.darcs/_darcs/patches/20060105091444-6edf7-0de01250760b443345449015e50a7128761f0bb2.gz
  215. BIN  external/cffi.darcs/_darcs/patches/20060106030839-6edf7-277f98b3a7949b9e3534bcbf78e8be8642fe3126.gz
  216. BIN  external/cffi.darcs/_darcs/patches/20060106034217-6edf7-fac0b39469c9ee66e51a29d99dc329caa46b23f4.gz
  217. BIN  external/cffi.darcs/_darcs/patches/20060106045753-6edf7-b440bc3727b221aee3bb1c882a82a14359d7d795.gz
  218. BIN  external/cffi.darcs/_darcs/patches/20060106050125-6edf7-dd2c3025c67358e90817bee5daa816ae2432d904.gz
  219. BIN  external/cffi.darcs/_darcs/patches/20060106050325-6edf7-4bc70df7a61845d4b510824ef372a1a66403ad4c.gz
  220. BIN  external/cffi.darcs/_darcs/patches/20060106074708-6edf7-60693dbda21e826c866d1fd6ffa1c22a9745c56d.gz
  221. BIN  external/cffi.darcs/_darcs/patches/20060106082957-6edf7-d1896956b7e5e8d2c71b47fc78fe4c6b3f18dbdd.gz
  222. BIN  external/cffi.darcs/_darcs/patches/20060107015454-28748-02485b7c170fd31e36906120075f017989ae9032.gz
  223. BIN  external/cffi.darcs/_darcs/patches/20060107015644-28748-3d91dbe5bcb5fc15660e6bbec98c9d3b94957a86.gz
  224. BIN  external/cffi.darcs/_darcs/patches/20060107020805-28748-2781996a2d927614211794fa64a7d012db295cdb.gz
  225. BIN  external/cffi.darcs/_darcs/patches/20060107021001-28748-b22d86455010a8a0c031552346b0c91d892a23a8.gz
  226. BIN  external/cffi.darcs/_darcs/patches/20060107021126-28748-9930179ec200130dcd55701aed38375958dbbbeb.gz
  227. BIN  external/cffi.darcs/_darcs/patches/20060107021348-28748-418118a31deaa93c33e2327fe34dce28baa77a83.gz
  228. BIN  external/cffi.darcs/_darcs/patches/20060107021835-28748-dafe969466b3c86dc80bec8baced30e628df877d.gz
  229. BIN  external/cffi.darcs/_darcs/patches/20060107031709-28748-a9e4c59d37a38786183af2cc6a574cfd05667f0f.gz
  230. BIN  external/cffi.darcs/_darcs/patches/20060107053455-6edf7-ed97f9bd79717312b25a85fb7c314c37bac092ed.gz
  231. BIN  external/cffi.darcs/_darcs/patches/20060107061452-6edf7-00babad2adaedeb5353902674c52a3b198371494.gz
  232. BIN  external/cffi.darcs/_darcs/patches/20060107061526-6edf7-048f52230ed59c93dc1afbf8b8e4ba00fad54252.gz
  233. BIN  external/cffi.darcs/_darcs/patches/20060107110558-6edf7-c01820ac5503d66bf825485704d92e34fd16d30c.gz
  234. BIN  external/cffi.darcs/_darcs/patches/20060109074053-6edf7-8e94abf64079b32759b056cd7e341ca0613747c7.gz
  235. BIN  external/cffi.darcs/_darcs/patches/20060110135750-6edf7-f869165ab7023e6c321e35855e3fad1143537c3c.gz
  236. BIN  external/cffi.darcs/_darcs/patches/20060111162918-28748-cc7109467f1994ed760f59a1410c09360441a841.gz
  237. BIN  external/cffi.darcs/_darcs/patches/20060111183840-61e6f-8d05e7635208da6996eb6e57008236fb831dc56d.gz
  238. BIN  external/cffi.darcs/_darcs/patches/20060111213859-28748-de0a6075e96539941e608256efb939940260263f.gz
  239. BIN  external/cffi.darcs/_darcs/patches/20060112185201-28748-7b1ce6849a2e9c2bd47f0bea91a25ea6e8730afd.gz
  240. BIN  external/cffi.darcs/_darcs/patches/20060114093347-6edf7-c82717812b59fe18718b3c9c4585b46da4a5afad.gz
  241. BIN  external/cffi.darcs/_darcs/patches/20060115010647-28748-55f30cfdadfd3cd476fca7759a90dd4ecf9986e7.gz
  242. BIN  external/cffi.darcs/_darcs/patches/20060115011033-28748-048ed8f01f9a1bb7d711e26b2621412e9b143b9a.gz
  243. BIN  external/cffi.darcs/_darcs/patches/20060116143820-62fec-4853db11532c06bb3e6125fa09ca56c0e461f949.gz
  244. BIN  external/cffi.darcs/_darcs/patches/20060116175753-28748-6a52f3506f51202bfbcab24feda24556451918f7.gz
  245. BIN  external/cffi.darcs/_darcs/patches/20060116175903-28748-a075c7c611265c552003d6ffbf13749ced6d976d.gz
  246. BIN  external/cffi.darcs/_darcs/patches/20060117005805-28748-e28a81e556cbaa8f7d04f430bc0c8019a08519c2.gz
  247. BIN  external/cffi.darcs/_darcs/patches/20060117013113-28748-ad8c447e1f347c52d5664371fbb70a6792e53513.gz
  248. BIN  external/cffi.darcs/_darcs/patches/20060117225544-28748-41f9c368fa90a499f98535e85ee36c3734e169c1.gz
  249. BIN  external/cffi.darcs/_darcs/patches/20060118192501-61e6f-f9448a12597c0402cff302b13aa3a1abf41fefeb.gz
  250. BIN  external/cffi.darcs/_darcs/patches/20060119185920-61e6f-45452b624156d6599e9534c2740e52cce3f8b895.gz
  251. BIN  external/cffi.darcs/_darcs/patches/20060121025557-28748-336966aa4f857824c70526b1927a7e1b5aa27c9a.gz
  252. BIN  external/cffi.darcs/_darcs/patches/20060121030713-28748-b5a573112ba66960723496169aec820993d7aaa9.gz
  253. BIN  external/cffi.darcs/_darcs/patches/20060121032249-62fec-cb0ca73738b532bdc2e518433fd4998c087e90e7.gz
  254. BIN  external/cffi.darcs/_darcs/patches/20060121032336-62fec-a1b5accfe9a6311c9db92e80375dbf313609acf7.gz
  255. BIN  external/cffi.darcs/_darcs/patches/20060121032350-28748-046697b56a4bf1d7954c4e0eb0059a772d5560e2.gz
  256. BIN  external/cffi.darcs/_darcs/patches/20060121033736-28748-cefc6f65ef5daa253208e8631e82de29b0ed6b30.gz
  257. BIN  external/cffi.darcs/_darcs/patches/20060121033819-28748-75d774574447b46c9376d975bb2563eb199ea2ba.gz
  258. BIN  external/cffi.darcs/_darcs/patches/20060121034720-28748-89bdbd53c589a23ab5a8592d87d3004c59d66a40.gz
  259. BIN  external/cffi.darcs/_darcs/patches/20060123040605-61e6f-f062d5e78cc9caebd5747db109dc5e1868126977.gz
  260. BIN  external/cffi.darcs/_darcs/patches/20060123165541-28748-771fa335c47d1ff34e9d2dde6df171080e910db9.gz
  261. BIN  external/cffi.darcs/_darcs/patches/20060124165502-61e6f-5b5197cd807ff994530995978e327ea728371cb0.gz
  262. BIN  external/cffi.darcs/_darcs/patches/20060125004215-28748-1684187f8a3403ed2852ebad7c5ad4d40be47eaf.gz
  263. BIN  external/cffi.darcs/_darcs/patches/20060126041652-28748-becc00bb79c6d8cce432d2505f8763cf7694e269.gz
  264. BIN  external/cffi.darcs/_darcs/patches/20060126041743-28748-03bcc23b9999325cf3bcf009db1cd12bfd4308cb.gz
  265. BIN  external/cffi.darcs/_darcs/patches/20060130174114-28748-cbb9de123cf1ee737ad315ea85ff3a94c1935d12.gz
  266. BIN  external/cffi.darcs/_darcs/patches/20060201124058-2c4c3-8e8bb11535b8c0e2bdb74b144766f247acbd52f4.gz
  267. BIN  external/cffi.darcs/_darcs/patches/20060201191712-28748-15073b88cf33d751569d48132391370759cc646d.gz
  268. BIN  external/cffi.darcs/_darcs/patches/20060202035729-28748-d0d1bd2be8640b0e97283f028af1a980b2a9af45.gz
  269. BIN  external/cffi.darcs/_darcs/patches/20060202124753-28748-061e8f8277a8bcb6b60f8a65ea53483118c7fa5b.gz
  270. BIN  external/cffi.darcs/_darcs/patches/20060202124908-28748-54341536fbef749ea8894fecec545344abad90b8.gz
  271. BIN  external/cffi.darcs/_darcs/patches/20060203004128-6edf7-2216bb246360e41c26807627adb55da379a01777.gz
  272. BIN  external/cffi.darcs/_darcs/patches/20060203011213-6edf7-011ad7c8af0ce2c61239ff2836eebf7c61feea02.gz
  273. BIN  external/cffi.darcs/_darcs/patches/20060203013009-6edf7-9c17f669ef59bb98d8ad8ac6278031196b24d192.gz
  274. BIN  external/cffi.darcs/_darcs/patches/20060203065249-6edf7-cf57336361cf47f00f0ec9e0657aeee136449219.gz
  275. BIN  external/cffi.darcs/_darcs/patches/20060203071013-6edf7-b9c02cbe4cd9644d77c357e4a7a76cc8b05189e2.gz
  276. BIN  external/cffi.darcs/_darcs/patches/20060203072438-6edf7-94d992bc0f835978f92c2adc3608e2fe0296cb13.gz
  277. BIN  external/cffi.darcs/_darcs/patches/20060203072547-6edf7-724cb67df2433e0f4704d2c3bfe977619e2e97cd.gz
  278. BIN  external/cffi.darcs/_darcs/patches/20060203073557-6edf7-6f38ebdb2cb7df63a5adda8eb2251c34da7f0da7.gz
  279. BIN  external/cffi.darcs/_darcs/patches/20060203080354-6edf7-615f217a73c92f35173331f7c8a522e486ebf324.gz
  280. BIN  external/cffi.darcs/_darcs/patches/20060203080734-28748-a7d8b220bc563ce0c50fddbecdf41cebe841f80e.gz
  281. BIN  external/cffi.darcs/_darcs/patches/20060203080758-28748-17289ce058c5457e75269cf028366b5269b7f255.gz
  282. BIN  external/cffi.darcs/_darcs/patches/20060203082954-6edf7-24ae00d81eaba5017da3488507a913c626d7536d.gz
  283. BIN  external/cffi.darcs/_darcs/patches/20060203161210-6edf7-36c91ad1952521b952ce951f8fd548daa173bdfb.gz
  284. BIN  external/cffi.darcs/_darcs/patches/20060203163602-6edf7-f0560ec2836abc8586d9ce9618d91675f1fa0496.gz
  285. BIN  external/cffi.darcs/_darcs/patches/20060203163636-6edf7-3f54e918da2d208facf38852c04c2f3298e2510f.gz
  286. BIN  external/cffi.darcs/_darcs/patches/20060203195705-6edf7-e808579529df2651bd7e0714acb856c4f505505d.gz
  287. BIN  external/cffi.darcs/_darcs/patches/20060204022835-6edf7-4bc67cb4feeca06b831d41c0d7616bbc77cc2013.gz
  288. BIN  external/cffi.darcs/_darcs/patches/20060204050240-6edf7-aef6f8f7c93385808cab804ad7d142733ad26f4e.gz
  289. BIN  external/cffi.darcs/_darcs/patches/20060204082814-6edf7-a2871fa7eef427dae8d4cd6927e8dc0973a35ae3.gz
  290. BIN  external/cffi.darcs/_darcs/patches/20060204082912-6edf7-7e2b4c6a411d31f8ea37404f91d3d13131897805.gz
  291. BIN  external/cffi.darcs/_darcs/patches/20060206185439-6edf7-1995fa06c8cf9ac77989cf096c4f5368565f5833.gz
  292. BIN  external/cffi.darcs/_darcs/patches/20060209183938-61e6f-93471e092d717543c14a4991377c9f740017f603.gz
  293. BIN  external/cffi.darcs/_darcs/patches/20060209225109-28748-4740500bf8172fa9f3e1b6c74ee61ee8ce187a60.gz
  294. BIN  external/cffi.darcs/_darcs/patches/20060210003650-28748-b63b6f8dccb29043634346f4891e46798ff00272.gz
  295. BIN  external/cffi.darcs/_darcs/patches/20060210005707-28748-0ef46d2579fce4b08500dccb54b565f9d3989eb9.gz
  296. BIN  external/cffi.darcs/_darcs/patches/20060210021117-28748-5544feab99c3f958dd56711b9de7219e719caf55.gz
  297. BIN  external/cffi.darcs/_darcs/patches/20060210035038-61e6f-f71aff1243d36afe7643f41ac0e183f60512f6ac.gz
  298. BIN  external/cffi.darcs/_darcs/patches/20060210160507-61e6f-1cd039542ecbed46c472a13cf27f30f4452d24d6.gz
  299. BIN  external/cffi.darcs/_darcs/patches/20060210195248-28748-f3f291633fe35a5abee3412bf7b3c0cdd8825642.gz
  300. BIN  external/cffi.darcs/_darcs/patches/20060210220055-28748-0ab88de30ecc632e9cbeba1a640970d04914e8c7.gz
Sorry, we could not display the entire diff because too many files (1,118) changed.
View
1,221 external/asdf.lisp
@@ -1,1221 +0,0 @@
-;;; This is asdf: Another System Definition Facility. $Revision: 1.102 $
-;;;
-;;; Feedback, bug reports, and patches are all welcome: please mail to
-;;; <cclan-list@lists.sf.net>. But note first that the canonical
-;;; source for asdf is presently the cCLan CVS repository at
-;;; <URL:http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/cclan/asdf/>
-;;;
-;;; If you obtained this copy from anywhere else, and you experience
-;;; trouble using it, or find bugs, you may want to check at the
-;;; location above for a more recent version (and for documentation
-;;; and test files, if your copy came without them) before reporting
-;;; bugs. There are usually two "supported" revisions - the CVS HEAD
-;;; is the latest development version, whereas the revision tagged
-;;; RELEASE may be slightly older but is considered `stable'
-
-;;; Copyright (c) 2001-2003 Daniel Barlow and contributors
-;;;
-;;; Permission is hereby granted, free of charge, to any person obtaining
-;;; a copy of this software and associated documentation files (the
-;;; "Software"), to deal in the Software without restriction, including
-;;; without limitation the rights to use, copy, modify, merge, publish,
-;;; distribute, sublicense, and/or sell copies of the Software, and to
-;;; permit persons to whom the Software is furnished to do so, subject to
-;;; the following conditions:
-;;;
-;;; The above copyright notice and this permission notice shall be
-;;; included in all copies or substantial portions of the Software.
-;;;
-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-;;; LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-;;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-;;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-;;; the problem with writing a defsystem replacement is bootstrapping:
-;;; we can't use defsystem to compile it. Hence, all in one file
-
-(defpackage #:asdf
- (:export #:defsystem #:oos #:operate #:find-system #:run-shell-command
- #:system-definition-pathname #:find-component ; miscellaneous
- #:hyperdocumentation #:hyperdoc
-
- #:compile-op #:load-op #:load-source-op #:test-system-version
- #:test-op
- #:operation ; operations
- #:feature ; sort-of operation
- #:version ; metaphorically sort-of an operation
-
- #:input-files #:output-files #:perform ; operation methods
- #:operation-done-p #:explain
-
- #:component #:source-file
- #:c-source-file #:cl-source-file #:java-source-file
- #:static-file
- #:doc-file
- #:html-file
- #:text-file
- #:source-file-type
- #:module ; components
- #:system
- #:unix-dso
-
- #:module-components ; component accessors
- #:component-pathname
- #:component-relative-pathname
- #:component-name
- #:component-version
- #:component-parent
- #:component-property
- #:component-system
-
- #:component-depends-on
-
- #:system-description
- #:system-long-description
- #:system-author
- #:system-maintainer
- #:system-license
- #:system-licence
-
- #:operation-on-warnings
- #:operation-on-failure
-
- ;#:*component-parent-pathname*
- #:*system-definition-search-functions*
- #:*central-registry* ; variables
- #:*compile-file-warnings-behaviour*
- #:*compile-file-failure-behaviour*
- #:*asdf-revision*
-
- #:operation-error #:compile-failed #:compile-warned #:compile-error
- #:error-component #:error-operation
- #:system-definition-error
- #:missing-component
- #:missing-dependency
- #:circular-dependency ; errors
- #:duplicate-names
-
- #:retry
- #:accept ; restarts
-
- #:preference-file-for-system/operation
- #:load-preferences
- )
- (:use :cl))
-
-#+nil
-(error "The author of this file habitually uses #+nil to comment out forms. But don't worry, it was unlikely to work in the New Implementation of Lisp anyway")
-
-
-(in-package #:asdf)
-
-(defvar *asdf-revision* (let* ((v "$Revision: 1.102 $")
- (colon (or (position #\: v) -1))
- (dot (position #\. v)))
- (and v colon dot
- (list (parse-integer v :start (1+ colon)
- :junk-allowed t)
- (parse-integer v :start (1+ dot)
- :junk-allowed t)))))
-
-(defvar *compile-file-warnings-behaviour* :warn)
-(defvar *compile-file-failure-behaviour* #+sbcl :error #-sbcl :warn)
-
-(defvar *verbose-out* nil)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; utility stuff
-
-(defmacro aif (test then &optional else)
- `(let ((it ,test)) (if it ,then ,else)))
-
-(defun pathname-sans-name+type (pathname)
- "Returns a new pathname with same HOST, DEVICE, DIRECTORY as PATHNAME,
-and NIL NAME and TYPE components"
- (make-pathname :name nil :type nil :defaults pathname))
-
-(define-modify-macro appendf (&rest args)
- append "Append onto list")
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; classes, condiitons
-
-(define-condition system-definition-error (error) ()
- ;; [this use of :report should be redundant, but unfortunately it's not.
- ;; cmucl's lisp::output-instance prefers the kernel:slot-class-print-function
- ;; over print-object; this is always conditions::%print-condition for
- ;; condition objects, which in turn does inheritance of :report options at
- ;; run-time. fortunately, inheritance means we only need this kludge here in
- ;; order to fix all conditions that build on it. -- rgr, 28-Jul-02.]
- #+cmu (:report print-object))
-
-(define-condition formatted-system-definition-error (system-definition-error)
- ((format-control :initarg :format-control :reader format-control)
- (format-arguments :initarg :format-arguments :reader format-arguments))
- (:report (lambda (c s)
- (apply #'format s (format-control c) (format-arguments c)))))
-
-(define-condition circular-dependency (system-definition-error)
- ((components :initarg :components :reader circular-dependency-components)))
-
-(define-condition duplicate-names (system-definition-error)
- ((name :initarg :name :reader duplicate-names-name)))
-
-(define-condition missing-component (system-definition-error)
- ((requires :initform "(unnamed)" :reader missing-requires :initarg :requires)
- (version :initform nil :reader missing-version :initarg :version)
- (parent :initform nil :reader missing-parent :initarg :parent)))
-
-(define-condition missing-dependency (missing-component)
- ((required-by :initarg :required-by :reader missing-required-by)))
-
-(define-condition operation-error (error)
- ((component :reader error-component :initarg :component)
- (operation :reader error-operation :initarg :operation))
- (:report (lambda (c s)
- (format s "~@<erred while invoking ~A on ~A~@:>"
- (error-operation c) (error-component c)))))
-(define-condition compile-error (operation-error) ())
-(define-condition compile-failed (compile-error) ())
-(define-condition compile-warned (compile-error) ())
-
-(defclass component ()
- ((name :accessor component-name :initarg :name :documentation
- "Component name: designator for a string composed of portable pathname characters")
- (version :accessor component-version :initarg :version)
- (in-order-to :initform nil :initarg :in-order-to)
- ;;; XXX crap name
- (do-first :initform nil :initarg :do-first)
- ;; methods defined using the "inline" style inside a defsystem form:
- ;; need to store them somewhere so we can delete them when the system
- ;; is re-evaluated
- (inline-methods :accessor component-inline-methods :initform nil)
- (parent :initarg :parent :initform nil :reader component-parent)
- ;; no direct accessor for pathname, we do this as a method to allow
- ;; it to default in funky ways if not supplied
- (relative-pathname :initarg :pathname)
- (operation-times :initform (make-hash-table )
- :accessor component-operation-times)
- ;; XXX we should provide some atomic interface for updating the
- ;; component properties
- (properties :accessor component-properties :initarg :properties
- :initform nil)))
-
-;;;; methods: conditions
-
-(defmethod print-object ((c missing-dependency) s)
- (format s "~@<~A, required by ~A~@:>"
- (call-next-method c nil) (missing-required-by c)))
-
-(defun sysdef-error (format &rest arguments)
- (error 'formatted-system-definition-error :format-control format :format-arguments arguments))
-
-;;;; methods: components
-
-(defmethod print-object ((c missing-component) s)
- (format s "~@<component ~S not found~
- ~@[ or does not match version ~A~]~
- ~@[ in ~A~]~@:>"
- (missing-requires c)
- (missing-version c)
- (when (missing-parent c)
- (component-name (missing-parent c)))))
-
-(defgeneric component-system (component)
- (:documentation "Find the top-level system containing COMPONENT"))
-
-(defmethod component-system ((component component))
- (aif (component-parent component)
- (component-system it)
- component))
-
-(defmethod print-object ((c component) stream)
- (print-unreadable-object (c stream :type t :identity t)
- (ignore-errors
- (prin1 (component-name c) stream))))
-
-(defclass module (component)
- ((components :initform nil :accessor module-components :initarg :components)
- ;; what to do if we can't satisfy a dependency of one of this module's
- ;; components. This allows a limited form of conditional processing
- (if-component-dep-fails :initform :fail
- :accessor module-if-component-dep-fails
- :initarg :if-component-dep-fails)
- (default-component-class :accessor module-default-component-class
- :initform 'cl-source-file :initarg :default-component-class)))
-
-(defgeneric component-pathname (component)
- (:documentation "Extracts the pathname applicable for a particular component."))
-
-(defun component-parent-pathname (component)
- (aif (component-parent component)
- (component-pathname it)
- *default-pathname-defaults*))
-
-(defgeneric component-relative-pathname (component)
- (:documentation "Extracts the relative pathname applicable for a particular component."))
-
-(defmethod component-relative-pathname ((component module))
- (or (slot-value component 'relative-pathname)
- (make-pathname
- :directory `(:relative ,(component-name component))
- :host (pathname-host (component-parent-pathname component)))))
-
-(defmethod component-pathname ((component component))
- (let ((*default-pathname-defaults* (component-parent-pathname component)))
- (merge-pathnames (component-relative-pathname component))))
-
-(defgeneric component-property (component property))
-
-(defmethod component-property ((c component) property)
- (cdr (assoc property (slot-value c 'properties) :test #'equal)))
-
-(defgeneric (setf component-property) (new-value component property))
-
-(defmethod (setf component-property) (new-value (c component) property)
- (let ((a (assoc property (slot-value c 'properties) :test #'equal)))
- (if a
- (setf (cdr a) new-value)
- (setf (slot-value c 'properties)
- (acons property new-value (slot-value c 'properties))))))
-
-(defclass system (module)
- ((description :accessor system-description :initarg :description)
- (long-description
- :accessor system-long-description :initarg :long-description)
- (author :accessor system-author :initarg :author)
- (maintainer :accessor system-maintainer :initarg :maintainer)
- (licence :accessor system-licence :initarg :licence
- :accessor system-license :initarg :license)))
-
-;;; version-satisfies
-
-;;; with apologies to christophe rhodes ...
-(defun split (string &optional max (ws '(#\Space #\Tab)))
- (flet ((is-ws (char) (find char ws)))
- (nreverse
- (let ((list nil) (start 0) (words 0) end)
- (loop
- (when (and max (>= words (1- max)))
- (return (cons (subseq string start) list)))
- (setf end (position-if #'is-ws string :start start))
- (push (subseq string start end) list)
- (incf words)
- (unless end (return list))
- (setf start (1+ end)))))))
-
-(defgeneric version-satisfies (component version))
-
-(defmethod version-satisfies ((c component) version)
- (unless (and version (slot-boundp c 'version))
- (return-from version-satisfies t))
- (let ((x (mapcar #'parse-integer
- (split (component-version c) nil '(#\.))))
- (y (mapcar #'parse-integer
- (split version nil '(#\.)))))
- (labels ((bigger (x y)
- (cond ((not y) t)
- ((not x) nil)
- ((> (car x) (car y)) t)
- ((= (car x) (car y))
- (bigger (cdr x) (cdr y))))))
- (and (= (car x) (car y))
- (or (not (cdr y)) (bigger (cdr x) (cdr y)))))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; finding systems
-
-(defvar *defined-systems* (make-hash-table :test 'equal))
-(defun coerce-name (name)
- (typecase name
- (component (component-name name))
- (symbol (string-downcase (symbol-name name)))
- (string name)
- (t (sysdef-error "~@<invalid component designator ~A~@:>" name))))
-
-;;; for the sake of keeping things reasonably neat, we adopt a
-;;; convention that functions in this list are prefixed SYSDEF-
-
-(defvar *system-definition-search-functions*
- '(sysdef-central-registry-search))
-
-(defun system-definition-pathname (system)
- (some (lambda (x) (funcall x system))
- *system-definition-search-functions*))
-
-(defvar *central-registry*
- '(*default-pathname-defaults*
- #+nil "/home/dan/src/sourceforge/cclan/asdf/systems/"
- #+nil "telent:asdf;systems;"))
-
-(defun sysdef-central-registry-search (system)
- (let ((name (coerce-name system)))
- (block nil
- (dolist (dir *central-registry*)
- (let* ((defaults (eval dir))
- (file (and defaults
- (make-pathname
- :defaults defaults :version :newest
- :name name :type "asd" :case :local))))
- (if (and file (probe-file file))
- (return file)))))))
-
-(defun make-temporary-package ()
- (flet ((try (counter)
- (ignore-errors
- (make-package (format nil "ASDF~D" counter)
- :use '(:cl :asdf)))))
- (do* ((counter 0 (+ counter 1))
- (package (try counter) (try counter)))
- (package package))))
-
-(defun find-system (name &optional (error-p t))
- (let* ((name (coerce-name name))
- (in-memory (gethash name *defined-systems*))
- (on-disk (system-definition-pathname name)))
- (when (and on-disk
- (or (not in-memory)
- (< (car in-memory) (file-write-date on-disk))))
- (let ((package (make-temporary-package)))
- (unwind-protect
- (let ((*package* package))
- (format
- *verbose-out*
- "~&~@<; ~@;loading system definition from ~A into ~A~@:>~%"
- ;; FIXME: This wants to be (ENOUGH-NAMESTRING
- ;; ON-DISK), but CMUCL barfs on that.
- on-disk
- *package*)
- (load on-disk))
- (delete-package package))))
- (let ((in-memory (gethash name *defined-systems*)))
- (if in-memory
- (progn (if on-disk (setf (car in-memory) (file-write-date on-disk)))
- (cdr in-memory))
- (if error-p (error 'missing-component :requires name))))))
-
-(defun register-system (name system)
- (format *verbose-out* "~&~@<; ~@;registering ~A as ~A~@:>~%" system name)
- (setf (gethash (coerce-name name) *defined-systems*)
- (cons (get-universal-time) system)))
-
-(defun system-registered-p (name)
- (gethash (coerce-name name) *defined-systems*))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; finding components
-
-(defgeneric find-component (module name &optional version)
- (:documentation "Finds the component with name NAME present in the
-MODULE module; if MODULE is nil, then the component is assumed to be a
-system."))
-
-(defmethod find-component ((module module) name &optional version)
- (if (slot-boundp module 'components)
- (let ((m (find name (module-components module)
- :test #'equal :key #'component-name)))
- (if (and m (version-satisfies m version)) m))))
-
-
-;;; a component with no parent is a system
-(defmethod find-component ((module (eql nil)) name &optional version)
- (let ((m (find-system name nil)))
- (if (and m (version-satisfies m version)) m)))
-
-;;; component subclasses
-
-(defclass source-file (component) ())
-
-(defclass cl-source-file (source-file) ())
-(defclass c-source-file (source-file) ())
-(defclass java-source-file (source-file) ())
-(defclass static-file (source-file) ())
-(defclass doc-file (static-file) ())
-(defclass html-file (doc-file) ())
-
-(defgeneric source-file-type (component system))
-(defmethod source-file-type ((c cl-source-file) (s module)) "lisp")
-(defmethod source-file-type ((c c-source-file) (s module)) "c")
-(defmethod source-file-type ((c java-source-file) (s module)) "java")
-(defmethod source-file-type ((c html-file) (s module)) "html")
-(defmethod source-file-type ((c static-file) (s module)) nil)
-
-(defmethod component-relative-pathname ((component source-file))
- (let ((relative-pathname (slot-value component 'relative-pathname)))
- (if relative-pathname
- (merge-pathnames
- relative-pathname
- (make-pathname
- :type (source-file-type component (component-system component))))
- (let* ((*default-pathname-defaults*
- (component-parent-pathname component))
- (name-type
- (make-pathname
- :name (component-name component)
- :type (source-file-type component
- (component-system component)))))
- name-type))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; operations
-
-;;; one of these is instantiated whenever (operate ) is called
-
-(defclass operation ()
- ((forced :initform nil :initarg :force :accessor operation-forced)
- (original-initargs :initform nil :initarg :original-initargs
- :accessor operation-original-initargs)
- (visited-nodes :initform nil :accessor operation-visited-nodes)
- (visiting-nodes :initform nil :accessor operation-visiting-nodes)
- (parent :initform nil :initarg :parent :accessor operation-parent)))
-
-(defmethod print-object ((o operation) stream)
- (print-unreadable-object (o stream :type t :identity t)
- (ignore-errors
- (prin1 (operation-original-initargs o) stream))))
-
-(defmethod shared-initialize :after ((operation operation) slot-names
- &key force
- &allow-other-keys)
- (declare (ignore slot-names force))
- ;; empty method to disable initarg validity checking
- )
-
-(defgeneric perform (operation component))
-(defgeneric operation-done-p (operation component))
-(defgeneric explain (operation component))
-(defgeneric output-files (operation component))
-(defgeneric input-files (operation component))
-
-(defun node-for (o c)
- (cons (class-name (class-of o)) c))
-
-(defgeneric operation-ancestor (operation)
- (:documentation "Recursively chase the operation's parent pointer until we get to the head of the tree"))
-
-(defmethod operation-ancestor ((operation operation))
- (aif (operation-parent operation)
- (operation-ancestor it)
- operation))
-
-
-(defun make-sub-operation (c o dep-c dep-o)
- (let* ((args (copy-list (operation-original-initargs o)))
- (force-p (getf args :force)))
- ;; note explicit comparison with T: any other non-NIL force value
- ;; (e.g. :recursive) will pass through
- (cond ((and (null (component-parent c))
- (null (component-parent dep-c))
- (not (eql c dep-c)))
- (when (eql force-p t)
- (setf (getf args :force) nil))
- (apply #'make-instance dep-o
- :parent o
- :original-initargs args args))
- ((subtypep (type-of o) dep-o)
- o)
- (t
- (apply #'make-instance dep-o
- :parent o :original-initargs args args)))))
-
-
-(defgeneric visit-component (operation component data))
-
-(defmethod visit-component ((o operation) (c component) data)
- (unless (component-visited-p o c)
- (push (cons (node-for o c) data)
- (operation-visited-nodes (operation-ancestor o)))))
-
-(defgeneric component-visited-p (operation component))
-
-(defmethod component-visited-p ((o operation) (c component))
- (assoc (node-for o c)
- (operation-visited-nodes (operation-ancestor o))
- :test 'equal))
-
-(defgeneric (setf visiting-component) (new-value operation component))
-
-(defmethod (setf visiting-component) (new-value operation component)
- ;; MCL complains about unused lexical variables
- (declare (ignorable new-value operation component)))
-
-(defmethod (setf visiting-component) (new-value (o operation) (c component))
- (let ((node (node-for o c))
- (a (operation-ancestor o)))
- (if new-value
- (pushnew node (operation-visiting-nodes a) :test 'equal)
- (setf (operation-visiting-nodes a)
- (remove node (operation-visiting-nodes a) :test 'equal)))))
-
-(defgeneric component-visiting-p (operation component))
-
-(defmethod component-visiting-p ((o operation) (c component))
- (let ((node (cons o c)))
- (member node (operation-visiting-nodes (operation-ancestor o))
- :test 'equal)))
-
-(defgeneric component-depends-on (operation component))
-
-(defmethod component-depends-on ((o operation) (c component))
- (cdr (assoc (class-name (class-of o))
- (slot-value c 'in-order-to))))
-
-(defgeneric component-self-dependencies (operation component))
-
-(defmethod component-self-dependencies ((o operation) (c component))
- (let ((all-deps (component-depends-on o c)))
- (remove-if-not (lambda (x)
- (member (component-name c) (cdr x) :test #'string=))
- all-deps)))
-
-(defmethod input-files ((operation operation) (c component))
- (let ((parent (component-parent c))
- (self-deps (component-self-dependencies operation c)))
- (if self-deps
- (mapcan (lambda (dep)
- (destructuring-bind (op name) dep
- (output-files (make-instance op)
- (find-component parent name))))
- self-deps)
- ;; no previous operations needed? I guess we work with the
- ;; original source file, then
- (list (component-pathname c)))))
-
-(defmethod input-files ((operation operation) (c module)) nil)
-
-(defmethod operation-done-p ((o operation) (c component))
- (flet ((fwd-or-return-t (file)
- ;; if FILE-WRITE-DATE returns NIL, it's possible that the
- ;; user or some other agent has deleted an input file. If
- ;; that's the case, well, that's not good, but as long as
- ;; the operation is otherwise considered to be done we
- ;; could continue and survive.
- (let ((date (file-write-date file)))
- (cond
- (date)
- (t
- (warn "~@<Missing FILE-WRITE-DATE for ~S: treating ~
- operation ~S on component ~S as done.~@:>"
- file o c)
- (return-from operation-done-p t))))))
- (let ((out-files (output-files o c))
- (in-files (input-files o c)))
- (cond ((and (not in-files) (not out-files))
- ;; arbitrary decision: an operation that uses nothing to
- ;; produce nothing probably isn't doing much
- t)
- ((not out-files)
- (let ((op-done
- (gethash (type-of o)
- (component-operation-times c))))
- (and op-done
- (>= op-done
- (apply #'max
- (mapcar #'fwd-or-return-t in-files))))))
- ((not in-files) nil)
- (t
- (and
- (every #'probe-file out-files)
- (> (apply #'min (mapcar #'file-write-date out-files))
- (apply #'max (mapcar #'fwd-or-return-t in-files)))))))))
-
-;;; So you look at this code and think "why isn't it a bunch of
-;;; methods". And the answer is, because standard method combination
-;;; runs :before methods most->least-specific, which is back to front
-;;; for our purposes. And CLISP doesn't have non-standard method
-;;; combinations, so let's keep it simple and aspire to portability
-
-(defgeneric traverse (operation component))
-(defmethod traverse ((operation operation) (c component))
- (let ((forced nil))
- (labels ((do-one-dep (required-op required-c required-v)
- (let* ((dep-c (or (find-component
- (component-parent c)
- ;; XXX tacky. really we should build the
- ;; in-order-to slot with canonicalized
- ;; names instead of coercing this late
- (coerce-name required-c) required-v)
- (error 'missing-dependency :required-by c
- :version required-v
- :requires required-c)))
- (op (make-sub-operation c operation dep-c required-op)))
- (traverse op dep-c)))
- (do-dep (op dep)
- (cond ((eq op 'feature)
- (or (member (car dep) *features*)
- (error 'missing-dependency :required-by c
- :requires (car dep) :version nil)))
- (t
- (dolist (d dep)
- (cond ((consp d)
- (assert (string-equal
- (symbol-name (first d))
- "VERSION"))
- (appendf forced
- (do-one-dep op (second d) (third d))))
- (t
- (appendf forced (do-one-dep op d nil)))))))))
- (aif (component-visited-p operation c)
- (return-from traverse
- (if (cdr it) (list (cons 'pruned-op c)) nil)))
- ;; dependencies
- (if (component-visiting-p operation c)
- (error 'circular-dependency :components (list c)))
- (setf (visiting-component operation c) t)
- (loop for (required-op . deps) in (component-depends-on operation c)
- do (do-dep required-op deps))
- ;; constituent bits
- (let ((module-ops
- (when (typep c 'module)
- (let ((at-least-one nil)
- (forced nil)
- (error nil))
- (loop for kid in (module-components c)
- do (handler-case
- (appendf forced (traverse operation kid ))
- (missing-dependency (condition)
- (if (eq (module-if-component-dep-fails c) :fail)
- (error condition))
- (setf error condition))
- (:no-error (c)
- (declare (ignore c))
- (setf at-least-one t))))
- (when (and (eq (module-if-component-dep-fails c) :try-next)
- (not at-least-one))
- (error error))
- forced))))
- ;; now the thing itself
- (when (or forced module-ops
- (not (operation-done-p operation c))
- (let ((f (operation-forced (operation-ancestor operation))))
- (and f (or (not (consp f))
- (member (component-name
- (operation-ancestor operation))
- (mapcar #'coerce-name f)
- :test #'string=)))))
- (let ((do-first (cdr (assoc (class-name (class-of operation))
- (slot-value c 'do-first)))))
- (loop for (required-op . deps) in do-first
- do (do-dep required-op deps)))
- (setf forced (append (delete 'pruned-op forced :key #'car)
- (delete 'pruned-op module-ops :key #'car)
- (list (cons operation c))))))
- (setf (visiting-component operation c) nil)
- (visit-component operation c (and forced t))
- forced)))
-
-
-(defmethod perform ((operation operation) (c source-file))
- (sysdef-error
- "~@<required method PERFORM not implemented ~
- for operation ~A, component ~A~@:>"
- (class-of operation) (class-of c)))
-
-(defmethod perform ((operation operation) (c module))
- nil)
-
-(defmethod explain ((operation operation) (component component))
- (format *verbose-out* "~&;;; ~A on ~A~%" operation component))
-
-;;; compile-op
-
-(defclass compile-op (operation)
- ((proclamations :initarg :proclamations :accessor compile-op-proclamations :initform nil)
- (on-warnings :initarg :on-warnings :accessor operation-on-warnings
- :initform *compile-file-warnings-behaviour*)
- (on-failure :initarg :on-failure :accessor operation-on-failure
- :initform *compile-file-failure-behaviour*)))
-
-(defmethod perform :before ((operation compile-op) (c source-file))
- (map nil #'ensure-directories-exist (output-files operation c)))
-
-(defmethod perform :after ((operation operation) (c component))
- (setf (gethash (type-of operation) (component-operation-times c))
- (get-universal-time))
- (load-preferences c operation))
-
-;;; perform is required to check output-files to find out where to put
-;;; its answers, in case it has been overridden for site policy
-(defmethod perform ((operation compile-op) (c cl-source-file))
- #-:broken-fasl-loader
- (let ((source-file (component-pathname c))
- (output-file (car (output-files operation c))))
- (multiple-value-bind (output warnings-p failure-p)
- (compile-file source-file
- :output-file output-file)
- ;(declare (ignore output))
- (when warnings-p
- (case (operation-on-warnings operation)
- (:warn (warn
- "~@<COMPILE-FILE warned while performing ~A on ~A.~@:>"
- operation c))
- (:error (error 'compile-warned :component c :operation operation))
- (:ignore nil)))
- (when failure-p
- (case (operation-on-failure operation)
- (:warn (warn
- "~@<COMPILE-FILE failed while performing ~A on ~A.~@:>"
- operation c))
- (:error (error 'compile-failed :component c :operation operation))
- (:ignore nil)))
- (unless output
- (error 'compile-error :component c :operation operation)))))
-
-(defmethod output-files ((operation compile-op) (c cl-source-file))
- #-:broken-fasl-loader (list (compile-file-pathname (component-pathname c)))
- #+:broken-fasl-loader (list (component-pathname c)))
-
-(defmethod perform ((operation compile-op) (c static-file))
- nil)
-
-(defmethod output-files ((operation compile-op) (c static-file))
- nil)
-
-;;; load-op
-
-(defclass basic-load-op (operation) ())
-
-(defclass load-op (basic-load-op) ())
-
-(defmethod perform ((o load-op) (c cl-source-file))
- (mapcar #'load (input-files o c)))
-
-(defmethod perform ((operation load-op) (c static-file))
- nil)
-(defmethod operation-done-p ((operation load-op) (c static-file))
- t)
-
-(defmethod output-files ((o operation) (c component))
- nil)
-
-(defmethod component-depends-on ((operation load-op) (c component))
- (cons (list 'compile-op (component-name c))
- (call-next-method)))
-
-;;; load-source-op
-
-(defclass load-source-op (basic-load-op) ())
-
-(defmethod perform ((o load-source-op) (c cl-source-file))
- (let ((source (component-pathname c)))
- (setf (component-property c 'last-loaded-as-source)
- (and (load source)
- (get-universal-time)))))
-
-(defmethod perform ((operation load-source-op) (c static-file))
- nil)
-
-(defmethod output-files ((operation load-source-op) (c component))
- nil)
-
-;;; FIXME: we simply copy load-op's dependencies. this is Just Not Right.
-(defmethod component-depends-on ((o load-source-op) (c component))
- (let ((what-would-load-op-do (cdr (assoc 'load-op
- (slot-value c 'in-order-to)))))
- (mapcar (lambda (dep)
- (if (eq (car dep) 'load-op)
- (cons 'load-source-op (cdr dep))
- dep))
- what-would-load-op-do)))
-
-(defmethod operation-done-p ((o load-source-op) (c source-file))
- (if (or (not (component-property c 'last-loaded-as-source))
- (> (file-write-date (component-pathname c))
- (component-property c 'last-loaded-as-source)))
- nil t))
-
-(defclass test-op (operation) ())
-
-(defmethod perform ((operation test-op) (c component))
- nil)
-
-(defgeneric load-preferences (system operation)
- (:documentation "Called to load system preferences after <perform operation system>. Typical uses are to set parameters that don't exist until after the system has been loaded."))
-
-(defgeneric preference-file-for-system/operation (system operation)
- (:documentation "Returns the pathname of the preference file for this system. Called by 'load-preferences to determine what file to load."))
-
-(defmethod load-preferences ((s t) (operation t))
- ;; do nothing
- (values))
-
-(defmethod load-preferences ((s system) (operation basic-load-op))
- (let* ((*package* (find-package :common-lisp))
- (file (probe-file (preference-file-for-system/operation s operation))))
- (when file
- (when *verbose-out*
- (format *verbose-out*
- "~&~@<; ~@;loading preferences for ~A/~(~A~) from ~A~@:>~%"
- (component-name s)
- (type-of operation) file))
- (load file))))
-
-(defmethod preference-file-for-system/operation ((system t) (operation t))
- ;; cope with anything other than systems
- (preference-file-for-system/operation (find-system system t) operation))
-
-(defmethod preference-file-for-system/operation ((s system) (operation t))
- (merge-pathnames
- (make-pathname :name (component-name s)
- :type "lisp"
- :directory '(:relative ".asdf"))
- (truename (user-homedir-pathname))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; invoking operations
-
-(defun operate (operation-class system &rest args &key (verbose t) version
- &allow-other-keys)
- (let* ((op (apply #'make-instance operation-class
- :original-initargs args
- args))
- (*verbose-out* (if verbose *trace-output* (make-broadcast-stream)))
- (system (if (typep system 'component) system (find-system system))))
- (unless (version-satisfies system version)
- (error 'missing-component :requires system :version version))
- (let ((steps (traverse op system)))
- (with-compilation-unit ()
- (loop for (op . component) in steps do
- (loop
- (restart-case
- (progn (perform op component)
- (return))
- (retry ()
- :report
- (lambda (s)
- (format s "~@<Retry performing ~S on ~S.~@:>"
- op component)))
- (accept ()
- :report
- (lambda (s)
- (format s
- "~@<Continue, treating ~S on ~S as ~
- having been successful.~@:>"
- op component))
- (setf (gethash (type-of op)
- (component-operation-times component))
- (get-universal-time))
- (return)))))))))
-
-(defun oos (&rest args)
- "Alias of OPERATE function"
- (apply #'operate args))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; syntax
-
-(defun remove-keyword (key arglist)
- (labels ((aux (key arglist)
- (cond ((null arglist) nil)
- ((eq key (car arglist)) (cddr arglist))
- (t (cons (car arglist) (cons (cadr arglist)
- (remove-keyword
- key (cddr arglist))))))))
- (aux key arglist)))
-
-(defmacro defsystem (name &body options)
- (destructuring-bind (&key pathname (class 'system) &allow-other-keys) options
- (let ((component-options (remove-keyword :class options)))
- `(progn
- ;; system must be registered before we parse the body, otherwise
- ;; we recur when trying to find an existing system of the same name
- ;; to reuse options (e.g. pathname) from
- (let ((s (system-registered-p ',name)))
- (cond ((and s (eq (type-of (cdr s)) ',class))
- (setf (car s) (get-universal-time)))
- (s
- #+clisp
- (sysdef-error "Cannot redefine the existing system ~A with a different class" s)
- #-clisp
- (change-class (cdr s) ',class))
- (t
- (register-system (quote ,name)
- (make-instance ',class :name ',name)))))
- (parse-component-form nil (apply
- #'list
- :module (coerce-name ',name)
- :pathname
- (or ,pathname
- (pathname-sans-name+type
- (resolve-symlinks *load-truename*))
- *default-pathname-defaults*)
- ',component-options))))))
-
-
-(defun class-for-type (parent type)
- (let* ((extra-symbols (list (find-symbol (symbol-name type) *package*)
- (find-symbol (symbol-name type)
- #.(package-name *package*))))
- (class (dolist (symbol (if (keywordp type)
- extra-symbols
- (cons type extra-symbols)))
- (when (and symbol
- (find-class symbol nil)
- (subtypep symbol 'component))
- (return (find-class symbol))))))
- (or class
- (and (eq type :file)
- (or (module-default-component-class parent)
- (find-class 'cl-source-file)))
- (sysdef-error "~@<don't recognize component type ~A~@:>" type))))
-
-(defun maybe-add-tree (tree op1 op2 c)
- "Add the node C at /OP1/OP2 in TREE, unless it's there already.
-Returns the new tree (which probably shares structure with the old one)"
- (let ((first-op-tree (assoc op1 tree)))
- (if first-op-tree
- (progn
- (aif (assoc op2 (cdr first-op-tree))
- (if (find c (cdr it))
- nil
- (setf (cdr it) (cons c (cdr it))))
- (setf (cdr first-op-tree)
- (acons op2 (list c) (cdr first-op-tree))))
- tree)
- (acons op1 (list (list op2 c)) tree))))
-
-(defun union-of-dependencies (&rest deps)
- (let ((new-tree nil))
- (dolist (dep deps)
- (dolist (op-tree dep)
- (dolist (op (cdr op-tree))
- (dolist (c (cdr op))
- (setf new-tree
- (maybe-add-tree new-tree (car op-tree) (car op) c))))))
- new-tree))
-
-
-(defun remove-keys (key-names args)
- (loop for ( name val ) on args by #'cddr
- unless (member (symbol-name name) key-names
- :key #'symbol-name :test 'equal)
- append (list name val)))
-
-(defvar *serial-depends-on*)
-
-(defun parse-component-form (parent options)
- (destructuring-bind
- (type name &rest rest &key
- ;; the following list of keywords is reproduced below in the
- ;; remove-keys form. important to keep them in sync
- components pathname default-component-class
- perform explain output-files operation-done-p
- weakly-depends-on
- depends-on serial in-order-to
- ;; list ends
- &allow-other-keys) options
- (check-component-input type name weakly-depends-on depends-on components in-order-to)
-
- (when (and parent
- (find-component parent name)
- ;; ignore the same object when rereading the defsystem
- (not
- (typep (find-component parent name)
- (class-for-type parent type))))
- (error 'duplicate-names :name name))
-
- (let* ((other-args (remove-keys
- '(components pathname default-component-class
- perform explain output-files operation-done-p
- weakly-depends-on
- depends-on serial in-order-to)
- rest))
- (ret
- (or (find-component parent name)
- (make-instance (class-for-type parent type)))))
- (when weakly-depends-on
- (setf depends-on (append depends-on (remove-if (complement #'find-system) weakly-depends-on))))
- (when (boundp '*serial-depends-on*)
- (setf depends-on
- (concatenate 'list *serial-depends-on* depends-on)))
- (apply #'reinitialize-instance
- ret
- :name (coerce-name name)
- :pathname pathname
- :parent parent
- other-args)
- (when (typep ret 'module)
- (setf (module-default-component-class ret)
- (or default-component-class
- (and (typep parent 'module)
- (module-default-component-class parent))))
- (let ((*serial-depends-on* nil))
- (setf (module-components ret)
- (loop for c-form in components
- for c = (parse-component-form ret c-form)
- collect c
- if serial
- do (push (component-name c) *serial-depends-on*))))
-
- ;; check for duplicate names
- (let ((name-hash (make-hash-table :test #'equal)))
- (loop for c in (module-components ret)
- do
- (if (gethash (component-name c)
- name-hash)
- (error 'duplicate-names
- :name (component-name c))
- (setf (gethash (component-name c)
- name-hash)
- t)))))
-
- (setf (slot-value ret 'in-order-to)
- (union-of-dependencies
- in-order-to
- `((compile-op (compile-op ,@depends-on))
- (load-op (load-op ,@depends-on))))
- (slot-value ret 'do-first) `((compile-op (load-op ,@depends-on))))
-
- (loop for (n v) in `((perform ,perform) (explain ,explain)
- (output-files ,output-files)
- (operation-done-p ,operation-done-p))
- do (map 'nil
- ;; this is inefficient as most of the stored
- ;; methods will not be for this particular gf n
- ;; But this is hardly performance-critical
- (lambda (m) (remove-method (symbol-function n) m))
- (component-inline-methods ret))
- when v
- do (destructuring-bind (op qual (o c) &body body) v
- (pushnew
- (eval `(defmethod ,n ,qual ((,o ,op) (,c (eql ,ret)))
- ,@body))
- (component-inline-methods ret))))
- ret)))
-
-(defun check-component-input (type name weakly-depends-on depends-on components in-order-to)
- "A partial test of the values of a component."
- (when weakly-depends-on (warn "We got one! XXXXX"))
- (unless (listp depends-on)
- (sysdef-error-component ":depends-on must be a list."
- type name depends-on))
- (unless (listp weakly-depends-on)
- (sysdef-error-component ":weakly-depends-on must be a list."
- type name weakly-depends-on))
- (unless (listp components)
- (sysdef-error-component ":components must be NIL or a list of components."
- type name components))
- (unless (and (listp in-order-to) (listp (car in-order-to)))
- (sysdef-error-component ":in-order-to must be NIL or a list of components."
- type name in-order-to)))
-
-(defun sysdef-error-component (msg type name value)
- (sysdef-error (concatenate 'string msg
- "~&The value specified for ~(~A~) ~A is ~W")
- type name value))
-
-(defun resolve-symlinks (path)
- #-allegro (truename path)
- #+allegro (excl:pathname-resolve-symbolic-links path)
- )
-
-;;; optional extras
-
-;;; run-shell-command functions for other lisp implementations will be
-;;; gratefully accepted, if they do the same thing. If the docstring
-;;; is ambiguous, send a bug report
-
-(defun run-shell-command (control-string &rest args)
- "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and
-synchronously execute the result using a Bourne-compatible shell, with
-output to *VERBOSE-OUT*. Returns the shell's exit code."
- (let ((command (apply #'format nil control-string args)))
- (format *verbose-out* "; $ ~A~%" command)
- #+sbcl
- (sb-ext:process-exit-code
- (sb-ext:run-program
- #+win32 "sh" #-win32 "/bin/sh"
- (list "-c" command)
- #+win32 #+win32 :search t
- :input nil :output *verbose-out*))
-
- #+(or cmu scl)
- (ext:process-exit-code
- (ext:run-program
- "/bin/sh"
- (list "-c" command)
- :input nil :output *verbose-out*))
-
- #+allegro
- (excl:run-shell-command command :input nil :output *verbose-out*)
-
- #+lispworks
- (system:call-system-showing-output
- command
- :shell-type "/bin/sh"
- :output-stream *verbose-out*)
-
- #+clisp ;XXX not exactly *verbose-out*, I know
- (ext:run-shell-command command :output :terminal :wait t)
-
- #+openmcl
- (nth-value 1
- (ccl:external-process-status
- (ccl:run-program "/bin/sh" (list "-c" command)
- :input nil :output *verbose-out*
- :wait t)))
- #+ecl ;; courtesy of Juan Jose Garcia Ripoll
- (si:system command)
- #-(or openmcl clisp lispworks allegro scl cmu sbcl ecl)
- (error "RUN-SHELL-PROGRAM not implemented for this Lisp")
- ))
-
-
-(defgeneric hyperdocumentation (package name doc-type))
-(defmethod hyperdocumentation ((package symbol) name doc-type)
- (hyperdocumentation (find-package package) name doc-type))
-
-(defun hyperdoc (name doc-type)
- (hyperdocumentation (symbol-package name) name doc-type))
-
-
-(pushnew :asdf *features*)
-
-#+sbcl
-(eval-when (:compile-toplevel :load-toplevel :execute)
- (when (sb-ext:posix-getenv "SBCL_BUILDING_CONTRIB")
- (pushnew :sbcl-hooks-require *features*)))
-
-#+(and sbcl sbcl-hooks-require)
-(progn
- (defun module-provide-asdf (name)
- (handler-bind ((style-warning #'muffle-warning))
- (let* ((*verbose-out* (make-broadcast-stream))
- (system (asdf:find-system name nil)))
- (when system
- (asdf:operate 'asdf:load-op name)
- t))))
-
- (defun contrib-sysdef-search (system)
- (let ((home (sb-ext:posix-getenv "SBCL_HOME")))
- (when home
- (let* ((name (coerce-name system))
- (home (truename home))
- (contrib (merge-pathnames
- (make-pathname :directory `(:relative ,name)
- :name name
- :type "asd"
- :case :local
- :version :newest)
- home)))
- (probe-file contrib)))))
-
- (pushnew
- '(let ((home (sb-ext:posix-getenv "SBCL_HOME")))
- (when home
- (merge-pathnames "site-systems/" (truename home))))
- *central-registry*)
-
- (pushnew
- '(merge-pathnames ".sbcl/systems/"
- (user-homedir-pathname))
- *central-registry*)
-
- (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)
- (pushnew 'contrib-sysdef-search *system-definition-search-functions*))
-
-(provide 'asdf)
-
View
762 external/asdf_README.txt
@@ -1,762 +0,0 @@
-$Id: README,v 1.39 2006/08/21 10:52:32 crhodes Exp $ -*- Text -*-
-
-The canonical documentation for asdf is in the file asdf.texinfo.
-The significant overlap between this file and that will one day be
-resolved by deleting text from this file; in the meantime, please look
-there before here.
-
-
-
-asdf: another system definition facility
-========================================
-
-* Getting the latest version
-
-0) Decide which version you want. HEAD is the newest version and
-usually OK, whereas RELEASE is for cautious people (e.g. who already
-have systems using asdf that they don't want broken), a slightly older
-version about which none of the HEAD users have complained.
-
-1) Check it out from sourceforge cCLan CVS:
-
-1a) cvs -d:pserver:anonymous@cvs.cclan.sourceforge.net:/cvsroot/cclan login
- (no password: just press Enter)
-
-1a.1) cvs -z3 -d:pserver:anonymous@cvs.cclan.sourceforge.net:/cvsroot/cclan
- co -r RELEASE asdf
-
-or for the bleeding edge, instead
-
-1a.2) cvs -z3 -d:pserver:anonymous@cvs.cclan.sourceforge.net:/cvsroot/cclan
- co -A asdf
-
-If you are tracking the bleeding edge, you may want to subscribe to
-the cclan-commits mailing list (see
-<URL:http://sourceforge.net/mail/?group_id=28536>) to receive commit
-messages and diffs whenever changes are made.
-
-For more CVS information, look at http://sourceforge.net/cvs/?group_id=28536
-
-
-* Getting started
-
-- The single file asdf.lisp is all you need to use asdf normally. For
-maximum convenience you want to have it loaded whenever you start your
-Lisp implementation, by loading it from the startup script, or dumping
-a custom core, or something.
-
-- The variable asdf:*central-registry* is a list of system directory
- designators. A system directory designator is a form which will be
- evaluated whenever a system is to be found, and must evaluate to a
- directory to look in. For example, you might have
-
- (*default-pathname-defaults* "/home/me/cl/systems/"
- "/usr/share/common-lisp/systems/")
-
- (When we say "directory" here, we mean "designator for a pathname
- with a supplied DIRECTORY component")
-
- It is possible to customize the system definition file search.
- That's considered advanced use, and covered later: search forward
- for *system-definition-search-functions*
-
-- To compile and load a system 'foo', you need to (1) ensure that
- foo.asd is in one of the directories in *central-registry* (a
- symlink to the real location of foo.asd is preferred), (2) execute
- ``(asdf:operate 'asdf:load-op 'foo)''
-
- $ cd /home/me/cl/systems/
- $ ln -s ~/src/foo/foo.asd .
- $ lisp
- * (asdf:operate 'asdf:load-op 'foo)
-
-- To write your own system definitions, look at the test systems in
- test/ , and read the rest of this. Ignore systems/ which is old
- and may go away when next I clean up
-
-- Syntax is similar to mk-defsystem 3 for straightforward systems, you
- may only need to remove the :source-pathname option (and replace it
- with :pathname if the asd file is not in the same place as the
- system sources)
-
-- Join cclan-list@lists.sf.net for discussion, bug reports, questions, etc
-
-- cclan.asd and the source files listed therein contain useful extensions
- for maintainers of systems in the cCLan. If this isn't you, you
- don't need them - although you may want to look at them anyway
-
-- For systems that do complicated things (e.g. compiling C files to
- load as foreign code), the packages in vn-cclan may provide some
- guidance. db-sockets, for example, is known to do outlandish things
- with preprocessors
-
- http://ww.telent.net/cliki/vn-cclan
-
-
-
-* Concepts
-
-This system definition utility talks in terms of 'components' and
-'operations'.
-
-Components form systems: a component represents a source file, or a
-collection of components. A system is therefore a component,
-recursively formed of a tree of subcomponents.
-
-Operations are instantiated then performed on the nodes of a tree to
-do things like
-
- - compile all its files
- - load the files into a running lisp environment
- - copy its source files somewhere else
-
-Operations can be invoked directly, or examined to see what their
-effects would be without performing them. There are a bunch of
-methods specialised on operation and component type which actually do
-the grunt work.
-
-asdf is extensible to new operations and to new component types. This
-allows the addition of behaviours: for example, a new component could
-be added for Java JAR archives, and methods specialised on compile-op
-added for it that would accomplish the relevant actions. Users
-defining their own operations and component types should inherit from
-the asdf base classes asdf:operation and asdf:component respectively.
-
-* Inspiration
-
-** mk-defsystem (defsystem-3.x)
-
-We aim to solve basically the same problems as mk-defsystem does.
-However, our architecture for extensibility better exploits CL
-language features (and is documented), and we intend to be portable
-rather than just widely-ported. No slight on the mk-defsystem authors
-and maintainers is intended here; that implementation has the
-unenviable task of supporting non-ANSI implementations, which I
-propose to ignore.
-
-The surface defsystem syntax of asdf is more-or-less compatible with
-mk-defsystem
-
-The mk-defsystem code for topologically sorting a module's dependency
-list was very useful.
-
-** defsystem-4 proposal
-
-Marco and Peter's proposal for defsystem 4 served as the driver for
-many of the features in here. Notable differences are
-
-- we don't specify output files or output file extensions as part of
- the system
-
- If you want to find out what files an operation would create, ask
- the operation
-
-- we don't deal with CL packages
-
- If you want to compile in a particular package, use an in-package
- form in that file (ilisp will like you more if you do this anyway)
-
-- there is no proposal here that defsystem does version control.
-
- A system has a given version which can be used to check
- dependencies, but that's all.
-
-The defsystem 4 proposal tends to look more at the external features,
-whereas this one centres on a protocol for system introspection.
-
-** kmp's "The Description of Large Systems", MIT AI Memu 801
-
-Available in updated-for-CL form on the web at
-http://world.std.com/~pitman/Papers/Large-Systems.html
-
-In our implementation we borrow kmp's overall PROCESS-OPTIONS and
-concept to deal with creating component trees from defsystem surface
-syntax. [ this is not true right now, though it used to be and
-probably will be again soon ]
-
-
-* The Objects
-
-** component
-
-*** Component Attributes
-
-**** A name (required)
-
-This is a string or a symbol. If a symbol, its name is taken and
-lowercased. The name must be a suitable value for the :name initarg
-to make-pathname in whatever filesystem the system is to be found.
-
-The lower-casing-symbols behaviour is unconventional, but was selected
-after some consideration. Observations suggest that the type of
-systems we want to support either have lowercase as customary case
-(Unix, Mac, windows) or silently convert lowercase to uppercase
-(lpns), so this makes more sense than attempting to use :case :common,
-which is reported not to work on some implementations
-
-**** a version identifier (optional)
-
-This is used by the test-system-version operation (see later).
-
-**** *features* required
-
-Traditionally defsystem users have used reader conditionals to include
-or exclude specific per-implementation files. This means that any
-single implementation cannot read the entire system, which becomes a
-problem if it doesn't wish to compile it, but instead for example to
-create an archive file containing all the sources, as it will omit to
-process the system-dependent sources for other systems.
-
-Each component in an asdf system may therefore specify features using
-the same syntax as #+ does, and it will (somehow) be ignored for
-certain operations unless the feature conditional matches
-
-**** dependencies on its siblings (optional but often necessary)
-
-There is an excitingly complicated relationship between the initarg
-and the method that you use to ask about dependencies
-
-Dependencies are between (operation component) pairs. In your
-initargs, you can say
-
-:in-order-to ((compile-op (load-op "a" "b") (compile-op "c"))
- (load-op (load-op "foo")))
-
-- before performing compile-op on this component, we must perform
-load-op on "a" and "b", and compile-op on c, - before performing
-load-op, we have to load "foo"
-
-The syntax is approximately
-
-(this-op {(other-op required-components)}+)
-
-required-components := component-name
- | (required-components required-components)
-
-component-name := string
- | (:version string minimum-version-object)
-
-[ This is on a par with what ACL defsystem does. mk-defsystem is less
-general: it has an implied dependency
-
- for all x, (load x) depends on (compile x)
-
-and using a :depends-on argument to say that b depends on a _actually_
-means that
-
- (compile b) depends on (load a)
-
-This is insufficient for e.g. the McCLIM system, which requires that
-all the files are loaded before any of them can be compiled ]
-
-In asdf, the dependency information for a given component and
-operation can be queried using (component-depends-on operation
-component), which returns a list
-
-((load-op "a") (load-op "b") (compile-op "c") ...)
-
-component-depends-on can be subclassed for more specific
-component/operation types: these need to (call-next-method) and append
-the answer to their dependency, unless they have a good reason for
-completely overriding the default dependencies
-
-(If it weren't for CLISP, we'd be using a LIST method combination to
-do this transparently. But, we need to support CLISP. If you have
-the time for some CLISP hacking, I'm sure they'd welcome your fixes)
-
-**** a pathname
-
-This is optional and if absent will be inferred from name, type (the
-subclass of source-file), and the location of parent.
-
-The rules for this inference are:
-
-(for source-files)
-- the host is taken from the parent
-- pathname type is (source-file-type component system)
-- the pathname case option is :local
-- the pathname is merged against the parent
-
-(for modules)
-- the host is taken from the parent
-- the name and type are NIL
-- the directory is (:relative component-name)
-- the pathname case option is :local
-- the pathname is merged against the parent
-
-Note that the DEFSYSTEM operator (used to create a "top-level" system)
-does additional processing to set the filesystem location of the
-top component in that system. This is detailed elsewhere
-
-The answer to the frequently asked question "how do I create a system
-definition where all the source files have a .cl extension" is thus
-
-(defmethod source-file-type ((c cl-source-file) (s (eql (find-system 'my-sys))))
- "cl")
-
-**** properties (optional)
-
-Packaging systems often require information about files or systems
-additional to that specified here. Programs that create vendor
-packages out of asdf systems therefore have to create "placeholder"
-information to satisfy these systems. Sometimes the creator of an
-asdf system may know the additional information and wish to provide it
-directly.
-
-(component-property component property-name) and associated setf method
-will allow the programmatic update of this information. Property
-names are compared as if by EQL, so use symbols or keywords or something
-
-** Subclasses of component
-
-*** 'source-file'
-
-A source file is any file that the system does not know how to
-generate from other components of the system.
-
-(Note that this is not necessarily the same thing as "a file
-containing data that is typically fed to a compiler". If a file is
-generated by some pre-processor stage (e.g. a ".h" file from ".h.in"
-by autoconf) then it is not, by this definition, a source file.
-Conversely, we might have a graphic file that cannot be automatically
-regenerated, or a proprietary shared library that we received as a
-binary: these do count as source files for our purposes. All
-suggestions for better terminology gratefully received)
-
-Subclasses of source-file exist for various languages.
-
-*** 'module', a collection of sub-components
-
-This has extra slots for
-
- :components - the components contained in this module
-
- :default-component-class - for child components which don't specify
- their class explicitly
-
- :if-component-dep-fails takes one of the values :fail, :try-next, :ignore
- (default value is :fail). The other values can be used for implementing
- conditional compilation based on implementation *features*, where
- it is not necessary for all files in a module to be compiled
-
-The default operation knows how to traverse a module, so most
-operations will not need to provide methods specialised on modules.
-
-The module may be subclassed to represent components such as
-foreign-language linked libraries or archive files.
-
-*** system, subclasses module
-
-A system is a module with a few extra attributes for documentation
-purposes. In behaviour, it's usually identical.
-
-Users can create new classes for their systems: the default defsystem
-macro takes a :classs keyword argument.
-
-
-** operation
-
-An operation is instantiated whenever the user asks that an operation
-be performed, inspected, or etc. The operation object contains
-whatever state is relevant to this purpose (perhaps a list of visited
-nodes, for example) but primarily is a nice thing to specialise
-operation methods on and easier than having them all be EQL methods.
-
-There are no differences between standard operations and user-defined
-operations, except that the user is respectfully requested to keep his
-(or more importantly, our) package namespace clean
-
-*** invoking operations
-
-(operate operation system &rest keywords-args)
-
-keyword-args are passed to the make-instance call when creating the
-operation: valid keywords depend on the initargs that the operation is
-defined to accept. Note that dependencies may cause the operation to
-invoke other operations on the system or its components: the new
-operation will be created with the same initargs as the original one.
-
-oos is accepted as a synonym for operate
-
-*** standard operations
-
-**** feature-dependent-op
-
-This is not intended to be instantiated directly, but other operations
-may inherit from it. An instance of feature-dependent-op will ignore
-any components which have a `features' attribute, unless the feature
-combination it designates is satisfied by *features*
-
-See the earlier explanation about the component features attribute for
-more information
-
-**** compile-op &key proclamations
-
-If proclamations are supplied, they will be proclaimed. This is a
-good place to specify optimization settings
-
-When creating a new component, you should provide methods for this.
-
-If you invoke compile-op as a user, component dependencies often mean
-you may get some parts of the system loaded. This may not necessarily
-be the whole thing, though; for your own sanity it is recommended that
-you use load-op if you want to load a system.
-
-**** load-op &key proclamations
-
-The default methods for load-op compile files before loading them.
-For parity, your own methods on new component types should probably do
-so too
-
-**** load-source-op
-
-This method will load the source for the files in a module even if the
-source files have been compiled. Systems sometimes have knotty
-dependencies which require that sources are loaded before they can be
-compiled. This is how you do that.
-
-If you are creating a component type, you need to implement this
-operation - at least, where meaningful.
-
-**** test-system-version &key minimum
-
-Asks the system whether it satisfies a version requirement.
-
-The default method accepts a string, which is expected to contain of a
-number of integers separated by #\. characters. The method is not
-recursive. The component satisfies the version dependency if it has
-the same major number as required and each of its sub-versions is
-greater than or equal to the sub-version number required.
-
-(defun version-satisfies (x y)
- (labels ((bigger (x y)
- (cond ((not y) t)
- ((not x) nil)
- ((> (car x) (car y)) t)
- ((= (car x) (car y))
- (bigger (cdr x) (cdr y))))))
- (and (= (car x) (car y))
- (or (not (cdr y)) (bigger (cdr x) (cdr y))))))
-
-If that doesn't work for your system, you can override it. I hope
-yoyu have as much fun writing the new method as #lisp did
-reimplementing this one.
-
-*** Creating new operations
-
-subclass operation, provide methods for source-file for
-
-- output-files
-- perform
- The perform method must call output-files to find out where to
- put its files, because the user is allowed to override output-files
- for local policy
-- explain
-- operation-done-p, if you don't like the default one
-
-* Writing system definitions
-
-** System designators
-
-System designators are strings or symbols and behave just like
-any other component names (including case conversion)
-
-** find-system
-
-Given a system designator, find-system finds an actual system - either
-in memory, or in a file on the disk. It funcalls each element in the
-*system-definition-search-functions* list, expecting a pathname to be
-returned.
-
-If a suitable file exists, it is loaded if
-
-- there is no system of that name in memory,
-- the file's last-modified time exceeds the last-modified time of the
- system in memory
-
-When system definitions are loaded from .asd files, a new scratch
-package is created for them to load into, so that different systems do
-not overwrite each others operations. The user may also wish to (and
-is recommended to) include defpackage and in-package forms in his
-system definition files, however, so that they can be loaded manually
-if need be. It is not recommended to use the CL-USER package for this
-purpose, as definitions made in this package will affect the parsing
-of asdf systems.
-
-For convenience in the normal case, and for backward compatibility
-with the spirit of mk-defsystem, the default contents of
-*system-definition-search-functions* is a function called
-sysdef-central-registry-search. This looks in each of the directories
-given by evaluating members of *central-registry*, for a file whose
-name is the name of the system and whose type is "asd". The first
-such file is returned, whether or not it turns out to actually define
-the appropriate system
-
-
-
-** Syntax
-
-Systems can always be constructed programmatically by instantiating
-components using make-instance. For most purposes, however, it is
-likely that people will want a static defystem form.
-
-asdf is based around the principle that components should not have to
-know defsystem syntax. That is, the initargs that a component accepts
-are not necessarily related to the defsystem form which creates it.
-
-A defsystem parser must implement a `defsystem' macro, which can
-be named for compatibility with whatever other system definition
-utility is being emulated. It should instantiate components in
-accordance with whatever language it accepts, and register the topmost
-component using REGISTER-SYSTEM
-
-*** Native syntax
-
-The native syntax is inspired by mk-defsystem, to the extent that it
-should be possible to take most straightforward mk- system definitions
-and run them with only light editing. For my convenience, this turns
-out to be basically the same as the initargs to the various
-components, with a few extensions for convenience
-
-system-definition := ( defsystem system-designator {option}* )
-
-option := :components component-list
- | :pathname pathname
- | :default-component-class
- | :perform method-form
- | :explain method-form
- | :output-files method-form
- | :operation-done-p method-form
- | :depends-on ( {simple-component-name}* )
- | :serial [ t | nil ]
- | :in-order-to ( {dependency}+ )
-
-component-list := ( {component-def}* )
-
-component-def := simple-component-name
- | ( component-type name {option}* )
-
-component-type := :module | :file | :system | other-component-type
-
-dependency := (dependent-op {requirement}+)
-requirement := (required-op {required-component}+)
- | (feature feature-name)
-dependent-op := operation-name
-required-op := operation-name | feature
-
-For example
-
-(defsystem "foo"
- :version "1.0"
- :components ((:module "foo" :components ((:file "bar") (:file"baz")
- (:file "quux"))
- :perform (compile-op :after (op c)
- (do-something c))
- :explain (compile-op :after (op c)
- (explain-something c)))
- (:file "blah")))
-
-
-The method-form tokens need explaining: esentially,
-
- :perform (compile-op :after (op c)
- (do-something c))
- :explain (compile-op :after (op c)
- (explain-something c)))
-has the effect of
-
-(defmethod perform :after ((op compile-op) (c (eql ...)))
- (do-something c))
-(defmethod explain :after ((op compile-op) (c (eql ...)))
- (explain-something c))
-
-where ... is the component in question; note that although this also
-supports :before methods, they may not do what you want them to - a
-:before method on perform ((op compile-op) (c (eql ...))) will run
-after all the dependencies and sub-components have been processed, but
-before the component in question has been compiled.
-
-**** Serial dependencies
-
-If the `:serial t' option is specified for a module, asdf will add
-dependencies for each each child component, on all the children
-textually preceding it. This is done as if by :depends-on
-
-:components ((:file "a") (:file "b") (:file "c"))
-:serial t
-
-is equivalent to
-:components ((:file "a")
- (:file "b" :depends-on ("a"))
- (:file "c" :depends-on ("a" "b")))
-
-
-
-have all the
-
-**** Source location
-
-The :pathname option is optional in all cases for native-syntax
-systems, and in the usual case the user is recommended not to supply
-it. If it is not supplied for the top-level form, defsystem will set
-it from
-
-- The host/device/directory parts of *load-truename*, if it is bound
-- *default-pathname-defaults*, otherwise
-
-If a system is being redefined, the top-level pathname will be
-
-- changed, if explicitly supplied or obtained from *load-truename*
-- changed if it had previously been set from *default-pathname-defaults*
-- left as before, if it had previously been set from *load-truename*
- and *load-truename* is not now bound
-
-These rules are designed so that (i) find-system will load a system
-from disk and have its pathname default to the right place, (ii)
-this pathname information will not be overwritten with
-*default-pathname-defaults* (which could be somewhere else altogether)
-if the user loads up the .asd file into his editor and
-interactively re-evaluates that form
-
- * Error handling
-
-It is an error to define a system incorrectly: an implementation may
-detect this and signal a generalised instance of
-SYSTEM-DEFINITION-ERROR.
-
-Operations may go wrong (for example when source files contain
-errors). These are signalled using generalised instances of
-OPERATION-ERROR, with condition readers ERROR-COMPONENT and
-ERROR-OPERATION for the component and operation which erred.
-
-* Compilation error and warning handling
-
-ASDF checks for warnings and errors when a file is compiled. The
-variables *compile-file-warnings-behaviour* and
-*compile-file-errors-behavior* controls the handling of any such
-events. The valid values for these variables are :error, :warn, and
-:ignore.
-
-----------------------------------------------------------
- TODO List
-----------------------------------------------------------
-
-* Outstanding spec questions, things to add
-
-** packaging systems
-
-*** manual page component?
-
-** style guide for .asd files
-
-You should either use keywords or be careful with the package that you
-evaluate defsystem forms in. Otherwise (defsystem partition ...)
-being read in the cl-user package will intern a cl-user:partition
-symbol, which will then collide with the partition:partition symbol.
-
-Actually there's a hairier packages problem to think about too.
-in-order-to is not a keyword: if you read defsystem forms in a package
-that doesn't use ASDF, odd things might happen
-
-** extending defsystem with new options
-
-You might not want to write a whole parser, but just to add options to
-the existing syntax. Reinstate parse-option or something akin
-
-** document all the error classes
-
-** what to do with compile-file failure
-
-Should check the primary return value from compile-file and see if
-that gets us any closer to a sensible error handling strategy
-
-** foreign files
-
-lift unix-dso stuff from db-sockets
-
-** Diagnostics
-
-A "dry run" of an operation can be made with the following form:
-
-(traverse (make-instance '<operation-name>)
- (find-system <system-name>)
- 'explain)
-
-This uses unexported symbols. What would be a nice interface for this
-functionality?
-
-** patches
-
-Sometimes one wants to
-
-
-* missing bits in implementation
-
-** all of the above
-** reuse the same scratch package whenever a system is reloaded from disk
-** rules for system pathname defaulting are not yet implemented properly
-** proclamations probably aren't
-** when a system is reloaded with fewer components than it previously
- had, odd things happen
-
-we should do something inventive when processing a defsystem form,
-like take the list of kids and setf the slot to nil, then transfer
-children from old to new list as they're found
-
-** traverse may become a normal function
-
-If you're defining methods on traverse, speak up.
-
-
-** a lot of load-op methods can be rewritten to use input-files
-
-so should be.
-
-
-** (stuff that might happen later)
-
-*** david lichteblau's patch for symlink resolution?
-
-*** Propagation of the :force option. ``I notice that
-
- (oos 'compile-op :araneida :force t)
-
-also forces compilation of every other system the :araneida system
-depends on. This is rarely useful to me; usually, when I want to force
-recompilation of something more than a single source file, I want to
-recompile only one system. So it would be more useful to have
-make-sub-operation refuse to propagate ":force t" to other systems, and
-propagate only something like ":force :recursively". ''
-
-Ideally what we actually want is some kind of criterion that says
-to which systems (and which operations) a :force switch will propagate.
-
-The problem is perhaps that 'force' is a pretty meaningless concept.
-How obvious is it that "load :force t" should force _compilation_?
-But we don't really have the right dependency setup for the user to
-compile :force t and expect it to work (files will not be loaded after
-compilation, so the compile environment for subsequent files will be
-emptier than it needs to be)
-
-What does the user actually want to do when he forces? Usually, for
-me, update for use with a new version of the lisp compiler. Perhaps
-for recovery when he suspects that something has gone wrong. Or else
-when he's changed compilation options or configuration in some way
-that's not reflected in the dependency graph.
-
-Other possible interface: have a 'revert' function akin to 'make clean'
-
- (asdf:revert 'asdf:compile-op 'araneida)
-
-would delete any files produced by 'compile-op 'araneida. Of course, it
-wouldn't be able to do much about stuff in the image itself.
-
-How would this work?
-
-traverse
-
-There's a difference between a module's dependencies (peers) and its
-components (children). Perhaps there's a similar difference in
-operations? For example, (load "use") depends-on (load "macros") is a
-peer, whereas (load "use") depends-on (compile "use") is more of a
-`subservient' relationship.
View
21 external/cffi.darcs/COPYRIGHT
@@ -1,21 +0,0 @@
-Copyright (C) 2005-2007, James Bielman <jamesjb@jamesjb.com>
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use, copy,
-modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
View
28 external/cffi.darcs/HEADER
@@ -1,28 +0,0 @@
-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*-
-;;;
-;;; filename --- description
-;;;
-;;; Copyright (C) 2007, James Bielman <jamesjb@jamesjb.com>
-;;;
-;;; Permission is hereby granted, free of charge, to any person
-;;; obtaining a copy of this software and associated documentation
-;;; files (the "Software"), to deal in the Software without
-;;; restriction, including without limitation the rights to use, copy,
-;;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;;; of the Software, and to permit persons to whom the Software is
-;;; furnished to do so, subject to the following conditions:
-;;;
-;;; The above copyright notice and this permission notice shall be
-;;; included in all copies or substantial portions of the Software.
-;;;
-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-;;; DEALINGS IN THE SOFTWARE.
-;;;
-
-
View
68 external/cffi.darcs/Makefile
@@ -1,68 +0,0 @@
-# -*- Mode: Makefile; tab-width: 3; indent-tabs-mode: t -*-
-#
-# Makefile --- Make targets for various tasks.
-#
-# Copyright (C) 2005-2006, James Bielman <jamesjb@jamesjb.com>
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation
-# files (the "Software"), to deal in the Software without
-# restriction, including without limitation the rights to use, copy,
-# modify, merge, publish, distribute, sublicense, and/or sell copies
-# of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-
-# This way you can easily run the tests for different versions
-# of each lisp with, e.g. ALLEGRO=/path/to/some/lisp make test-allegro
-CMUCL ?= lisp
-OPENMCL ?= openmcl
-SBCL ?= sbcl
-CLISP ?= clisp
-ALLEGRO ?= acl
-SCL ?= scl
-
-shlibs:
- @$(MAKE) -wC tests shlibs
-
-clean:
- @$(MAKE) -wC tests clean
- find . -name ".fasls" | xargs rm -rf
- find . \( -name "*.dfsl" -o -name "*.fasl" -o -name "*.fas" -o -name "*.lib" -o -name "*.x86f" -o -name "*.amd64f" -o -name "*.sparcf" -o -name "*.sparc64f" -o -name "*.hpf" -o -name "*.hp64f" -o -name "*.ppcf" -o -name "*.nfasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.lx64fsl" \) -exec rm {} \;
-
-test-openmcl:
- @-$(OPENMCL) --load tests/run-tests.lisp
-
-test-sbcl:
- @-$(SBCL) --noinform --load tests/run-tests.lisp
-
-test-cmucl:
- @-$(CMUCL) -load tests/run-tests.lisp
-
-test-scl:
- @-$(SCL) -load tests/run-tests.lisp
-
-test-clisp:
- @-$(CLISP) -q -x '(load "tests/run-tests.lisp")'
-
-test-clisp-modern:
- @-$(CLISP) -modern -q -x '(load "tests/run-tests.lisp")'
-
-test-allegro:
- @-$(ALLEGRO) -L tests/run-tests.lisp
-
-test: test-openmcl test-sbcl test-cmucl test-clisp
-
-# vim: ft=make ts=3 noet
View
17 external/cffi.darcs/README
@@ -1,17 +0,0 @@
-
-CFFI, the Common Foreign Function Interface, purports to be a portable
-foreign function interface, similar in spirit to UFFI.
-
-Unlike UFFI, CFFI requires only a small set of low-level functionality
-from the Lisp implementation, such as calling a foreign function by
-name, allocating foreign memory, and dereferencing pointers.
-
-More complex tasks like accessing foreign structures can be done in
-portable "user space" code, making use of the low-level memory access
-operations defined by the implementation-specific bits.
-
-CFFI also aims to be more efficient than UFFI when possible. In
-particular, UFFI's use of aliens in CMUCL and SBCL can be tricky to
-get right. CFFI avoids this by using system area pointers directly
-instead of alien objects. All foreign function definitions and uses
-should compile without alien-value compiler notes in CMUCL/SBCL.
View
99 external/cffi.darcs/TODO
@@ -1,99 +0,0 @@
--*- Text -*-
-
-This is a collection of TODO items and ideas in no particular order.
-
-### Testing
-
--> Test uffi-compat with more UFFI libraries.
--> Write more FOREIGN-GLOBALS.SET.* tests.
--> Finish tests/random-tester.lisp
--> Write benchmarks comparing CFFI vs. native FFIs and also demonstrating
- performance of each platform.
--> Write more STRUCT.ALIGNMENT.* tests (namely involving the :LONG-LONG
- and :UNSIGNED-LONG-LONG types) and test them in more ABIs.
--> Run tests with the different kinds of shared libraries available on
- MacOS X.
-
-### Ports
-
--> Finish GCL port, port to MCL.
--> Update Corman port. [2007-02-22 LO]
-
-### Features
-
--> Implement a declarative interface for FOREIGN-FUNCALL-PTR, similar to
- DEFCUN/FOREIGN-FUNCALL.
--> Implement the proposed interfaces (see doc/).
--> Extend FOREIGN-SLOT-VALUE and make it accept multiple "indices" for
- directly accessing structs inside structs, arrays inside structs, etc...
--> Implement EXPLAIN-FOREIGN-SLOT-VALUE.
--> Implement :in/:out/:in-out for DEFCFUN (and FOREIGN-FUNCALL?).
--> Add support for multiple memory allocation schemes (like CLISP), namely
- support for allocating with malloc() (so that it can be freed on the C
- side)>
--> Extend DEFCVAR's symbol macro in order to handle memory (de)allocation
- automatically (see CLISP).
--> Implement byte swapping routines (see /usr/include/linux/byteorder)
--> [Lost Idea] Implement UB8-REF?
--> [Lost Idea] Something about MEM-READ-C-STRING returning multiple value?
--> Warn about :void in places where it doesn't make sense.
-
-### Underspecified Semantics
-
--> (setf (mem-ref ptr <aggregate-type> offset) <value>)
--> Review the interface for coherence across Lisps with regard to
- behaviour in "exceptional" situations. Eg: threads, dumping cores,
- accessing foreign symbols that don't exist, etc...
--> On Lispworks a Lisp float is a double and therefore won't necessarily
- fit in a C float. Figure out a way to handle this.
--> Allegro: callbacks' return values.
--> Lack of uniformity with regard to pointers. Allegro: 0 -> NULL.
- CLISP/Lispworks: NIL -> NULL.
--> Some lisps will accept a lisp float being passed to :double
- and a lisp double to :float. We should either coerce on lisps that
- don't accept this or check-type on lisps that do. Probably the former
- is better since on lispworks/x86 double == float.
-
-### Possible Optimizations
-
--> More compiler macros on some of the CFFI-SYS implementations.
--> Optimize UFFI-COMPAT when the vector stuff is implemented.
--> Being able to declare that some C int will always fit in a Lisp
- fixnum. Allegro has a :fixnum ftype and CMUCL/SBCL can use
- (unsigned-byte 29) others could perhaps behave like :int?
--> An option for defcfun to expand into a compiler macro which would
- allow the macroexpansion-time translators to look at the forms
- passed to the functions.
-
-### Known Issues
-
--> CLISP FASL portability is broken. Fix this by placing LOAD-TIME-VALUE
- forms in the right places and moving other calculations to load-time.
- (eg: calculating struct size/alignment.) Ideally we'd only move them
- to load-time when we actually care about fasl portability.
- (defmacro maybe-load-time-value (form)
- (if <we care about fasl portability>
- `(load-time-value ,form)
- form))
--> cffi-tests.asd's :c-test-lib component is causing the whole testsuite
- to be recompiled everytime. Figure that out.
--> The (if (constantp foo) (do-something-with (eval foo)) ...) pattern
- used in many places throughout the code is apparently not 100% safe.
--> On ECL platforms without DFFI we need to build a non-linked version
- of libtest.
--> foreign-enum-keyword/value should have their own error condition?
- <http://article.gmane.org/gm