Previous: ссылка на пакет, Up: Описание пакетов [Contents][Index]
origin
СправкаЭтот раздел документирует origins. Объявление origin
определяет данные, которые должны быть “произведены”—обычно
загружены—и чей хэш содержимого известен заранее. Origins в основном
используются для представления исходного кода пакетов (see Описание пакетов). По этой причине форма origin
позволяет вам объявлять
исправления для применения к исходному коду, а также фрагменты кода для его
изменения.
Это тип данных, представляющий источник исходного кода.
uri
Объект, содержащий URI источника. Тип объекта зависит от method
(см. ниже). Например, при использовании метода url-fetch для
(guix download)
допустимые значения uri
: URL, представленный в
виде строки, или их список.
метод
Монадическая процедура, обрабатывающая данный URI. Процедура должна
принимать по крайней мере три аргумента: значение поля uri
, а также
алгоритм хеширования и значение хеш-функции, указанные в поле hash
.
Она должна возвращать элемент store или derivation в store монаде
(see Устройство склада); большинство методов возвращают derivation с
фиксированным выводом (see Деривации).
Обычно используемые методы включают url-fetch
, который извлекает
данные из URL-адреса, и git-fetch
, который извлекает данные из
репозитория Git (см. ниже).
sha256
Байт-вектор, содержащий хэш SHA-256 источника. Это эквивалент
предоставлению объекта SHA256 content-hash
в поле hash
,
описанном ниже.
hash
Объект content-hash
источника—см. ниже, как использовать
content-hash
.
Вы можете получить эту информацию, используя guix download
(see Запуск guix download) или guix hash
(see Запуск guix hash).
file-name
(по умолчанию: #f
)Имя файла, под которым должен быть сохранен исходный код. Когда это
#f
, в большинстве случаев будет использоваться разумное значение по
умолчанию. В случае, если источник извлекается из URL-адреса, будет
использоваться имя файла из URL-адреса. Для проверок контроля версий
рекомендуется явно указывать имя файла, поскольку значение по умолчанию не
очень информативно.
patches
(по умолчанию: '()
)Список имен файлов, источников или объектов подобных файлами (see file-like objects), указывающих на исправления, которые будут применены к источнику.
Данный список исправлений должен быть безвариативным. В частности, он не
может зависеть от значения %current-system
или
%current-target-system
.
snippet
(по умолчанию: #f
)G-выражение (see G-Expressions) или S-выражение, которое будет выполнено в исходном каталоге. Это удобный способ изменить исходный код, иногда более удобный, чем патч.
patch-flags
(по умолчанию: '("-p1")
)Список флагов командной строки, которые следует передать команде
patch
.
patch-inputs
(по умолчанию: #f
)"Входные пакеты или derivation’ы для процесса исправления. Когда это
#f
, предоставляется обычный набор входных данных, необходимых для
исправления, например GNU Patch.
modules
(по умолчанию: '()
)Список модулей Guile, которые должны быть загружены в процессе установки
исправлений и при выполнении кода, в поле snippet
.
patch-guile
(по умолчанию: #f
)Пакет Guile, который следует использовать в процессе установки исправлений.
Когда это #f
, используется разумное значение по умолчанию.
Создать объект хэша содержимого для заданного algorithm и с
value в качестве его хеш-значения. Если algorithm опущен,
предполагается, что это sha256
.
value может быть буквальной строкой, и в этом случае она декодируется с помощью base32, или может быть байтовым вектором.
Следующие зависимости необязательны:
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj") (content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj" sha256) (content-hash (base32 "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) (content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=") sha256)
Технически content-hash
в настоящее время реализован как макрос. Он
выполняет проверки работоспособности во время раскрытия макроса, когда это
возможно, например, гарантирует, что value имеет правильный размер для
algorithm.
Как мы видели выше, то, как именно извлекаются данные, на которые ссылается
источник, определяется его полем method
. Модуль (guix
download)
предоставляет наиболее распространенный метод url-fetch
,
описанный ниже.
которая извлекает данные из url (строка или список строк, обозначающих альтернативные URL-адреса), который, как ожидается, будет иметь хэш hash типа hash-algo (символ). По умолчанию имя файла - это базовое имя URL-адреса; при желании name может указывать другое имя файла. Если executable? истинно, загруженный файл будет исполняемым.
Когда один из URL-адресов начинается с mirror://
, тогда его
хост-часть интерпретируется как имя схемы зеркала, взятой из
%mirror-file.
В качестве альтернативного варианта, если URL-адрес начинается с
file://
, вернуть соответствующее имя файла в store.
Аналогичным образом, модуль (guix git-download)
определяет метод
источника git-download
, который извлекает данные из репозитория
управления версиями Git, и тип данных git-reference
для описания
репозиторий и ревизия для загрузки.
Вернуть derivation с фиксированным выводом, которая выбирает объект
ref, <git-reference>
. Ожидается, что на выходе будет
рекурсивный хеш hash типа hash-algo (символ). Использовать
name в качестве имени файла или общее имя, если #f
.
Управление конфигурацией операционной системы.
url
URL-адрес репозитория Git для клонирования.
commit
This string denotes either the commit to fetch (a hexadecimal string), or
the tag to fetch. You can also use a “short” commit ID or a git
describe
style identifier such as v1.0.1-10-g58d7909c97
.
features
(default: '()
)Это логическое значение (boolean) указывает, нужно ли рекурсивно получать подмодули Git.
Пример ниже обозначает тег v2.10
репозитория GNU Hello:
(git-reference (url "https://git.savannah.gnu.org/git/hello.git") (commit "v2.10"))
Это эквивалентно приведенной ниже ссылке, которая явно называет коммит:
(git-reference (url "https://git.savannah.gnu.org/git/hello.git") (commit "dc7dc56a00e48fe6f231a58f6537139fe2908fb9"))
Для репозиториев Mercurial, модуль (guix hg-download)
определяет
метод hg-fetch
и тип данных hg-reference
для поддержки системы
контроля версий Mercurial.
Вернуть derivation с фиксированным выводом, которая выбирает объект
ref, <git-reference>
. Ожидается, что на выходе будет
рекурсивный хеш hash типа hash-algo (символ). Использовать
name в качестве имени файла или общее имя, если #f
.
Previous: ссылка на пакет, Up: Описание пакетов [Contents][Index]