2015-12-18 7 views
0

У меня есть проект Common Lisp, который имеет зависимость от библиотеки C/C++, размещенной на GitHub. Мне нужно клонировать, настраивать и делать эту зависимость, чтобы мой проект работал, и я предпочел бы делать это из Common Lisp, а не предоставлять сценарий оболочки.Получение общих зависимостей проекта Lisp от GitHub

Каков наилучший способ автоматизации этого проекта Common Lisp? Я попытался воспроизвести мои команды оболочки с помощью INFERIOR-SHELL, но он сбой на git clone.

ответ

0

Существует не что-то вроде этого хорошо работает на общих lisp. Из этой статьи, фактическое состояние общей LISP экосистемы, в системе разделе сборки:

Будущая работа:

Больше Asdf компонентов, например, для создания файлов C/C++. A Независимый от платформы менеджер пакетов для загрузки внешних библиотек C , необходимых библиотеке Lisp, был бы удивительно полезен.

you shoul смотреть из вариантов внутри проектов.

1

Некоторые возможности:

  • Если ваш проект, сам по себе, репо Git (GitHub или иным образом), сделать библиотеку C подмодуль.

    git submodule add --name clib [email protected]:someone/clib ./src/clib

  • В качестве альтернативы, возможно, использовать drakma или ваш клиент HTTP благоприятствования (даже, может быть, выкладывая на curl или wget), чтобы вытащить тарболл источников вниз от GitHub вместо клонирования. (Предполагая, что вас интересует только создание, а не редактирование пакета.)

  • Запустите весь процесс выписки и сборки с Makefile. inferior-shell может быть выполнимым; Обычно я использую uiop:run-program, поскольку ASDF предоставляет его, и просто звоните в make.

`` `

all: src/clib/lib/libclib.so 

    src/clib/lib/libclib.so: src/clib/Makefile 
      $(MAKE) -C src/clib all 

    src/clib/Makefile: src/clib/configure 
      cd src/clib; ./configure 

    src/clib/configure: src/clib/configure.in 
      cd src/clib; autoconf 

    src/clib/configure.in: 
      git clone https://github.com/someone/clib ./src/clib  

` ``

Вы не упомянули, что ошибки вы получаете от git clone, но я собираюсь догадаться, что он ожидает пользовательский ввод (например, возможно, чтобы разблокировать ваш брелок SSH). Предполагая, что это общедоступный проект, вам может понадобиться использовать URI https:, а не версию SSH ([email protected]:).

+1

Я переключился на использование HTTP-клиента, чтобы загрузить zip-источник и затем разархивировать его, что сработало. После распаковки мне нужно вызвать скрипт конфигурации python, а затем вызвать make. – user1569339

Смежные вопросы