diff options
author | 2010-07-11 13:46:58 -0700 | |
---|---|---|
committer | 2010-07-11 13:46:58 -0700 | |
commit | 134efef47a8ecb700ae6e73d62021a62303f9bd2 (patch) | |
tree | fc0f8b659d3aec78dd94c09111081dfb06c4e211 | |
parent | Merge branch 'master' into api (diff) | |
parent | Prepare release of 1.4.1 (set release date, sync release notes) (diff) | |
download | overlord-134efef47a8ecb700ae6e73d62021a62303f9bd2.tar.gz overlord-134efef47a8ecb700ae6e73d62021a62303f9bd2.tar.bz2 overlord-134efef47a8ecb700ae6e73d62021a62303f9bd2.zip |
Merge branch 'master' of git://layman.git.sourceforge.net/gitroot/layman/layman into api
Conflicts:
layman/overlays/source.py
fix merge conflicts to suit the api changes.
Signed-off-by: Brian Dolbec <brian.dolbec@gmail.com>
-rw-r--r-- | CHANGES | 49 | ||||
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | RELEASE_NOTES | 18 | ||||
-rw-r--r-- | doc/layman.8.xml | 17 | ||||
-rw-r--r-- | layman/config.py | 15 | ||||
-rw-r--r-- | layman/overlays/bzr.py | 11 | ||||
-rw-r--r-- | layman/overlays/cvs.py | 26 | ||||
-rw-r--r-- | layman/overlays/darcs.py | 10 | ||||
-rw-r--r-- | layman/overlays/git.py | 31 | ||||
-rw-r--r-- | layman/overlays/mercurial.py | 10 | ||||
-rw-r--r-- | layman/overlays/rsync.py | 16 | ||||
-rw-r--r-- | layman/overlays/source.py | 96 | ||||
-rw-r--r-- | layman/overlays/svn.py | 24 | ||||
-rw-r--r-- | layman/overlays/tar.py | 7 | ||||
-rw-r--r-- | layman/version.py | 2 | ||||
-rwxr-xr-x | testsuite.sh | 13 | ||||
-rw-r--r-- | www/index.html | 316 |
17 files changed, 214 insertions, 456 deletions
@@ -1,14 +1,37 @@ CHANGES ------- -Version ??? +Version 1.4.1 - Released 2010-07-09 +=================================== + + - Fixed: Catch keyboard interrupts (Ctrl+C) while + running child processes properly + + - Fixed: doctest error in tar overlay code (bug #327491) + Thanks to David Abbott for reporting! + + +Version 1.4.0 - Released 2010-07-08 +=================================== + + - Handle command line calls "layman" and "layman foo" better. + Former now shows a usage summary while latter now reports + an error. Both of them kept quiet before. + + - Replace os.system() by subprocess.Popen() + + - Close stdin of child processes when run in quiet mode + to avoid running into infinite and blindly interactive sessions. + + +Version 1.3.4 - Released 2010-07-05 =================================== - Propagate move of cvs and subversion from dev-util/* to dev-vcs/* (bug #311419, bug #307849) -Version 1.3.3 - Released 2010/04/08 +Version 1.3.3 - Released 2010-04-08 =================================== - Fix syncing of SVN overlays for users of SVN <1.6.5 (bug #313303) @@ -23,7 +46,7 @@ Version 1.3.3 - Released 2010/04/08 dev-util/* to dev-vcs/* (bug #311419) -Version 1.3.2 - Released 2010/02/20 +Version 1.3.2 - Released 2010-02-20 =================================== - Fix syncing of tar overlays (bug #304547) @@ -31,7 +54,7 @@ Version 1.3.2 - Released 2010/02/20 - Hint about broken overlay catalog (bug #304781) -Version 1.3.1 - Released 2010/02/05 +Version 1.3.1 - Released 2010-02-05 =================================== - Fix handling of CVS overlays (bug #301689) @@ -44,7 +67,7 @@ Version 1.3.1 - Released 2010/02/05 - after failed addition of an overlay. -Version 1.3.0 - Released 2010/01/19 +Version 1.3.0 - Released 2010-01-19 =================================== - Move storage default from /usr/local/portage/layman @@ -58,7 +81,7 @@ Version 1.3.0 - Released 2010/01/19 - Fix faults introduced at refactoring (bug #301253) -Version 1.3.0_rc1 - Released 2010/01/15 +Version 1.3.0_rc1 - Released 2010-01-15 ======================================= - Add support for several sources per overlay (also fixes #280472) @@ -75,7 +98,7 @@ Version 1.3.0_rc1 - Released 2010/01/15 - Improve layman usage display -Version 1.2.6 - Released 2010/01/12 +Version 1.2.6 - Released 2010-01-12 =================================== - Warn on lack of write permissions (fixes #260218) @@ -96,7 +119,7 @@ Version 1.2.6 - Released 2010/01/12 - Start shipping test suite files missing from the 1.2.5 release -Version 1.2.5 - Released 2010/01/04 +Version 1.2.5 - Released 2010-01-04 =================================== - Allow overriding of VCS commands @@ -111,7 +134,7 @@ Version 1.2.5 - Released 2010/01/04 - Fix handling of non-ASCII characters (#286290) -Version 1.2.4 - Released 2009/12/05 +Version 1.2.4 - Released 2009-12-05 =================================== - Add option "-d" to calls of "cvs update" so it checks out new @@ -127,7 +150,7 @@ Version 1.2.4 - Released 2009/12/05 - Fix grammar errors in program output (#259188) -Version 1.2.3 - Released 2009/01/01 +Version 1.2.3 - Released 2009-01-01 =================================== - Support setting the terminal screen width (also fixes #253016) @@ -135,7 +158,7 @@ Version 1.2.3 - Released 2009/01/01 - layman -S fetches each overlay twice (#253241) -Version 1.2.2 - Released 2008/12/28 +Version 1.2.2 - Released 2008-12-28 =================================== - layman -L: better use of screen real estate for source URLs @@ -148,7 +171,7 @@ Version 1.2.2 - Released 2008/12/28 not a git-command." (#247964) -Version 1.2.1 - Released 2008/11/15 +Version 1.2.1 - Released 2008-11-15 =================================== - Pass --quiet flag down to the version control @@ -164,7 +187,7 @@ Version 1.2.1 - Released 2008/11/15 overlay failed (#236945) -Version 1.2.0 - Released 2008/06/02 +Version 1.2.0 - Released 2008-06-02 =================================== - Fixed --info call (#198483) @@ -1,9 +1,12 @@ +.PHONY: doc +doc: + $(MAKE) -C doc + .PHONY: www www: cp doc/layman.8.html www/index.html -.PHONY: release -release: +.PHONY: dist +dist: doc rm -rf dist MANIFEST - $(MAKE) -C doc ./setup.py sdist diff --git a/RELEASE_NOTES b/RELEASE_NOTES index a828604..88e48f6 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -1,26 +1,20 @@ -Version 1.3.3 - Released 2010/04/08 +Version 1.4.1 - Released 2010-07-09 =================================== FULL CHANGES ------------ - - Fix syncing of SVN overlays for users of SVN <1.6.5 (bug #313303) + - Fixed: Catch keyboard interrupts (Ctrl+C) while + running child processes properly - - Fix handling of empty XML entities (bug #309617) - - - Fix missing import (bug #306143) - - - Extend in-config docs on proxy handling (bug #300651) - - - Propagate move of bzr, darcs, git, mercurial from - dev-util/* to dev-vcs/* (bug #311419) + - Fixed: doctest error in tar overlay code (bug #327491) + Thanks to David Abbott for reporting! SHORT CHANGES ------------- - layman-1.3.3 is a bugfix release. Everyone is recommended - to upgrade. + layman-1.4.1 is a bugfix release. Updating is recommended. FRESHMEAT diff --git a/doc/layman.8.xml b/doc/layman.8.xml index 2dcd093..dda55e9 100644 --- a/doc/layman.8.xml +++ b/doc/layman.8.xml @@ -195,9 +195,9 @@ <refentry id="layman-manpage"> <refentryinfo> <title>layman</title> - <date>January 2010</date> + <date>July 2010</date> <productname>layman</productname> - <productnumber>1.3.3</productnumber> + <productnumber>1.4.1</productnumber> <copyright> <year>2005-2009</year> <holder>Gunnar Wrobel</holder> @@ -482,12 +482,13 @@ <term><option>--quiet</option></term> <listitem> <para>Makes <command>layman</command> completely quiet. - This option is dangerous: If the processes spawned by - layman when adding or synchronizing overlays require - any input layman will hang without telling you - why. This might happen for example if your overlay - resides in subversion and the SSL certificate of - the server needs acceptance.</para> + In quiet mode child processes will be run with stdin closed + to avoid running into infinite and blindly interactive sessions. + Thus a child process may abort once it runs into an + situation with need for human interaction. + For example this might happen if your overlay + resides in Subversion and the SSL certificate of + the server needs manual acceptance.</para> </listitem> </varlistentry> diff --git a/layman/config.py b/layman/config.py index 71cf97b..e62f535 100644 --- a/layman/config.py +++ b/layman/config.py @@ -40,10 +40,9 @@ from layman.version import VERSION #------------------------------------------------------------------------------- _USAGE = """ - -layman (-a|-d|-s|-i) OVERLAY -layman -f [-o URL] -layman (-l|-L|-S)""" + layman (-a|-d|-s|-i) (OVERLAY|ALL) + layman -f [-o URL] + layman (-l|-L|-S)""" class BareConfig(object): '''Handles the configuration only.''' @@ -315,7 +314,13 @@ class ArgsParser(object): # Parse the command line first since we need to get the config # file option. - self.options = self.parser.parse_args(args)[0] + if len(args) == 1: + print 'Usage:%s' % _USAGE + sys.exit(0) + + (self.options, remain_args) = self.parser.parse_args(args) + if len(remain_args) > 1: # remain_args starts with something like "bin/layman" ... + self.parser.error("Unhandled parameters: %s" % ', '.join(('"%s"' % e) for e in remain_args[1:])) # handle debugging self.output.cli_handle(self.options) diff --git a/layman/overlays/bzr.py b/layman/overlays/bzr.py index d5a5321..e73c2f4 100644 --- a/layman/overlays/bzr.py +++ b/layman/overlays/bzr.py @@ -50,17 +50,18 @@ class BzrOverlay(OverlaySource): self.supported() - return self.cmd(self.command() + ' get "' + self.src + '/" "' +\ - path([base, self.parent.name]) + '"') + # bzr get SOURCE TARGET + args = ['get', self.src + '/', path([base, self.parent.name])] + return self.run_command(*args) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() - return self.cmd('cd "' + path([base, self.parent.name]) + '" && ' + \ - self.command() + ' pull --overwrite "' + self.src \ - + '"') + # bzr pull --overwrite SOURCE + args = ['pull', '--overwrite', self.src] + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/cvs.py b/layman/overlays/cvs.py index ba7c0a9..f8fc277 100644 --- a/layman/overlays/cvs.py +++ b/layman/overlays/cvs.py @@ -74,27 +74,29 @@ class CvsOverlay(OverlaySource): self.supported() + # cvs [-q] co -d SOURCE SCOPE + args = [] if quiet: - quiet_option = ' -q' - else: - quiet_option = '' + args.append('-q') + args.append('co') + args.append('-d') + args.append(self.parent.name) + args.append(self.subpath) - return self.cmd('cd "' + base + '" && CVSROOT="' + self.src + '" ' + - self.command() + quiet_option + ' co -d "' + self.parent.name - + '" "' + self.subpath + '"' ) + return self.run_command(*args, cwd=base, env=dict(CVSROOT=self.src)) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() + # cvs [-q] update -d + args = [] if quiet: - quiet_option = ' -q' - else: - quiet_option = '' - - return self.cmd('cd "' + path([base, self.parent.name]) + '" && ' + - self.command() + quiet_option + ' update -d') + args.append('-q') + args.append('update') + args.append('-d') + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/darcs.py b/layman/overlays/darcs.py index 33f7c6c..7d89477 100644 --- a/layman/overlays/darcs.py +++ b/layman/overlays/darcs.py @@ -49,16 +49,18 @@ class DarcsOverlay(OverlaySource): self.supported() - return self.cmd(self.command() + ' get --partial "' + self.src + - '/" "' + path([base, self.parent.name]) + '"') + # darcs get --partial SOURCE TARGET + args = ['get', '--partial', self.src + '/', path([base, self.parent.name])] + return self.run_command(*args) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() - return self.cmd('cd "' + path([base, self.parent.name]) + '" && ' + - self.command() + ' pull --all "' + self.src + '"') + # darcs pull --all SOURCE + args = ['pull', '--all', self.src] + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/git.py b/layman/overlays/git.py index 40cf2d1..caa73f4 100644 --- a/layman/overlays/git.py +++ b/layman/overlays/git.py @@ -48,30 +48,29 @@ class GitOverlay(OverlaySource): self.supported() + def fix_git_source(source): + # http:// should get trailing slash, other protocols shouldn't + if source.split(':')[0] == 'http': + return source + '/' + return source + + # git clone [-q] SOURCE TARGET + args = ['clone'] if quiet: - quiet_option = '-q ' - else: - quiet_option = '' - - # http:// should get trailing slash, other protocols shouldn't - slash = '' - if self.src.split(':')[0] == 'http': - slash = '/' - return self.cmd(self.command() + ' clone ' + quiet_option + '"' + self.src + slash - + '" "' + path([base, self.parent.name]) + '"') + args.append('-q') + args.append(fix_git_source(self.src)) + args.append(path([base, self.parent.name])) + return self.run_command(*args) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() + args = ['pull'] if quiet: - quiet_option = ' -q' - else: - quiet_option = '' - - return self.cmd('cd "' + path([base, self.parent.name]) + '" && ' - + self.command() + ' pull' + quiet_option) + args.append('-q') + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/mercurial.py b/layman/overlays/mercurial.py index 651e452..06cf59d 100644 --- a/layman/overlays/mercurial.py +++ b/layman/overlays/mercurial.py @@ -49,16 +49,18 @@ class MercurialOverlay(OverlaySource): self.supported() - return self.cmd(self.command() + ' clone "' + self.src + '/" "' + - path([base, self.parent.name]) + '"') + # hg clone SOURCE TARGET + args = ['clone', self.src + '/', path([base, self.parent.name])] + return self.run_command(*args) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() - return self.cmd('cd "' + path([base, self.parent.name]) + '" && ' + - self.command() + ' pull -u "' + self.src + '"') + # hg pull -u SOURCE + args = ['pull', '-u', self.src] + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/rsync.py b/layman/overlays/rsync.py index 495d2ba..3a5a342 100644 --- a/layman/overlays/rsync.py +++ b/layman/overlays/rsync.py @@ -58,17 +58,15 @@ class RsyncOverlay(OverlaySource): self.supported() + # rsync OPTIONS [-q] SOURCE TARGET + args = ['-rlptDvz', '--progress', '--delete', '--delete-after', '--timeout=180', + '--exclude=distfiles/*', '--exclude=local/*', '--exclude=packages/*'] if quiet: - quiet_option = '-q ' - else: - quiet_option = '' + args.append('-q') + args.append(self.src + '/') + args.append(path([base, self.parent.name])) - _command = self.command() + ' -rlptDvz --progress --delete --delete-after ' +\ - '--timeout=180 --exclude="distfiles/*" --exclude="local/*" ' +\ - '--exclude="packages/*" ' - - return self.cmd(_command + quiet_option + '"' + self.src + '/" "' + - path([base, self.parent.name]) + '"') + return self.run_command(*args) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/source.py b/layman/overlays/source.py index 8d41bf4..d6cffef 100644 --- a/layman/overlays/source.py +++ b/layman/overlays/source.py @@ -14,6 +14,7 @@ # Sebastian Pipping <sebastian@pipping.org> import os +import copy import sys import shutil import subprocess @@ -21,21 +22,26 @@ import subprocess from layman.utils import path +def _resolve_command(command): + if os.path.isabs(command): + if not os.path.exists(command): + raise Exception('Program "%s" not found' % command) + return ('File', command) + else: + kind = 'Command' + env_path = os.environ['PATH'] + for d in env_path.split(os.pathsep): + f = os.path.join(d, command) + if os.path.exists(f): + return ('Command', f) + raise Exception('Cound not resolve command "%s" based on PATH "%s"' % (command, env_path)) + + def require_supported(binaries): for command, mtype, package in binaries: found = False - if os.path.isabs(command): - kind = 'Binary' - found = os.path.exists(command) - else: - kind = 'Command' - for d in os.environ['PATH'].split(os.pathsep): - f = os.path.join(d, command) - if os.path.exists(f): - found = True - break - - if not found: + kind, path = _resolve_command(command) + if not path: raise Exception(kind + ' ' + command + ' seems to be missing!' ' Overlay type "' + mtype + '" not support' 'ed. Did you emerge ' + package + '?') @@ -102,30 +108,54 @@ class OverlaySource(object): def command(self): return self.config['%s_command' % self.__class__.type_key] - def cmd(self, command): - '''Run a command.''' + def run_command(self, *args, **kwargs): + file_to_run = _resolve_command(self.command())[1] + args = (file_to_run, ) + args + assert('pwd' not in kwargs) # Bug detector + + cwd = kwargs.get('cwd', None) + env = None + env_updates = None + if 'env' in kwargs: + # Build actual env from surrounding plus updates + env_updates = kwargs['env'] + env = copy.copy(os.environ) + env.update(env_updates) + + command_repr = ' '.join(args) + if env_updates: + command_repr = '%s %s' % (' '.join('%s=%s' % (k, v) for (k, v) in sorted(env_updates.items())), command_repr) + if cwd: + command_repr = '( cd %s && %s )' % (cwd, command_repr) + + self.output.info('Running... # %s' % command_repr, 2) + + if self.quiet: + input_source = subprocess.PIPE + output_target = open('/dev/null', 'w') + else: + # Re-use parent file descriptors + input_source = self.config['stdin'] + output_target = self.config['stdout'] + + proc = subprocess.Popen(args, + stdin=input_source, + stdout=output_target, + stderr=self.config['stderr']t, + cwd=cwd, + env=env) - self.output.info('Running command "' + command + '"...', 2) + if self.quiet: + # Make child non-interactive + proc.stdin.close() - if hasattr(sys.stdout,'encoding'): - enc = sys.stdout.encoding or sys.getfilesystemencoding() - if enc: - command = command.encode(enc) + result = proc.wait() + + if self.quiet: + output_target.close() + + return result - if not self.quiet: - cmd = subprocess.Popen([command], shell = True, - stdout = self.config['stdout'], - stderr = self.config['stderr'], - close_fds = True) - result = cmd.wait() - return result - else: - cmd = subprocess.Popen([command], shell = True, - stdout = subprocess.PIPE, - stderr = subprocess.PIPE, - close_fds = True) - result = cmd.wait() - return result def to_xml_hook(self, repo_elem): pass diff --git a/layman/overlays/svn.py b/layman/overlays/svn.py index d9f90c5..2a30198 100644 --- a/layman/overlays/svn.py +++ b/layman/overlays/svn.py @@ -50,24 +50,19 @@ class SvnOverlay(OverlaySource): super(SvnOverlay, self).add(base) + args = ['co'] if quiet: - quiet_option = '-q ' - else: - quiet_option = '' + args.append('-q') + args.append(self.src + '/@') + args.append(path([base, self.parent.name])) - return self.cmd(self.command() + ' co ' + quiet_option + - '"' + self.src + '/@" "' + path([base, self.parent.name]) + '"') + return self.run_command(*args) def sync(self, base, quiet = False): '''Sync overlay.''' self.supported() - if quiet: - quiet_option = '-q ' - else: - quiet_option = '' - def checkout_location(): # Append '@' iff needed # Keeps users of SVN <1.6.5 happy in more cases (bug #313303) @@ -76,8 +71,13 @@ class SvnOverlay(OverlaySource): repo_part = repo_part + '@' return path([base, repo_part]) - return self.cmd(self.command() + ' up ' + quiet_option + - '"' + checkout_location() + '"') + # svn up [-q] TARGET + args = ['up'] + if quiet: + args.append('-q') + args.append(checkout_location()) + + return self.run_command(*args) def supported(self): '''Overlay type supported?''' diff --git a/layman/overlays/tar.py b/layman/overlays/tar.py index d0b78cc..4916b77 100644 --- a/layman/overlays/tar.py +++ b/layman/overlays/tar.py @@ -64,7 +64,7 @@ class TarOverlay(OverlaySource): >>> a = Overlay(repo, config, quiet=False) >>> OUT.color_off() >>> a.add(testdir) #doctest: +ELLIPSIS - * Running command "/bin/tar -v -x -f... + * Running... # /bin/tar -v -x -f... >>> sorted(os.listdir(testdir + '/dummy')) ['app-admin', 'app-portage'] >>> shutil.rmtree(testdir) @@ -128,8 +128,9 @@ class TarOverlay(OverlaySource): raise Exception('Failed to store tar package in ' + pkg + '\nError was:' + str(error)) - result = self.cmd(self.command() + u' -v -x' + u' -f "' + pkg - + u'" -C "' + dest_dir + u'"') + # tar -v -x -f SOURCE -C TARGET + args = ['-v', '-x', '-f', pkg, '-C', dest_dir] + result = self.run_command(*args) os.unlink(pkg) return result diff --git a/layman/version.py b/layman/version.py index 7e9ec8f..592d8f9 100644 --- a/layman/version.py +++ b/layman/version.py @@ -20,7 +20,7 @@ __version__ = "$Id: version.py 309 2007-04-09 16:23:38Z wrobel $" -VERSION = '1.3.3' +VERSION = '1.4.1' if __name__ == '__main__': print VERSION diff --git a/testsuite.sh b/testsuite.sh new file mode 100755 index 0000000..ce125d2 --- /dev/null +++ b/testsuite.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Copyright (C) 2010 Sebastian Pipping <sebastian@pipping.org> +# Licensed under GPLv2 + +ret=0 +for script in layman/tests/*.py ; do + echo "# PYTHONPATH=\"${PWD}\" python \"${script}\"" + PYTHONPATH="${PWD}" python "${script}" \ + || ret=1 +done + +[[ ${ret} != 0 ]] && echo '!!! FAIL' +exit ${ret} diff --git a/www/index.html b/www/index.html deleted file mode 100644 index a229d67..0000000 --- a/www/index.html +++ /dev/null @@ -1,316 +0,0 @@ -<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>layman</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" title="layman"><div class="titlepage"><div><div><h2 class="title"><a name="id3020038"></a>layman</h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Gunnar</span> <span class="surname">Wrobel</span></h3><div class="affiliation"><div class="address"><p><br> - <code class="email"><<a class="email" href="mailto:wrobel@gentoo.org">wrobel@gentoo.org</a>></code><br> - <span class="otheraddr"><br> - <a class="ulink" href="http://gunnarwrobel.de" target="_top">http://gunnarwrobel.de</a><br> - </span><br> - </p></div></div></div></div></div><div><p class="copyright">Copyright © 2005-2009 Gunnar Wrobel</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id3020126">Overview</a></span></dt><dt><span class="section"><a href="#id2979502">External links</a></span></dt><dt><span class="section"><a href="#layman-reference">Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#layman-manpage">layman</a></span><span class="refpurpose"> — - manage your local repository of Gentoo overlays - </span></dt></dl></dd></dl></div><div class="section" title="Overview"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id3020126"></a>Overview</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-synopsis" title="Synopsis">Synopsis</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-description" title="Description">Description</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-actions" title="Actions">Action flags</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-other-options" title="Other options">Other options</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-configuration" title="Configuration">Configuration</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-remote" title="Overlay lists">Overlay lists</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-local" title="Local cache">Layman cache</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-make-conf" title="Handling /etc/make.conf">Handling make.conf</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-update" title="Adding, removing and updating overlays">Handle overlays</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-list" title="List overlays">List overlays</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-search" title="Searching ebuilds in overlays">Searching ebuilds in overlays</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-types" title="Overlay types">Overlay types</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-global" title="Overlay lists">Get your overlay published to the world</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-examples" title="Examples">Examples</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-files" title="Files">Layman files</a> - </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="link" href="#layman-bugs" title="Reporting bugs">Reporting bugs</a> - </p></li></ul></div></div><div class="section" title="External links"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2979502"></a>External links</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <a class="ulink" href="http://sourceforge.net/projects/layman/" target="_top">Layman project page on SourceForge</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://overlays.gentoo.org" target="_top">Gentoo Overlays project</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://ohloh.net/projects/layman/" target="_top">Layman project page on Ohloh</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://freshmeat.net/projects/layman/" target="_top">Layman project page on Freshmeat</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://bugs.gentoo.org/" target="_top">Bug tracker</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://gentoo-wiki.com/Portage_Overlay_Listing#Layman" target="_top">Wiki</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://log.onthebrink.de/feeds/posts/default/-/layman" target="_top">Blog</a> - </p></li><li class="listitem"><p> - <a class="ulink" href="http://www.google.com/reader/public/atom/user/02645926629531261525/label/%5Bproject%5D%20layman" target="_top">Combined RSS feed</a> - </p></li></ul></div></div><div class="section" title="Reference"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="layman-reference"></a>Reference</h2></div></div></div><div class="refentry" title="layman"><a name="layman-manpage"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>layman — - manage your local repository of Gentoo overlays - </p></div><div class="refsynopsisdiv" title="Synopsis"><a name="layman-synopsis"></a><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">layman</code> [-a] | [--add] [ALL] | [<em class="replaceable"><code>overlay</code></em>] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-d] | [--delete] [ALL] | [<em class="replaceable"><code>overlay</code></em>] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-s] | [--sync] [ALL] | [<em class="replaceable"><code>overlay</code></em>] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-i] | [--info] [ALL] | [<em class="replaceable"><code>overlay</code></em>] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-S] | [--sync-all] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-L] | [--list] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-l] | [--list-local] </p></div><div class="cmdsynopsis"><p><code class="command">layman</code> [-f] | [--fetch] </p></div></div><div class="refsection" title="Description"><a name="layman-description"></a><h2>Description</h2><p><span class="command"><strong>layman</strong></span> is a script that allows you to - add, remove and update Gentoo overlays from a variety of - sources.</p><div class="refsection" title="WARNING"><a name="id2978969"></a><h3>WARNING</h3><p><span class="command"><strong>layman</strong></span> makes it easy to retrieve and - update overlays for Gentoo. In addition it makes it TRIVIAL - to break your system. - </p><p>The main portage tree provides you with high quality ebuilds - that are all maintained by Gentoo developers. This will not - be the case for most of the overlays you can get by using - <span class="command"><strong>layman</strong></span>. Thus you are removing the - security shield that the standard tree provides for - you. You should keep that in mind when installing ebuilds - from an overlay. - </p><p>To ensure the security of your system you MUST read the - source of the ebuild you are about to install. - </p></div></div><div class="refsection" title="Options"><a name="layman-options"></a><h2>Options</h2><div class="refsection" title="Actions"><a name="layman-actions"></a><h3>Actions</h3><p>List of possible <span class="command"><strong>layman</strong></span> actions.</p><div class="variablelist"><dl><dt><span class="term"><code class="option">-f</code>, </span><span class="term"><code class="option">--fetch</code></span></dt><dd><p>Fetches the remote list of overlays. You will - usually NOT need to explicitly specify this option. The - fetch operation will be performed automatically once you - run the sync, sync-all, or list action. You can prevent - this automatic fetching using the --nofetch option.</p></dd><dt><span class="term"><code class="option">-a</code> <em class="replaceable"><code>overlay</code></em>, </span><span class="term"><code class="option">--add</code> <em class="replaceable"><code>overlay</code></em></span></dt><dd><p>Add the given overlay from the cached remote list to - your locally installed overlays. Specify "ALL" to add - all overlays from the remote list.</p></dd><dt><span class="term"><code class="option">-d</code> <em class="replaceable"><code>overlay</code></em>, </span><span class="term"><code class="option">--delete</code> <em class="replaceable"><code>overlay</code></em></span></dt><dd><p>Remove the given overlay from your locally installed - overlays. Specify "ALL" to remove all overlays</p></dd><dt><span class="term"><code class="option">-s</code> <em class="replaceable"><code>overlay</code></em>, </span><span class="term"><code class="option">--sync</code> <em class="replaceable"><code>overlay</code></em></span></dt><dd><p>Update the specified overlay. Use "ALL" as - parameter to synchronize all overlays</p></dd><dt><span class="term"><code class="option">-i</code> <em class="replaceable"><code>overlay</code></em>, </span><span class="term"><code class="option">--info</code> <em class="replaceable"><code>overlay</code></em></span></dt><dd><p>Display all available information about the specified overlay.</p></dd><dt><span class="term"><code class="option">-S</code>, </span><span class="term"><code class="option">--sync-all</code></span></dt><dd><p>Update all overlays. Shortcut for -s ALL.</p></dd><dt><span class="term"><code class="option">-L</code>, </span><span class="term"><code class="option">--list</code></span></dt><dd><p>List the contents of the remote list.</p></dd><dt><span class="term"><code class="option">-l</code>, </span><span class="term"><code class="option">--list-local</code></span></dt><dd><p>List the locally installed overlays.</p></dd></dl></div></div><div class="refsection" title="Other options"><a name="layman-other-options"></a><h3>Other options</h3><p>List of other available <span class="command"><strong>layman</strong></span> options.</p><div class="variablelist"><dl><dt><span class="term"><code class="option">-c</code> <em class="replaceable"><code>path</code></em>, </span><span class="term"><code class="option">--config</code> <em class="replaceable"><code>path</code></em></span></dt><dd><p>Path to an alternative configuration file.</p></dd><dt><span class="term"><code class="option">-o</code> <em class="replaceable"><code>url</code></em>, </span><span class="term"><code class="option">--overlays</code> <em class="replaceable"><code>url</code></em></span></dt><dd><p>Specifies the location of additional overlay - lists. You can use this flag several times and the - specified URLs will get temporarily appended to the list - of URLs you specified in your config file. You may also - specify local file URLs by prepending the path with - <strong class="userinput"><code>file://</code></strong>. This option - will only append the URL for this specific layman run - - edit your config file to add a URL permanently. So this - is useful for testing purposes. - </p></dd><dt><span class="term"><code class="option">-n</code>, </span><span class="term"><code class="option">--nofetch</code></span></dt><dd><p>Prevents <span class="command"><strong>layman</strong></span> from - automatically fetching the remote lists of overlays. The - default behavior for <span class="command"><strong>layman</strong></span> is to - update all remote lists if you run the sync, list or - fetch operation.</p></dd><dt><span class="term"><code class="option">-k</code>, </span><span class="term"><code class="option">--nocheck</code></span></dt><dd><p>Prevents <span class="command"><strong>layman</strong></span> from checking - the remote lists of overlays for complete overlay - definitions. The default behavior for layman is to - reject overlays that do not provide a description or a - contact attribute.</p></dd><dt><span class="term"><code class="option">-q</code>, </span><span class="term"><code class="option">--quiet</code></span></dt><dd><p>Makes <span class="command"><strong>layman</strong></span> completely quiet. - This option is dangerous: If the processes spawned by - layman when adding or synchronizing overlays require - any input layman will hang without telling you - why. This might happen for example if your overlay - resides in subversion and the SSL certificate of - the server needs acceptance.</p></dd><dt><span class="term"><code class="option">-v</code>, </span><span class="term"><code class="option">--verbose</code></span></dt><dd><p>Makes <span class="command"><strong>layman</strong></span> more verbose and - you will receive a description of the overlays you can - download.</p></dd><dt><span class="term"><code class="option">-N</code>, </span><span class="term"><code class="option">--nocolor</code></span></dt><dd><p>Remove color codes from the <span class="command"><strong>layman</strong></span> - output.</p></dd><dt><span class="term"><code class="option">-Q</code><em class="replaceable"><code>LEVEL</code></em>, </span><span class="term"><code class="option">--quietness</code><em class="replaceable"><code>LEVEL</code></em></span></dt><dd><p>Makes <span class="command"><strong>layman</strong></span> less verbose. - Choose a value between 0 and 4 with 0 being completely - quiet. Once you set this below 3, the same warning as - given for --quiet applies.</p></dd><dt><span class="term"><code class="option">-p</code><em class="replaceable"><code>LEVEL</code></em>, </span><span class="term"><code class="option">--priority</code><em class="replaceable"><code>LEVEL</code></em></span></dt><dd><p>Use this option in combination with - the <span class="command"><strong>--add</strong></span>. It will modify the - priority of the added overlay and thus influence the - order of entries in the make.conf file. The lower the - priority, the earlier in the list the entry will be - mentioned. Use a value between 0 and 100. The default - value is 50.</p></dd></dl></div></div></div><div class="refsection" title="Configuration"><a name="layman-configuration"></a><h2>Configuration</h2><p><span class="command"><strong>layman</strong></span> reads configuration parameters - from the file - <code class="filename">/etc/layman/layman.cfg</code> by - default. This file provides seven possible settings.</p><div class="variablelist"><dl><dt><span class="term"><code class="option">storage</code></span></dt><dd><p>Directory that will be used to store the overlays - and all additional data <span class="command"><strong>layman</strong></span> - needs. The default is - <code class="filename">/var/lib/layman</code>. layman - uses a location within the /usr/portage hierarchy instead - of <code class="filename">/var</code> in order to - store its data. This decision has been made to support - network file systems. If you have your portage tree on nfs - or a similar file system and several machines access the - same ebuild repository over the net it will be necessary - to also provide all necessary <span class="command"><strong>layman</strong></span> - data within the hierarchy of the tree. This way the - overlays will also have to be synced at one location - only.</p></dd><dt><span class="term"><code class="option">cache</code></span></dt><dd><p><span class="command"><strong>layman</strong></span> will store the downloaded - global list of overlays here. The default is - <code class="filename">%(storage)s/cache.xml</code>.</p></dd><dt><span class="term"><code class="option">overlays</code></span></dt><dd><p><span class="command"><strong>layman</strong></span> will store the list of - installed overlays here. The default is - <code class="filename">%(storage)s/overlays.xml</code>.</p></dd><dt><span class="term"><code class="option">make.conf</code></span></dt><dd><p>This is the portage configuration file that - <span class="command"><strong>layman</strong></span> will modify in order to make - the new overlays available within portage. The default - is <code class="filename">%(storage)s/make.conf</code>. You could - also specify <code class="filename">/etc/make.conf - directly</code>. But that would mean that you have - an external program trying to automatically set - variables within this very central configuration - file. Since I consider that dangerous I prefer having a - very small external file that only contains the setting - for PORTAGE_OVERLAYS. This file is then sourced at the - end of <code class="filename">/etc/make.conf</code>. This is the - reason why <span class="command"><strong>layman</strong></span> suggests running - "echo "source - <code class="filename">/var/lib/layman/make.conf</code>" >> - <code class="filename">/etc/make.conf</code>" after it has been - installed.</p></dd><dt><span class="term"><code class="option">overlays</code></span></dt><dd><p>Specifies the URL for the remote list of all - available overlays. The default is - <code class="filename">http://www.gentoo.org/proj/en/overlays/repositories.xml</code>. You - can specify several URLs here (one per line). The - contents will get merged to a single list of - overlays. This allows to add a personal collection of - overlays that are not present in the global list.</p></dd><dt><span class="term"><code class="option">proxy</code></span></dt><dd><p>Specify your proxy in case you have to use - one.</p></dd><dt><span class="term"><code class="option">nocheck</code></span></dt><dd><p>Set to "yes" if <span class="command"><strong>layman</strong></span> should stop - worrying about overlays with missing a contact address or - the description.</p></dd></dl></div></div><div class="refsection" title="Handling overlays"><a name="layman-handling"></a><h2>Handling overlays</h2><p><span class="command"><strong>layman</strong></span> intends to provide easy - maintenance of Gentoo overlays while not requiring any - configuration. - </p><div class="refsection" title="Overlay lists"><a name="layman-remote"></a><h3>Overlay lists</h3><p><span class="command"><strong>layman</strong></span> allows you to fetch an - overlay without the need to modify any configuration - files. In order for this to be possible the script needs an - external list of possible overlay sources. There is a - centralized list available at <a class="ulink" href="http://www.gentoo.org/proj/en/overlays/repositories.xml" target="_top">http://www.gentoo.org/proj/en/overlays/repositories.xml</a> - but nothing will prevent you from using or publishing your - own list of overlays. The location of the remote lists can - also be modified using the <code class="option">--overlays</code> - option when running <span class="command"><strong>layman</strong></span>. - </p><p>To get a new overlay added to the central list provided - for layman, send a mail to - <code class="email"><<a class="email" href="mailto:overlays@gentoo.org">overlays@gentoo.org</a>></code>. Gentoo developers may - add their overlay entries directly into the list which can - be accessed over the CVS repository for the Gentoo - website. - </p><p>You can also use several lists at the same time. Just - add one URL per line to the overlays variable in your - configuration file. <span class="command"><strong>layman</strong></span> will merge the - contents of all lists. - </p><p><span class="command"><strong>layman</strong></span> also allows you to define - local files in this list. Just make sure you prepend these - path names in standard URL notation - with <code class="filename">file://</code>. - </p><p>If you need to use a proxy for access to the Internet, - you can use the corresponding variable in - the <span class="command"><strong>layman</strong></span> configuration file. Layman - will also respect the <span class="command"><strong>http_proxy</strong></span> - environment variable in case you set it. - </p></div><div class="refsection" title="Local cache"><a name="layman-local"></a><h3>Local cache</h3><p><span class="command"><strong>layman</strong></span> stores a local copy of the - fetched remote list. It will be stored in - <code class="filename">/var/lib/layman/cache.xml</code> - by default. There exists only one such cache file and it - will be overwritten every time you - run <span class="command"><strong>layman</strong></span>. - </p></div><div class="refsection" title="Handling /etc/make.conf"><a name="layman-make-conf"></a><h3>Handling <code class="filename">/etc/make.conf</code></h3><p>Since <span class="command"><strong>layman</strong></span> is designed to - automatically handle the inclusion of overlays into your - system it needs to be able to modify - the <span class="command"><strong>PORTDIR_OVERLAY</strong></span> variable in your - <code class="filename">/etc/make.conf</code> file. But - <code class="filename">/etc/make.conf</code> is a very central and - essential configuration file for a Gentoo - system. Automatically modifying this file would be - somewhat dangerous. You can - allow <span class="command"><strong>layman</strong></span> to do this by setting - the <span class="command"><strong>make_conf</strong></span> variable in the - configuration file to <code class="filename">/etc/make.conf</code>. - </p><p>A much safer and in fact recommended solution to the - problem is to let <span class="command"><strong>layman</strong></span> handle an - external file that only contains - the <span class="command"><strong>PORTDIR_OVERLAY</strong></span> variable and is - sourced within the - standard <code class="filename">/etc/make.conf</code> file. Just add the following line to the end of your - <code class="filename">/etc/make.conf</code> file: - </p><p>source /var/lib/layman/make.conf</p><p><code class="filename">/var/lib/layman/make.conf</code> - is the default provided in the layman - configuration. Change this file name in case you decide to - store it somewhere else. - </p><p>The file does not necessarily need to exist at the - beginning. If it is missing, layman will create it for you. - </p><p>There is also no need to remove the - original <span class="command"><strong>PORTDIR_OVERLAY</strong></span> variable from - the make.conf file. Layman will simply add new overlays to - this variable and all your old entries will remain in there. - </p></div><div class="refsection" title="Adding, removing and updating overlays"><a name="layman-update"></a><h3>Adding, removing and updating overlays</h3><p>Once a remote list of overlays has been fetched, - <span class="command"><strong>layman</strong></span> allows to add overlays from the - remote list to your system. The script will try to fetch - the overlay. If this is successful the overlay information - will be copied from the cache to the list of locally - installed overlays. In addition - <span class="command"><strong>layman</strong></span> will modify the - <span class="command"><strong>PORTDIR_OVERLAY</strong></span> variable to include the - new overlay path. - </p><p>Removing the overlay with <span class="command"><strong>layman</strong></span> will - delete the overlay without leaving any traces behind. - </p><p>In order to update all overlays managed by - <span class="command"><strong>layman</strong></span> you can run the script with the - <code class="option">--sync ALL</code> option or - the <code class="option">--sync-all</code> flag. - </p></div><div class="refsection" title="List overlays"><a name="layman-list"></a><h3>List overlays</h3><p><span class="command"><strong>layman</strong></span> provides the - <code class="option">--list</code> and <code class="option">--list-local</code> - options to print a list of available respectively - installed overlays. - </p><p> Listing will prepend all fully supported overlays - with a green asterisk, all non-official overlays with a - yellow asterisk and all overlays that you will not be able - to use since you do not have the necessary tools installed - with a red asterisk. - </p><p> In the default mode layman will be strict about - listing overlays and only present you with overlays that - are fully supported. In addition it will complain about - overlays that are missing a description field or a contact - attribute. This type of behavior has been added with - layman-1.0.7 and if you'd like to return to the old - behavior you may use the k option flag or set the nocheck - option in the configuration file. - </p></div><div class="refsection" title="Searching ebuilds in overlays"><a name="layman-search"></a><h3>Searching ebuilds in overlays</h3><p> - You can search through the ebuilds available in the - overlays on <a class="ulink" href="http://overlays.gentoo.org" target="_top">http://overlays.gentoo.org</a> by - using "eix". Emerge the package and run - <span class="command"><strong>update-eix-remote update</strong></span>. - </p></div><div class="refsection" title="Overlay types"><a name="layman-types"></a><h3>Overlay types</h3><p>Currently <span class="command"><strong>layman</strong></span> supports overlays that - are exported via <span class="command"><strong>rsync</strong></span>, - <span class="command"><strong>subversion</strong></span>, <span class="command"><strong>bzr</strong></span>, - <span class="command"><strong>darcs</strong></span>, <span class="command"><strong>git</strong></span>, - <span class="command"><strong>mercurial</strong></span> or provided - as <span class="command"><strong>tar</strong></span> packages. - </p></div></div><div class="refsection" title="Overlay lists"><a name="layman-global"></a><h2>Overlay lists</h2><div class="refsection" title="Overlay list format"><a name="id3030784"></a><h3>Overlay list format</h3><p> - Layman uses a central list of overlays in XML format. The file looks like this: - </p><div class="example"><a name="id3030793"></a><p class="title"><b>Example 1. An example overlays.xml file</b></p><div class="example-contents"><pre class="programlisting"> - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd"> - <repositories xmlns="" version="1.0"> - <repo quality="experimental" status="official"> - <name>gnome</name> - <description>experimental gnome ebuilds</description> - <homepage>http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=summary</homepage> - <owner type="project"> - <email>gnome@gentoo.org</email> - <name>GNOME herd</name> - </owner> - <source type="git">git://git.overlays.gentoo.org/proj/gnome.git</source> - <source type="git">http://git.overlays.gentoo.org/gitroot/proj/gnome.git</source> - <source type="git">git+ssh://git@git.overlays.gentoo.org/proj/gnome.git</source> - <feed>http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=atom</feed> - <feed>http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=rss</feed> - </repo> - </repositories> - </pre></div></div><p><br class="example-break"> - </p></div><div class="refsection" title="Adding an overlay locally"><a name="id3030842"></a><h3>Adding an overlay locally</h3><p> - Simply create an overlay list in the format described - above and run <span class="command"><strong>layman</strong></span> with the - <code class="option">-o</code> switch. You need to - prepend local file URLs with - <strong class="userinput"><code>file://</code></strong>. - </p></div><div class="refsection" title="Adding an overlay globally"><a name="id3030868"></a><h3>Adding an overlay globally</h3><p> - The global list of overlays used by - <span class="command"><strong>layman</strong></span> lies at - <code class="filename">http://www.gentoo.org/proj/en/overlays/repositories.xml</code>. - </p><p> - All Gentoo developers have access to this location via CVS - and can modify the list of overlays. - </p><p> - If you are not a Gentoo developer but wish to get your - overlay listed you should contact the Gentoo Overlays team - at <code class="email"><<a class="email" href="mailto:overlays@gentoo.org">overlays@gentoo.org</a>></code>. You can also join - <strong class="userinput"><code>#gentoo-overlays</code></strong> on - <code class="filename">irc.freenode.net</code>. - </p></div></div><div class="refsection" title="Examples"><a name="layman-examples"></a><h2>Examples</h2><div class="refsection" title="Installing an overlay"><a name="id3030922"></a><h3>Installing an overlay</h3><p><strong class="userinput"><code>layman -f -a wrobel</code></strong></p><p>This would add the overlay with the id - <span class="command"><strong>wrobel</strong></span> to your list of installed - overlays.</p></div><div class="refsection" title="Syncing your overlays"><a name="id3030945"></a><h3>Syncing your overlays</h3><p><strong class="userinput"><code>layman -s ALL</code></strong></p><p>This updates all overlays</p></div><div class="refsection" title="Performing several actions at the same time"><a name="id3030961"></a><h3>Performing several actions at the same time</h3><p><strong class="userinput"><code>layman -f -a wrobel -a webapps-experimental</code></strong></p><p>This fetches the remote list and immediately adds two - overlays</p></div></div><div class="refsection" title="Files"><a name="layman-files"></a><h2>Files</h2><div class="variablelist"><dl><dt><span class="term"><code class="filename">/etc/layman/layman.cfg</code></span></dt><dd><p>Configuration file, holding the defaults for - <span class="command"><strong>layman</strong></span></p></dd></dl></div></div><div class="refsection" title="Reporting bugs"><a name="layman-bugs"></a><h2>Reporting bugs</h2><p> - Please report bugs you might find at <a class="ulink" href="http://bugs.gentoo.org" target="_top">http://bugs.gentoo.org</a> - </p></div></div></div></div></body></html> |