Skip to main content

Buildout recipe to create symlinks

Project description


This recipe makes it easy to create symbolic links on Unix variants. Links can be
specified one by one, or in bulk. Various shortcuts are provided to avoid unnecessary
repetition of source & target paths, etc.

Warning: If you're going to be linking to directories, **make sure** to see the wiki
`page <>`_
on how to work around zc.buildout bug #144228. Otherwise your buildout will fail.

Common options

- *symlink_base* option may contain a common (source) base directory for symlinking,
when links are created for many items from the same directory.
- *symlink_target* may contain common target directory, when links are created in the
same directory.
- *autocreate* causes a target directory to be created if it does not exist

Specifying individual links

- *symlink* option contains one or more values in format source=target

Example 1::

symlink = ~/work/MyProj = ${buildout:directory}/products
autocreate = true

If a common *symlink_target* is specified, *symlink* can be in format: source= (omitting target directory)

Specifying links in bulk

Links can be created for all items in a directory given via *symlink_base*, all buildout
eggs, and all development eggs. When links are created in bulk, they are always created
in directory given by *symlink_target*.

There's also a special option to constrain bulk link creation:

- *ignore* option contains one or more wildcard expressions for choosing items that will
be ignored, ie. no links will be created for them

For files in directory

If *symlink_base* & *symlink_target* are specified, but no *symlink* option is given,
links are created for all items found in the (source) base directory. Furthermore, even
if *symlink* option is used, links can still also be created for all items in
*symlink_base* by giving the *bulk* option that forces bulk link creation even if
individual *symlink* specification is used.

Example 2::

symlink_base = ~/work/
symlink_target = ${buildout:directory}/products
ignore = *.tmp

For eggs in buildout

There are two options to generate symlinks for eggs downloaded to a buildout.

- *eggs*
- *develop*

The *ignore option* can be used here as well.

Example 3::

eggs = true
develop = true
ignore = *.tar.gz
symlink_target = ${buildout:directory}/products


Radim Novotny, original author;
Petri Savolainen, contributor

Change history

0.2.3 (2011-12-07)

- Sphinx docs
- Minor fixes

0.2.2 (2011-12-02)

- Raise error on nonexistent base source directory
- Provide 'autocreate' option to create target directory if it does not exist

0.2.1 (2011-12-02)

- New feature for ignoring some items

0.2 (2011-12-02)

- New feature for bulk creation of links
- Repackaged based on ZopeSkel recipe
- Minor doc improvements
- Source now on github


- Initial release


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
cns.recipe.symlink-0.2.3-py2.6.egg (10.1 kB) Copy SHA256 hash SHA256 Egg 2.6
cns.recipe.symlink-0.2.3-py2.7.egg (10.1 kB) Copy SHA256 hash SHA256 Egg 2.7
cns.recipe.symlink-0.2.3.tar.gz (12.5 kB) Copy SHA256 hash SHA256 Source None (20.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page