被“sDeMe制造”取代(是:在SDN树中制作SDASPEAR项目)
tha.sdistmaker的Python项目详细描述
软件制造商
从svn标记创建sdist tarballs,用于公司内部 SVN存储库。将sdist tarballs创建到一个目录中,然后可以为其提供服务 和阿帕奇。
由Reinout van Rees在The Health Agency编写。
更多详细信息请参见src/tha/sdistmaker/usage.txt。
tha.sdistmaker的用法
sdistmaker有两个主要用途:
- 制作并存储一个单张标签的SDIST tarball。
- 检查所有标签,确保它们都有一个SDist tarball。
测试设置
用于放置tarball的“pypi”目录:
>>> print pypidir PYPI
为防止发生实际操作而进行的MonkeyPatching:
>>> import commands >>> orig_getstatusoutput = commands.getstatusoutput >>> output_results = [''] >>> def mock_getstatusoutput(cmd): ... print "Command:", cmd ... return 0, output_results.pop(0) >>> commands.getstatusoutput = mock_getstatusoutput >>> commands.getstatusoutput('make tea') Command: make tea (0, '')>>> import shutil >>> orig_copy = shutil.copy >>> def mock_copy(src, dest): ... print "Mock copy %s -> %s" % (src, dest) ... open(dest, 'w').write('mock') >>> shutil.copy = mock_copy
使单个标记的sdist tarball
>>> from tha.sdistmaker import maker >>> tag = 'http://example.org/repo/project/tags/0.1'
脚本对标记进行svn签出,并使用setuptools获取 名称和版本以及创建SDist。然后将其复制到 以项目命名的子目录。
>>> output_results = ['', ... 'project', ... '0.1', ... '', ... ] >>> maker.main(tag=tag, destination=pypidir) Doing checkout of http://example.org/repo/project/tags/0.1 Command: svn co http://example.org/repo/project/tags/0.1 ... Detecting name and version Command: python setup.py --name Name: project Command: python setup.py --version Version: 0.1 Making sdist tarball Command: python setup.py sdist <BLANKLINE> Creating directory PYPI/project Copying tarball project-0.1.tar.gz Mock copy dist/project-0.1.tar.gz -> PYPI/project/project-0.1.tar.gz
将为项目创建一个新目录:
>>> import os >>> os.listdir(pypidir) ['project']
皮球在里面:
>>> sorted(os.listdir(os.path.join(pypidir, 'project'))) ['project-0.1.tar.gz']
一个新的版本放在刚好好的旁边:
>>> tag = 'http://example.org/repo/project/tags/0.2' >>> output_results = ['', ... 'project', ... '0.2', ... '', ... ] >>> maker.main(tag=tag, destination=pypidir) Doing checkout of http://example.org/repo/project/tags/0.2 Command: svn co http://example.org/repo/project/tags/0.2 ... Detecting name and version Command: python setup.py --name Name: project Command: python setup.py --version Version: 0.2 Making sdist tarball Command: python setup.py sdist <BLANKLINE> Copying tarball project-0.2.tar.gz Mock copy dist/project-0.2.tar.gz -> PYPI/project/project-0.2.tar.gz >>> os.listdir(pypidir) ['project'] >>> sorted(os.listdir(os.path.join(pypidir, 'project'))) ['project-0.1.tar.gz', 'project-0.2.tar.gz']
第二个项目:
>>> tag = 'http://example.org/repo/another/tags/0.2' >>> output_results = ['', ... 'another', ... '0.2', ... '', ... ] >>> maker.main(tag=tag, destination=pypidir) Doing checkout of http://example.org/repo/another/tags/0.2 Command: svn co http://example.org/repo/another/tags/0.2 ... Detecting name and version Command: python setup.py --name Name: another Command: python setup.py --version Version: 0.2 Making sdist tarball Command: python setup.py sdist <BLANKLINE> Creating directory PYPI/another Copying tarball another-0.2.tar.gz Mock copy dist/another-0.2.tar.gz -> PYPI/another/another-0.2.tar.gz >>> sorted(os.listdir(pypidir)) ['another', 'project'] >>> sorted(os.listdir(os.path.join(pypidir, 'project'))) ['project-0.1.tar.gz', 'project-0.2.tar.gz'] >>> sorted(os.listdir(os.path.join(pypidir, 'another'))) ['another-0.2.tar.gz']
还原原稿:
>>> commands.getstatusoutput = orig_getstatusoutput >>> shutil.copy = orig_copy
待办事项
- 可能很多事情。
sdistmaker的变更日志
1.1(2009-12-22)
- 文件更新。
1.0(2009-12-21)
- setup.py清除。
0.4(2009-11-09)
- 现在,正确地替换base和base_on_服务器。
0.2(2009-11-09)
- 完成后清理tempdir。然后离开 在杀死它之前。
- 使用buildout的bin/python,以便在 没有全局设置工具的服务器。假设我们总是 建筑内部:我很好。
0.1(2009-11-06)
- 添加了用于创建所有tarball的sdist_from_tags脚本。
- 添加了用于创建单个sdist的make_sdist脚本。
- 由Thaskel创建的初始库骨架。