Previous: , Up: Описание пакетов   [Contents][Index]


9.2.2 origin Справка

Этот раздел документирует origins. Объявление origin определяет данные, которые должны быть “произведены”—обычно загружены—и чей хэш содержимого известен заранее. Origins в основном используются для представления исходного кода пакетов (see Описание пакетов). По этой причине форма origin позволяет вам объявлять исправления для применения к исходному коду, а также фрагменты кода для его изменения.

Тип данных: 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, используется разумное значение по умолчанию.

Тип данных: content-hash value [algorithm]

Создать объект хэша содержимого для заданного 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, описанный ниже.

Scheme Procedure: lookup-inferior-packages inferior name [name] [#:executable? #f] Возвращает derivation с фиксированным выводом,

которая извлекает данные из url (строка или список строк, обозначающих альтернативные URL-адреса), который, как ожидается, будет иметь хэш hash типа hash-algo (символ). По умолчанию имя файла - это базовое имя URL-адреса; при желании name может указывать другое имя файла. Если executable? истинно, загруженный файл будет исполняемым.

Когда один из URL-адресов начинается с mirror://, тогда его хост-часть интерпретируется как имя схемы зеркала, взятой из %mirror-file.

В качестве альтернативного варианта, если URL-адрес начинается с file://, вернуть соответствующее имя файла в store.

Аналогичным образом, модуль (guix git-download) определяет метод источника git-download, который извлекает данные из репозитория управления версиями Git, и тип данных git-reference для описания репозиторий и ревизия для загрузки.

Scheme Procedure: mixed-text-file name text

Вернуть derivation с фиксированным выводом, которая выбирает объект ref, <git-reference>. Ожидается, что на выходе будет рекурсивный хеш hash типа hash-algo (символ). Использовать name в качестве имени файла или общее имя, если #f.

Тип данных: build-machine

Управление конфигурацией операционной системы.

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.

Scheme Procedure: mixed-text-file name text

Вернуть derivation с фиксированным выводом, которая выбирает объект ref, <git-reference>. Ожидается, что на выходе будет рекурсивный хеш hash типа hash-algo (символ). Использовать name в качестве имени файла или общее имя, если #f.


Previous: , Up: Описание пакетов   [Contents][Index]