11 января 2013

Всем quicklisp, посоны.

Сегодня речь пойдёт о том, как создать свой собственный quicklisp репозиторий. За реализацию этого проекта https://github.com/orivej/quickdist мегаспасибо orivej.

План такой: разместить свой проект с зависимостями так, чтобы пользователь в две строки мог загрузить его себе. Для этого нам необходим всего лишь хостинг для статических файлов. Github это дело умеет.

Скачайте проект quickdist в папку с локальными проектами. В официальном ql репозитории quickdist нет:

cd ~/quicklisp/local-projects
git clone https://github.com/orivej/quickdist.git

Расположите свои проекты в одной директории, например, ~/projects.

Теперь создайте репозиторий, например в папку ~/projects/cl-systems. На этом шаге нужно знать по какой ссылке будет доступен репозитарий. Если вы расположитесь на гитхабе, ссылка будет выглядеть так: http://%username%.github.com/%projectname%. Вызов функции выглядит так (не забудьте заменить %reponame%, %nickname%, %projectname% на свои данные):

sbcl
(quickdist:quickdist :name "%reponame%" :base-url "http://%nickname%.github.com/%projectname%" :projects-dir "~/projects" :dists-dir "~/projects/cl-systems")

Перейдите в папку с репозиторием и поколдуйте гитом, примерно так:

touch index.html # index.html нужен чтобы гитхаб раздавал http доступ к отдельным файлам проекта
git init 
git add .
git commit -a -m "initial commit"
git checkout -b gh-pages # гитхаб раздаёт http доступ только для файлов из ветки gh-pages
git push -u origin master
git push -u origin gh-pages

Теперь вы можете добавить ваш репозитарий таким образом:

(unless (ql-dist:find-dist "%reponame%")
  (ql-dist:install-dist "http://%username%.github.com/%projectname%/%reponame%.txt" :prompt nil))

Удаление ссылки на репозиторий выполняется функцией ql:uninstall-dist.

(ql:uninstall-dist "%reponame%")

Лисповая библиотека будет загружаться из наиболее последнего установленного дистрибутива. Изменить данное поведение можно с помощью (ql-dist:preference (ql-dist:find-dist "%reponame%"))).