Чтобы рассчитать значение свободной памяти с помощью SAR, используйте следующую формулу:
kbmemfree + kbbuffers + kbcached = actual free memory on the system
Используя ваш пример:
616552 + 245368 + 2174816 = 3036736KB
Это около 2,89 ГБ свободной памяти.
Я полагаю, что затем вы можете вычесть из общего объема памяти, доступной для использования.
Ant - это программа, которая интерпретирует команды, написанные на некотором языке XML. Вы можете, как упомянул Джастинхдж в своем ответе, использовать некоторый синтаксический анализатор XML (например, упомянутый XMLisp) и преобразовать описание XML в некоторые данные Lisp, а затем написать дополнительный код на Lisp. Вам также необходимо переопределить некоторые из интерпретации Ant.
Большая часть примитивного материала в Ant не нужна в Lisp. Некоторые файловые операции встроены в Lisp (delete-file, rename-file, probe-file, ...). Некоторые отсутствуют и должны быть реализованы - в качестве альтернативы вы можете использовать одну из существующих библиотек. Также обратите внимание, что вы можете ЗАГРУЗИТЬ файлы Lisp в Lisp и выполнять код - есть также REPL - так что он уже поставляется с интерактивным интерфейсом (в отличие от Java).
Системы сборки более высокого уровня в Common Lisp обычно реализуют абстракцию под названием ' SYSTEM '. Есть несколько из них. ASDF является популярным выбором, но есть и другие. Система имеет подсистемы и файлы. Система также имеет несколько вариантов. У его компонентов также есть опции. Система имеет либо структурное описание компонентов, либо описание зависимостей, либо описание видов «действий» и их зависимостей. Обычно эти вещи реализуются объектно-ориентированным способом, и вы можете реализовать «действия» в виде лисповских (универсальных) функций. Lisp также предоставляет такие функции, как COMPILE-FILE, которые будут использовать компилятор Lisp для компиляции файла. Если ваш код имеет, скажем, C-файлы - вам нужно вызывать C-компилятор - обычно через некоторую специфическую для реализации функцию, которая позволяет вызывать внешние программы (здесь C-компилятор).
Как упоминалось в dmitry-vk, ASDF популярный выбор. LispWorks предоставляет Common Defsystem . Allegro CL имеет свою собственную DEFSYSTEM. Его руководство DEFSYSTEM также описывает, как его расширить.
Все решения Lisp используют какой-то синтаксис Lisp (не синтаксис XML), обычно реализуемый макросом для описания система. Когда это считывается в Lisp, оно превращается в представление данных - часто с экземплярами CLOS для системы, модулей и т. Д. Затем действия также являются функциями Lisp. Затем некоторые функции более высокого порядка проходят по графу / дереву компонента и выполняют необходимые действия.
Предстоящая книга Стюарта Хэллоуэя Программирование Clojure проходит конструкцию Lancet по всей книге в качестве примера приложения. Lancet - это система сборки Clojure, которая (опционально) интегрируется напрямую с Ant. Исходный код и примеры доступны .
Если все, что вы хотите сделать, это сгенерировать файлы Ant XML с использованием кода на Лиспе, вы можете использовать что-то вроде clj-html для Clojure или CL-WHO для Common Lisp. Генерация XML из Lisp s-exps - это весело и легко.
ASDF Common Lisp (еще одно средство определения системы) аналогично Make / Ant (но не полный аналог - это нацелены на создание программ lisp, а не универсальных систем, таких как make или ant). Он расширяется с помощью кода на Лиспе (системы подклассов, компоненты, операции добавления в системы). Например, существует расширение asdf-ecs, которое позволяет включать (и компилировать) исходные файлы C в систему.
Возможно, вы могли бы определить вещи в lisp и преобразовать их в XML в тот момент, когда вы передадите их в NAnt.
Что-то вроде XMLisp облегчает переход от одного представления к другому и обратно.
Правка: На самом деле, xml-emitter будет иметь больше смысла.