Site definitions¶
The following outlines the details for defining supported site definitions. If attempting to use an extension-provided site type, please refer to the documentation provided by the extension.
备注
All site values can be defined with a unique prefix value (e.g. git+
for
Git sources); however, this is optional if a package wishes to use the
LIBFOO_VCS_TYPE
option.
Bazaar site¶
To define a Bazaar-based location, the site value must be
prefixed with a bzr+
value. A site can be defined as follows:
LIBFOO_SITE = 'bzr+ssh://example.com/project/trunk'
# (or)
LIBFOO_SITE = 'bzr+lp:<project>'
The value after the prefix is a path which will be provided to a bzr export
call [1]. Content from a Bazaar repository will be fetched and
archived into a file during fetch stage. Once a cached archive is made, the
fetch stage will be skipped unless the archive is manually removed.
CVS site¶
To define a CVS-based location, the site value must be prefixed
with a cvs+
or other common CVSROOT value. A site can be defined as
follows:
LIBFOO_SITE = ':pserver:anonymous@cvs.example.com:/var/lib/cvsroot mymodule'
# (or)
LIBFOO_SITE = 'cvs+:ext:cvs@cvs.example.org:/usr/local/cvsroot mymodule'
The value after the prefix is a space-separated pair, where the first part represents the CVSROOT [2] to use and the second part specifies the CVS module [3] to use. Content from a CVS repository will be fetched and archived into a file during fetch stage. Once a cached archive is made, the fetch stage will be skipped unless the archive is manually removed.
Git site¶
To define a Git-based location, the site value must be prefixed with
a git+
value or postfixed with the .git
value. A site can be defined
as follows:
LIBFOO_SITE = 'https://example.com/libfoo.git'
# (or)
LIBFOO_SITE = 'git+git@example.com:base/libfoo.git'
The site value (less prefix, if used) is used as a Git remote [4]
for a locally managed cache source. Git sources will be cached inside the
cache
directory on first-run. Future runs to fetch a project's source
will use the cached Git file system. If a desired revision exists, content
will be acquired from the cache location. If a desired revision does not
exist, the origin remote will be fetched for the new revision (if it exists).
Local site¶
To define a package to use local site/sources, the site value can be set
to local
. A local site can be defined as follows:
LIBFOO_SITE = 'local'
This is equivalent to configuring LIBFOO_VCS_TYPE
to a local
VCS type as well. Note that a local package is intended for
development/testing/training purposes. See
LIBFOO_VCS_TYPE
for more information.
Mercurial site¶
To define a Mercurial-based location, the site value must be
prefixed with a hg+
value. A site can be defined as follows:
LIBFOO_SITE = 'hg+https://example.com/project'
The value after the prefix is used as the SOURCE
in an hg clone
call
[5]. Mercurial sources will be cached inside the cache
directory on
first-run. Future runs to fetch a project's source will use the cached Mercurial
repository. If a desired revision exists, content will be acquired from the
cache location. If a desired revision does not exist, the origin remote will be
pulled for the new revision (if it exists).
Perforce site¶
To define a Perforce-based location, the site value must be prefixed with
an perforce+
value. A site can be defined as follows:
LIBFOO_SITE = 'perforce+srcs.example.com:1666 //base/libfoo/main'
# (or)
LIBFOO_SITE = 'perforce+guest@tcp4:perforce.example.org:1666 //guest/libfoo'
The value after the prefix is a space-separated pair, where the first part
represents the Perforce service (P4PORT
[6]) to use and the second
part specifies the Perforce depot path. Perforce data is fetched using
git p4 <option>
[7] command. This requires a host to have both
Git and Perforce's Helix Command-Line Client (P4)
installed. Content from a Perforce depot will be fetched and archived into
a file during fetch stage. Once a cached archive is made, the fetch stage
ill be skipped unless the archive is manually removed.
rsync site¶
To define an rsync-based location, the site value must be prefixed with an
rsync+
value. A site can be defined as follows:
LIBFOO_SITE = 'rsync+<source>'
The value of <source>
will be provided to a rsync
call's [8]
SRC
value. Fetched content will be stored in an archive inside the dl
directory. Once fetched, the fetch stage will be skipped unless the archive
is manually removed. By default, the --recursive
argument is applied.
Adding or replacing options can be done by using the
LIBFOO_FETCH_OPTS
option.
SCP site¶
To define an SCP-based location, the site value must be prefixed with a scp+
value. A site can be defined as follows:
LIBFOO_SITE = 'scp+[user@]host:]file'
The value after the prefix is a path which will be provided to a scp
call's
[9] source host value. The SCP site only supports copying a file from
a remote host. The fetched file will be stored inside the dl
directory. Once
fetched, the fetch stage will be skipped unless the file is manually removed.
SVN site¶
To define a Subversion-based location, the site value must be
prefixed with a svn+
value. A site can be defined as follows:
LIBFOO_SITE = 'svn+https://svn.example.com/repos/libfoo/c/branches/libfoo-1.2'
The value after the prefix is a path which will be provided to a
svn checkout
call [10]. Content from a Subversion repository will
be fetched and archived into a file during fetch stage. Once a cached archive
is made, the fetch stage will be skipped unless the archive is manually removed.
URL site (default)¶
All packages that do not define a helper prefix/postfix value (as seen
in other site definitions) or do not explicitly set a
LIBFOO_VCS_TYPE
value (other than url
), will be
considered a URL site. A URL site can be defined as follows:
LIBFOO_SITE = 'https://example.com/my-file'
The site value provided will be directly used in a URL request. URL values
supported are defined by the Python's urlopen
implementation [11],
which includes (but not limited to) http(s)://
, ftp://
, file://
and
more.
See also urlopen_context
.