Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.buildout
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
slapos.buildout
Commits
b3cbe68c
Commit
b3cbe68c
authored
Feb 07, 2007
by
Jim Fulton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for the buildout newest option.
Also added a missing tests for upgrading.
parent
c13d5c58
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
19 deletions
+98
-19
zc.recipe.egg_/CHANGES.txt
zc.recipe.egg_/CHANGES.txt
+8
-0
zc.recipe.egg_/setup.py
zc.recipe.egg_/setup.py
+1
-1
zc.recipe.egg_/src/zc/recipe/egg/README.txt
zc.recipe.egg_/src/zc/recipe/egg/README.txt
+39
-15
zc.recipe.egg_/src/zc/recipe/egg/custom.py
zc.recipe.egg_/src/zc/recipe/egg/custom.py
+3
-0
zc.recipe.egg_/src/zc/recipe/egg/custom.txt
zc.recipe.egg_/src/zc/recipe/egg/custom.txt
+45
-2
zc.recipe.egg_/src/zc/recipe/egg/egg.py
zc.recipe.egg_/src/zc/recipe/egg/egg.py
+2
-1
No files found.
zc.recipe.egg_/CHANGES.txt
View file @
b3cbe68c
...
...
@@ -8,6 +8,14 @@ To do
Change History
**************
1.0.0b5 (2007-02-??)
====================
Feature Changes
---------------
- Added support for the buildout newest option.
1.0.0b4 (2007-01-17)
====================
...
...
zc.recipe.egg_/setup.py
View file @
b3cbe68c
...
...
@@ -7,7 +7,7 @@ def read(*rnames):
name
=
"zc.recipe.egg"
setup
(
name
=
name
,
version
=
"1.0.0b
4
"
,
version
=
"1.0.0b
5
"
,
author
=
"Jim Fulton"
,
author_email
=
"jim@zope.com"
,
description
=
"Recipe for installing Python package distributions as eggs"
,
...
...
zc.recipe.egg_/src/zc/recipe/egg/README.txt
View file @
b3cbe68c
...
...
@@ -64,8 +64,6 @@ specified where to find distributions using the find-links option.
Let's run the buildout:
>>> import os
>>> os.chdir(sample_buildout)
>>> buildout = os.path.join(sample_buildout, 'bin', 'buildout')
>>> print system(buildout),
buildout: Installing demo
zc.buildout.easy_install: Getting new distribution for demo<0.3
...
...
@@ -83,9 +81,9 @@ Now, if we look at the buildout eggs directory:
We see that we got an egg for demo that met the requirement, as well
as the egg for demoneeded, which demo requires. (We also see an egg
link for the recipe
. This egg link was actually created as part of
the sample buildout setup. Normally, when using the recipe, you'll get
a regular egg installation.)
link for the recipe
in the develop-eggs directory. This egg link was
actually created as part of the sample buildout setup. Normally, when
using the recipe, you'll get
a regular egg installation.)
Script generation
-----------------
...
...
@@ -186,7 +184,7 @@ This is useful for debugging and testing.
If we run the demo script, it prints out some minimal data:
>>> print system(
os.path.
join(sample_buildout, 'bin', 'demo')),
>>> print system(join(sample_buildout, 'bin', 'demo')),
2 1
The value it prints out happens to be some values defined in the
...
...
@@ -195,7 +193,7 @@ modules installed.
We can also run the py-demo script. Here we'll just print out
the bits if the path added to reflect the eggs:
>>> print system(
os.path.
join(sample_buildout, 'bin', 'py-demo'),
>>> print system(join(sample_buildout, 'bin', 'py-demo'),
... """import os, sys
... for p in sys.path:
... if 'demo' in p:
...
...
@@ -206,8 +204,13 @@ the bits if the path added to reflect the eggs:
demo-0.2-py2.4.egg
demoneeded-1.1-py2.4.egg
The recipe gets the most recent distribution that satisfies the
specification. For example, We remove the restriction on demo:
Egg updating
------------
The recipe normally gets the most recent distribution that satisfies the
specification. It won't do this is the buildout is either in
non-newest mode or in offline mode. To see how this works, we'll
remove the restriction on demo:
>>> write(sample_buildout, 'buildout.cfg',
... """
...
...
@@ -220,9 +223,34 @@ specification. For example, We remove the restriction on demo:
... index = %(server)s/index
... """ % dict(server=link_server))
>>> print system(buildout),
and run the buildout in non-newest mode:
>>> print system(buildout+' -N'),
buildout: Uninstalling demo
buildout: Installing demo
Note that we removed the eggs option, and the eggs defaulted to the
part name. Because we removed the eggs option, the demo was
reinstalled.
We'll also run the buildout in off-line mode:
>>> print system(buildout+' -o'),
buildout: Updating demo
We didn't get an update for demo:
>>> ls(sample_buildout, 'eggs')
- demo-0.2-py2.3.egg
- demoneeded-1.1-py2.3.egg
- setuptools-0.6-py2.3.egg
- zc.buildout-1.0-py2.3.egg
If we run the buildout on the default online and newest modes,
we'll get an update for demo:
>>> print system(buildout),
buildout: Updating demo
zc.buildout.easy_install: Getting new distribution for demo
zc.buildout.easy_install: Got demo 0.3
...
...
@@ -235,12 +263,9 @@ Then we'll get a new demo egg:
- setuptools-0.6-py2.4.egg
- zc.buildout-1.0-py2.4.egg
Note that we removed the eggs option, and the eggs
defaulted to the part name.
The script is updated too:
>>> print system(
os.path.
join(sample_buildout, 'bin', 'demo')),
>>> print system(join(sample_buildout, 'bin', 'demo')),
3 1
Controlling script generation
...
...
@@ -442,7 +467,6 @@ Offline mode
If the buildout offline option is set to "true", then no attempt will
be made to contact an index server:
>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
...
...
zc.recipe.egg_/src/zc/recipe/egg/custom.py
View file @
b3cbe68c
...
...
@@ -61,12 +61,15 @@ class Custom(Base):
if
buildout
[
'buildout'
].
get
(
'offline'
)
==
'true'
:
self
.
install
=
lambda
:
()
self
.
newest
=
buildout
[
'buildout'
].
get
(
'newest'
)
==
'true'
def
install
(
self
):
options
=
self
.
options
distribution
=
options
.
get
(
'eggs'
,
self
.
name
).
strip
()
return
zc
.
buildout
.
easy_install
.
build
(
distribution
,
options
[
'_d'
],
self
.
build_ext
,
self
.
links
,
self
.
index
,
options
[
'executable'
],
[
options
[
'_e'
]],
newest
=
self
.
newest
,
)
class
Develop
(
Base
):
...
...
zc.recipe.egg_/src/zc/recipe/egg/custom.txt
View file @
b3cbe68c
...
...
@@ -132,8 +132,6 @@ the egg:
... include-dirs = include
... """ % dict(server=link_server))
>>> buildout = join('bin', 'buildout')
>>> print system(buildout),
buildout: Installing extdemo
zip_safe flag not set; analyzing archive contents...
...
...
@@ -200,6 +198,51 @@ When we run the script, we'll 42 printed:
>>> print system(join('bin', 'demo')),
42
Updating
--------
The custom recipe will normally check for new source distributions
that meet the given specification. This can be suppressed using the
buildout non-newest and offline modes. We'll generate a new source
distribution for extdemo:
>>> update_extdemo()
If we run the buildout in non-newest or offline modes:
>>> print system(buildout+' -N'),
buildout: Develop: /sample-buildout/demo
buildout: Updating extdemo
buildout: Updating demo
>>> print system(buildout+' -o'),
buildout: Develop: /sample-buildout/demo
buildout: Updating extdemo
buildout: Updating demo
We won't get an update.
>>> ls(sample_buildout, 'develop-eggs')
- demo.egg-link
d extdemo-1.4-py2.4-unix-i686.egg
- zc.recipe.egg.egg-link
But if we run the buildout in the default on-line and newest modes, we
will:
>>> print system(buildout),
buildout: Develop: /sample-buildout/demo
buildout: Updating extdemo
zip_safe flag not set; analyzing archive contents...
buildout: Updating demo
>>> ls(sample_buildout, 'develop-eggs')
- demo.egg-link
d extdemo-1.4-py2.4-linux-i686.egg
d extdemo-1.5-py2.4-linux-i686.egg
- zc.recipe.egg.egg-link
Controlling develop-egg generation
==================================
...
...
zc.recipe.egg_/src/zc/recipe/egg/egg.py
View file @
b3cbe68c
...
...
@@ -76,7 +76,8 @@ class Eggs(object):
index
=
self
.
index
,
executable
=
options
[
'executable'
],
always_unzip
=
options
.
get
(
'unzip'
)
==
'true'
,
path
=
[
options
[
'develop-eggs-directory'
]]
path
=
[
options
[
'develop-eggs-directory'
]],
newest
=
self
.
buildout
[
'buildout'
].
get
(
'newest'
)
==
'true'
,
)
return
orig_distributions
,
ws
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment