Previous: ссылка на пакет, Up: Описание пакетов [Contents][Index]
origin
ReferenceЭтот раздел документирует origins. Объявление origin
определяет данные, которые должны быть “произведены”—обычно
загружены—и чей хэш содержимого известен заранее. Origins в основном
используются для представления исходного кода пакетов (see Описание пакетов). По этой причине форма origin
позволяет вам объявлять
исправления для применения к исходному коду, а также фрагменты кода для его
изменения.
Это тип данных, представляющий источник исходного кода.
uri
Объект, содержащий URI источника. Тип объекта зависит от method
(см. ниже). Например, при использовании метода url-fetch для
(guix download)
допустимые значения uri
: URL, представленный в
виде строки, или их список.
метод
A monadic procedure that handles the given URI. The procedure must accept
at least three arguments: the value of the uri
field and the hash
algorithm and hash value specified by the hash
field. It must return
a store item or a derivation in the store monad (see Устройство склада);
most methods return a fixed-output 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, или может быть байтовым вектором.
The following forms are all equivalent:
(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.
Likewise, the (guix git-download)
module defines the git-fetch
origin method, which fetches data from a Git version control repository, and
the git-reference
data type to describe the repository and revision
to fetch.
Вернуть derivation с фиксированным выводом, которая выбирает объект
ref, <git-reference>
. Ожидается, что на выходе будет
рекурсивный хеш hash типа hash-algo (символ). Использовать
name в качестве имени файла или общее имя, если #f
.
This data type represents a Git reference for git-fetch
to retrieve.
url
URL-адрес репозитория Git для клонирования.
commit
Эта строка обозначает либо коммит для загрузки (шестнадцатеричная строка, либо полный SHA1 коммит, либо “short” коммит строка; последнее не рекомендуется), либо тег.
recursive?
(default: #f
)This Boolean indicates whether to recursively fetch Git sub-modules.
Пример ниже обозначает тег 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"))
For Mercurial repositories, the module (guix hg-download)
defines the
hg-fetch
origin method and hg-reference
data type for support
of the Mercurial version control system.
<hg-reference>
object. The output is expected to have recursive hash
hash of type hash-algo (a symbol). Use name as the file
name, or a generic name if #false
.
Previous: ссылка на пакет, Up: Описание пакетов [Contents][Index]