Ticket #1074: zetuptoolz-dont-write-script-exe.3.dpatch

File zetuptoolz-dont-write-script-exe.3.dpatch, 26.2 KB (added by davidsarah, at 2010-07-14T02:39:05Z)

Changes to zetuptoolz to get rid of .exe wrappers, and support Unicode arguments.

Line 
1Wed Jul 14 03:05:02 GMT Daylight Time 2010  david-sarah@jacaranda.org
2  * Changes to zetuptoolz to get rid of .exe wrappers, and support Unicode arguments.
3
4New patches:
5
6[Changes to zetuptoolz to get rid of .exe wrappers, and support Unicode arguments.
7david-sarah@jacaranda.org**20100714020502
8 Ignore-this: 10cd2b37aa59b0e3eeff4e2ac819a46a
9] {
10binary ./setuptools-0.6c15dev.egg/setuptools/cli.exe
11oldhex
12*4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000
13*000000000000000000000000000000000000000000800000000e1fba0e00b409cd21b8014ccd21
14*546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e
15*0d0d0a2400000000000000504500004c01050049c7b7450000000000000000e0000f030b010238
16*000e00000008000000020000701200000010000000200000000040000010000000020000040000
17*000100000004000000000000000060000000040000ef6c00000300000000002000001000000000
18*1000001000000000000010000000000000000000000000500000d4030000000000000000000000
19*000000000000000000000000000000000000000000000000000000000000000000000000000000
20*000000000000000000000000000000000000000000000000000000000000000000000000000000
21*000000000000000000000000000000000000000000000000002e74657874000000f00c00000010
22*0000000e000000040000000000000000000000000000200000602e646174610000003000000000
23*2000000002000000120000000000000000000000000000400000c02e7264617461000050000000
24*003000000002000000140000000000000000000000000000400000402e62737300000000600000
25*00004000000000000000000000000000000000000000000000800000c02e69646174610000d403
26*0000005000000004000000160000000000000000000000000000400000c0000000000000000000
27*000000000000000000000000000000000000000000000000000000000000000000000000000000
28*000000000000000000000000000000000000000000000000000000000000000000000000000000
29*000000000000000000000000000000000000000000000000000000000000000000000000000000
30*000000000000000000000000000000000000000000000000000000000000000000000000000000
31*000000000000000000000000000000000000000000000000000000000000000000000000000000
32*000000000000000000000000000000000000000000000000000000000000000000000000000000
33*000000000000000000000000000000000000000000000000000000000000000000000000000000
34*000000000000000000000000000000000000000000000000000000000000000000000000000000
35*000000000000000000000000000000000000000000000000000000000000000000000000000000
36*000000000000000000000000000000000000000000000000000000000000000000000000000000
37*000000000000000000000000000000000000000000000000000000000000000000000000000000
38*000000000000000000005589e583ec18895df88b450831db8975fc8b0031f68b003d910000c077
39*433d8d0000c0725bbe01000000c704240800000031d289542404e8740b000083f801747a85c074
40*0ec7042408000000ffd0bbffffffff89d88b75fc8b5df889ec5dc204003d940000c074c2774a3d
41*930000c074b489d88b75fc8b5df889ec5dc20400903d050000c0745b3d1d0000c075c5c7042404
42*00000031f689742404e8100b000083f801746a85c074aac7042404000000ffd0eb9a3d960000c0
43*ebd1c7042408000000b80100000089442404e8e00a000085f60f8476ffffffe863090000e96cff
44*ffffc704240b00000031c089442404e8bc0a000083f801743085c00f8452ffffffc704240b0000
45*00ffd0e93fffffffc7042404000000b901000000894c2404e88c0a0000e925ffffffc704240b00
46*0000b80100000089442404e8720a0000e90bffffff8db6000000008dbc27000000005589e55383
47*ec24c7042400104000e8fd0a000083ec04e8d5080000c745f8000000008d45f889442410a10020
48*4000c70424044040008944240c8d45f489442408b80040400089442404e8420a0000a110404000
49*85c07459a3102040008b151c51400085d20f858b00000083fae0741fa11040400089442404a11c
50*5140008b4030890424e8f80900008b151c51400083fac0741da11040400089442404a11c514000
51*8b4050890424e8d40900008d742600e8bb0900008b15102040008910e8fe07000083e4f0e88609
52*00008b0089442408a10040400089442404a104404000890424e8ba06000089c3e853090000891c
53*24e82b0a000089442404a11c5140008b4010890424e8770900008b151c514000e956ffffff8db6
54*000000008dbf000000005589e583ec08c7042401000000ff1514514000e8c8feffff908db42600
55*0000005589e583ec08c7042402000000ff1514514000e8a8feffff908db42600000000558b0d30
56*51400089e55dffe18d742600558b0d2451400089e55dffe1909090905589e583ec188b450c8944
57*24088b450889442404a11c51400083c040890424e85c090000b802000000c9c35589e557565383
58*ec0c8b750889f7fcb9ffffffffb000f2aef7d18d79ffc7442404010000008d443f03890424e814
59*0900008945f0c6002289c242b900000000bb0000000039f97d33803c1e5c750341eb1e803c1e22
60*751385c97e09c6025c424985c97ff7c6025c42eb05b9000000000fb6041e8802424339fb7ccd85
61*c97e09c6025c424985c97ff7c60222c64201008b45f083c40c5b5e5f5dc35589e5565383ec10c7
62*44240808000000c7442404000000008b4508890424e8c808000083ec0c89c6b80000000085f674
63*3ec744240401000000c7042404010000e86608000089c385c07417c74424080401000089442404
64*893424e89c08000083ec0c893424e8a108000083ec0489d88d65f85b5e5dc35589e557565381ec
65*4c0400008b75088d5e010fb61684d2741380fa2f7504c643ff5c0fb6034388c284c075ed8d85d8
66*fcffff894424108d85d8fdffff8944240c8d85d8feffff894424088d45d889442404893424e8cc
67*070000807dd800750980bdd8feffff5c750d893424e81affffffe9990000008d85d8fcffff8944
68*24108d85d8fdffff8944240c8d9dd8feffff895c24088d45d8894424048b450c890424e8800700
69*0089dffcb9ffffffffb000f2aef7d18d5c19fe803b5c75064b803b5c74198d85d8feffff89c239
70*d8770dc603004b803b5c740439da76f3c7442410000000008974240c8d85d8feffff894424088d
71*45d8894424048d9dc8fbffff891c24e80f070000891c24e87cfeffff81c44c0400005b5e5f5dc3
72*5589e557565383ec1c8b5d0889dffcb9ffffffffb000f2aef7d149c744240404000000890c24e8
73*f10600008945f089debf00000000c745e8000000008b450cc700000000008b55f0891aeb01430f
74*be03890424e89406000085c075f00fb603438845ef84c074150fbec0890424e87a06000085c074
75*47837de800754185ff7407c6065c464f75f9c60600468b550c8b024089028b55f0893482807def
76*00750589d0eb65430fbe03890424e83d06000085c075f0803b0075a48b45f0eb4b807def5c7503
77*47eb96807def22751bf7c7010000007511837de8000f94c00fb6c08945e8c645ef00d1ff85ff74
78*07c6065c464f75f9807def000f8460ffffff0fb645ef880646e954ffffff83c41c5b5e5f5dc355
79*89e557565381ec2c020000c7442408000100008d9de8fdffff895c2404c7042400000000e83206
80*000083ec0c89dffcb9ffffffffb000f2aef7d18d7419ff39f37314803e2e740f89d8c606004e39
81*f07305803e2e75f3c606008db5e8fdffff89f7fcb9ffffffffb000f2aef7d149c7040e2d736372
82*c7440e046970742e66c7440e087079c6440e0a00c744240400000000893424e8a204000089c383
83*f8ff751589742404c7042400304000e8ebfbffffe9c50100008db5e8feffffc744240800010000
84*89742404890424e85c04000001c6891c24e8420400008dbde7feffff4739f7730f803f00740a80
85*3f0a7405803f0d75ecc607008db5e8feffffbf10304000b902000000fcf3a60f97c20f92c038c2
86*7425c785e8feffff23217079c785ecfeffff74686f6ec785f0feffff2e657865c685f4feffff00
87*8d85e4fdffff894424048d85eafeffff890424e89ffdffff8985dcfdffff8d85e8fdffff894424
88*048b95dcfdffff8b02890424e866fcffff89c785c0751d8b95dcfdffff8b0289442404c7042414
89*304000e80dfbffffe9e7000000c7442404040000008b45080385e4fdffff40890424e85e040000
90*8985e0fdffff893c24e80bfbffff8b95e0fdffff890289d383c304be010000003bb5e4fdffff7d
91*1f8b95dcfdffff8b04b2890424e8e0faffff890383c304463bb5e4fdffff7ce18d85e8fdffff89
92*0424e8c4faffff890383c304be010000003b75087d198b550c8b04b2890424e8a7faffff890383
93*c304463b75087ce7c70300000000837d1000742a8b85e0fdffff894424048d9de8feffff891c24
94*e8bd020000895c2404c7042436304000e83dfaffffeb1a8b95e0fdffff89542408897c2404c704
95*2400000000e8810200008d65f45b5e5f5dc35589e55383ec14e82d03000089c3e836030000c744
96*2408000000008b13895424048b00890424e852fdffff83c4145b5dc2100090909090909055b810
97*00000089e55383ec6483e4f0e8fc010000e8d7010000e8a203000089c38d45a8890424e8a50300
98*0083ec0485db7506e99d000000430fb60b80f9200f94c080f9090f94c209d0a80175ea80f92274
99*3e80f9200f95c031d280f9090f95c285d0744c8db6000000008dbf0000000084c9743c430fb60b
100*80f9200f95c031d280f9090f95c285d075e6eb248d742600430fb60b80f9220f95c031d284c90f
101*95c285d075eb80f92274668db60000000080f9200f94c080f9090f94c2eb1089f6430fb6033c20
102*0f94c23c090f94c009d0a80175ecc7042400000000e80003000083ec04f645d401ba0a00000074
103*040fb755d88954240c31d2895c240889542404890424e8bffeffff83ec108b5dfcc9c3430fb60b
104*eb9a9090909090909090909055b95030400089e5eb148db6000000008b51048b0183c108018200
105*00400081f95030400072ea5dc390909090909090905589e5dbe35dc39090909090909090905589
106*e583ec08a1202040008338007417ff108b15202040008d42048b5204a32020400085d275e9c9c3
107*8db426000000005589e55383ec04a1e01c400083f8ff742985c089c3741389f68dbc2700000000
108*ff149de01c40004b75f6c70424501a4000e8faf7ffff595b5dc331c0833de41c400000eb0a408b
109*1c85e41c400085db75f4ebbe8db6000000008dbc270000000055a12040400089e585c074045dc3
110*89f65db801000000a320404000eb839090905189e183c1083d00100000721081e9001000008309
111*002d00100000ebe929c183090089e089cc8b088b4004ffe0909090ff25f4504000909000000000
112*00000000ff25e850400090900000000000000000ff25e450400090900000000000000000ff25f0
113*50400090900000000000000000ff25ec50400090900000000000000000ff251451400090900000
114*000000000000ff251851400090900000000000000000ff250c51400090900000000000000000ff
115*254051400090900000000000000000ff251051400090900000000000000000ff25285140009090
116*0000000000000000ff250051400090900000000000000000ff2508514000909000000000000000
117*00ff250451400090900000000000000000ff253c51400090900000000000000000ff2520514000
118*90900000000000000000ff252c51400090900000000000000000ff253451400090900000000000
119*000000ff253851400090900000000000000000ff256851400090900000000000000000ff254c51
120*400090900000000000000000ff256451400090900000000000000000ff25585140009090000000
121*0000000000ff255051400090900000000000000000ff255451400090900000000000000000ff25
122*6051400090900000000000000000ff255c51400090900000000000000000ffffffff00000000ff
123*ffffff000000000000000000000000000000000000000000000000000000000000000000000000
124*000000000000000000000000000000000000000000000000000000000000000000000000000000
125*000000000000000000000000000000000000000000000000000000000000000000000000000000
126*000000000000000000000000000000000000000000000000000000000000000000000000000000
127*000000000000000000000000000000000000000000000000000000000000000000000000000000
128*000000000000000000000000000000000000000000000000000000000000000000000000000000
129*000000000000000000000000000000000000000000000000000000000000000000000000000000
130*000000000000ffffffff00000000000000000000000000400000000000000000000000000000ec
131*1c4000000000000000000000000000000000000000000000000000000000000000000000000000
132*000000000000000000000000000000000000000000000000000000000000000000000000000000
133*000000000000000000000000000000000000000000000000000000000000000000000000000000
134*000000000000000000000000000000000000000000000000000000000000000000000000000000
135*000000000000000000000000000000000000000000000000000000000000000000000000000000
136*000000000000000000000000000000000000000000000000000000000000000000000000000000
137*000000000000000000000000000000000000000000000000000000000000000000000000000000
138*000000000000000000000000000000000000000000000000000000000000000000000000000000
139*000000000000000000000000000000000000000000000000000000000000000000000000000000
140*000000000000000000000000000000000000000000000000000000000000000000000000000000
141*000000000000000000000000000000000000000000000000000000000000000000000000000000
142*000000000000000000000000000000000000000000000000000000000000000000000000000000
143*000000000000000000000043616e6e6f74206f70656e2025730a002321000043616e6e6f742066
144*696e6420507974686f6e2065786563757461626c652025730a00436f756c64206e6f7420657865
145*632025730000000000000000000000000000000000000000000000000000000000000000000000
146*000000000000000000000000000000000000000000000000000000000000000000000000000000
147*000000000000000000000000000000000000000000000000000000000000000000000000000000
148*000000000000000000000000000000000000000000000000000000000000000000000000000000
149*000000000000000000000000000000000000000000000000000000000000000000000000000000
150*000000000000000000000000000000000000000000000000000000000000000000000000000000
151*000000000000000000000000000000000000000000000000000000000000000000000000000000
152*000000000000000000000000000000000000000000000000000000000000000000000000000000
153*000000000000000000000000000000000000000000000000000000000000000000000000000000
154*000000000000000000000000000000000000000000000000000000000000000000000000000000
155*000000000000000000000000000000000000000000000000000000000000000000000000000000
156*0000000000000000000000000000000054500000000000000000000048530000e4500000705000
157*0000000000000000009853000000510000bc5000000000000000000000c45300004c5100000000
158*00000000000000000000000000000000000000000000705100007c510000885100009051000098
159*5100000000000000000000a4510000b4510000c4510000d4510000e4510000f451000008520000
160*145200001c520000285200003452000040520000505200005c5200006852000074520000805200
161*0000000000000000008c5200009c520000ac520000c0520000d8520000ec520000005300001453
162*00000000000000000000705100007c5100008851000090510000985100000000000000000000a4
163*510000b4510000c4510000d4510000e4510000f451000008520000145200001c52000028520000
164*3452000040520000505200005c52000068520000745200008052000000000000000000008c5200
165*009c520000ac520000c0520000d8520000ec52000000530000145300000000000006005f636c6f
166*73650000000012005f6578656376000000003a005f6f70656e0040005f72656164004b005f7370
167*61776e7600000027005f5f6765746d61696e617267730031005f5f705f5f5f6172676300000000
168*32005f5f705f5f5f61726776000000003c005f5f705f5f656e7669726f6e00003e005f5f705f5f
169*666d6f64650000000050005f5f7365745f6170705f747970650000000079005f63657869740000
170*0000e9005f696f6200001f015f6d616b6570617468005e015f6f6e6578697400000084015f7365
171*746d6f6465000092015f73706c697470617468000000001c026174657869740000000021026361
172*6c6c6f63000000003902667072696e74660000005a026973737061636500000090027369676e61
173*6c000000009b004578697450726f63657373000000d500467265654c696272617279000000ec00
174*476574436f6d6d616e644c696e65410000004d014765744d6f64756c6546696c654e616d654100
175*0000004f014765744d6f64756c6548616e646c65410000800147657453746172747570496e666f
176*410000000b024c6f61644c69627261727945784100000000df02536574556e68616e646c656445
177*7863657074696f6e46696c74657200000000500000005000000050000000500000005000006d73
178*766372742e646c6c00001450000014500000145000001450000014500000145000001450000014
179*500000145000001450000014500000145000001450000014500000145000001450000014500000
180*6d73766372742e646c6c0000285000002850000028500000285000002850000028500000285000
181*00285000004b45524e454c33322e646c6c00000000000000000000000000000000000000000000
182*0000000000000000000000000000000000000000000000000000
183newhex
184*
185rmfile ./setuptools-0.6c15dev.egg/setuptools/cli.exe
186hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 15
187 import sys, os.path, zipimport, shutil, tempfile, zipfile, re, stat, random
188 from glob import glob
189 from setuptools import Command
190+from setuptools import __version__ as setuptools_version
191 from setuptools.sandbox import run_setup
192 from distutils import log, dir_util
193 from distutils.sysconfig import get_python_lib
194hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 577
195 
196     def install_wrapper_scripts(self, dist):
197         if not self.exclude_scripts:
198-            for args in get_script_args(dist):
199+            for args in get_script_args(dist, script_dir=self.script_dir):
200                 self.write_script(*args)
201 
202 
203hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1568
204     return executable
205 
206 
207-def get_script_args(dist, executable=sys_executable, wininst=False):
208+def get_script_args(dist, executable=sys_executable, wininst=False, script_dir=None):
209     """Yield write_script() argument tuples for a distribution's entrypoints"""
210     spec = str(dist.as_requirement())
211     header = get_script_header("", executable, wininst)
212hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1572
213+    generated_by = "# generated by zetuptoolz %s" % (setuptools_version,)
214+    if sys.platform == 'win32':
215+        wininst = True
216+
217     for group in 'console_scripts', 'gui_scripts':
218         for name,ep in dist.get_entry_map(group).items():
219             script_text = (
220hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1580
221                 "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n"
222+                "%(generated_by)s\n"
223                 "__requires__ = %(spec)r\n"
224                 "import sys\n"
225                 "from pkg_resources import load_entry_point\n"
226hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1585
227                 "\n"
228+            ) % locals()
229+            if wininst:
230+                script_text += (
231+                    "# If this script doesn't work for you, make sure that the .pyscript\n"
232+                    "# extension is included in the PATHEXT environment variable, and is\n"
233+                    "# associated with Python.File (or other Python interpreter) in the\n"
234+                    "# registry.\n"
235+                    "\n"
236+                    "if sys.argv[0].endswith('.pyscript'):\n"
237+                    "    sys.argv[0] = sys.argv[0][:-9]\n"
238+                    "# work around a bug in cygwin bash\n"
239+                    "sys.argv = [s.rstrip('\\r') for s in sys.argv]\n"
240+                    "\n"
241+                )
242+            script_text += (
243                 "sys.exit(\n"
244                 "   load_entry_point(%(spec)r, %(group)r, %(name)r)()\n"
245                 ")\n"
246hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1604
247             ) % locals()
248-            if sys.platform=='win32' or wininst:
249-                # On Windows/wininst, add a .py extension and an .exe launcher
250+
251+            if wininst:
252+                # On Windows/wininst, add a .py[w] extension. Delete any existing
253+                # -script.py[w], .exe, and .exe.manifest.
254                 if group=='gui_scripts':
255hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1609
256-                    ext, launcher = '-script.pyw', 'gui.exe'
257-                    old = ['.pyw']
258+                    ext = '.pyw'
259+                    old = ['','.pyw','-script.pyw','.exe','.exe.manifest']
260                     new_header = re.sub('(?i)python.exe','pythonw.exe',header)
261                 else:
262hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1613
263-                    ext, launcher = '-script.py', 'cli.exe'
264-                    old = ['.py','.pyc','.pyo']
265+                    ext = '.pyscript'
266+                    old = ['','.pyscript','.py','.pyc','.pyo','-script.py','.exe','.exe.manifest']
267                     new_header = re.sub('(?i)pythonw.exe','python.exe',header)
268 
269hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1617
270-                if os.path.exists(new_header[2:-1]) or sys.platform!='win32':
271+                if os.path.exists(new_header[2:-1]) or sys.platform != 'win32':
272                     hdr = new_header
273                 else:
274                     hdr = header
275hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1622
276                 yield (name+ext, hdr+script_text, 't', [name+x for x in old])
277-                yield (
278-                    name+'.exe', resource_string('setuptools', launcher),
279-                    'b') # write in binary mode
280-                yield (name+'.exe.manifest', _launcher_manifest % (name,), 't')
281+
282+                if script_dir is not None:
283+                    # Also write a shell script that runs the .pyscript, for cygwin.
284+                    #
285+                    # We can't use a Python script, because the Python interpreter that we
286+                    # want to use *might* be the native Windows one, which won't understand
287+                    # a cygwin path. The cygwin Python does understand Windows paths, as
288+                    # does cygwin bash provided that backslashes are replaced with forward
289+                    # slashes. The Python we want is the one that is currently running
290+                    # easy_install (i.e. 'sys.executable'), which may not be the first
291+                    # 'python' on the PATH when the script runs.
292+
293+                    def quote_path(s):
294+                        return "\\'".join("'" + p.replace('\\', '/') + "'" for p in s.split("'"))
295+
296+                    pyscript_path = quote_path(os.path.join(script_dir, name+ext))
297+                    python_path = quote_path(sys.executable)
298+                    shell_script_text = (
299+                        '#!/bin/sh\n'
300+                        '%(generated_by)s\n'
301+                        '%(python_path)s %(pyscript_path)s "$@"\n'
302+                    ) % locals()
303+                    yield (name, shell_script_text)
304             else:
305                 # On other platforms, we assume the right thing to do is to
306                 # just write the stub with no extension.
307hunk ./setuptools-0.6c15dev.egg/setuptools/command/easy_install.py 1650
308                 yield (name, header+script_text)
309 
310-_launcher_manifest = """
311-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
312-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
313- <assemblyIdentity version="1.0.0.0"
314- processorArchitecture="X86"
315- name="%s.exe"
316- type="win32"/>
317-
318- <!-- Identify the application security requirements. -->
319- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
320- <security>
321- <requestedPrivileges>
322- <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
323- </requestedPrivileges>
324- </security>
325- </trustInfo>
326-</assembly>"""
327-
328-
329-
330-
331-
332-
333-
334-
335-
336-
337-
338-
339-
340-
341-
342-
343-
344-
345-
346-
347-
348-
349-
350 
351 def rmtree(path, ignore_errors=False, onerror=auto_chmod):
352     """Recursively delete a directory tree.
353}
354
355Context:
356
357[Rename stringutils to encodingutil, and drop open_unicode (since the Python 'open' function works fine with Unicode paths).
358david-sarah@jacaranda.org**20100713042715
359 Ignore-this: fa2bb6b5d48ce9ba7ea2b1afc9f3b7b4
360] 
361[Resolve conflicts between NFC normalization changes, and post-1.7 branch.
362david-sarah@jacaranda.org**20100618021642
363 Ignore-this: ed3d0d71b761b1317cff9a4c92c2f5cb
364] 
365[trivial: a copy of tiny code-cleanups suggested by Kevan in reviewing #967
366zooko@zooko.com**20100617045339
367 Ignore-this: 274b3fdbf1531aa053f484a5d47d7447
368] 
369[minor code clean-up in dirnode.py
370zooko@zooko.com**20100221052527
371 Ignore-this: b01bfb47638f5a64256bb306e0022066
372 Impose micro-POLA by passing only the writekey instead of the whole node object to {{{_encrypt_rw_uri()}}}. Remove DummyImmutableFileNode in nodemaker.py, which is obviated by this. Add micro-optimization by precomputing the netstring of the empty string and branching on whether the writekey is present or not outside of {{{_encrypt_rw_uri()}}}. Add doc about writekey to docstring.
373] 
374[Move EncryptedTemporaryFile from SFTP frontend to allmydata.util.fileutil, and make the FTP frontend also use it (fixing #1083).
375david-sarah@jacaranda.org**20100711213721
376 Ignore-this: e452e8ca66391aa2a1a49afe0114f317
377] 
378[Add tests of caps from the future that have non-ASCII characters in them (encoded as UTF-8). The changes to test_uri.py, test_client.py, and test_dirnode.py add tests of non-ASCII future caps in addition to the current tests. The changes to test_web.py just replace the tests of all-ASCII future caps with tests of non-ASCII future caps. We also change uses of failUnlessEqual to failUnlessReallyEqual, in order to catch cases where the type of a string is not as expected.
379david-sarah@jacaranda.org**20100711200252
380 Ignore-this: c2f193352369d32e06865f8f3e951894
381] 
382[Allow URIs passed in the initial JSON for t=mkdir-with-children, t=mkdir-immutable to be Unicode. Also pass the name of each child into nodemaker.create_from_cap for error reporting.
383david-sarah@jacaranda.org**20100711195525
384 Ignore-this: deac32d8b91ba26ede18905d3f7d2b93
385] 
386[docs/logging.txt: note that setting flogging vars might affect tests with race conditions.
387david-sarah@jacaranda.org**20100712050721
388 Ignore-this: fc1609d215fcd5561a57fd1226206f27
389] 
390[test_storage.py: potential fix for failures when logging is enabled.
391david-sarah@jacaranda.org**19700713040546
392 Ignore-this: 5815693a0df3e64c52c3c6b7be2846c7
393] 
394[SFTP: address some of the comments in zooko's review (#1106).
395david-sarah@jacaranda.org**20100712025537
396 Ignore-this: c3921638a2d4f1de2a776ae78e4dc37e
397] 
398[upcase_since_on_welcome
399terrellrussell@gmail.com**20100708193903] 
400[server_version_on_welcome_page.dpatch.txt
401freestorm77@gmail.com**20100605191721
402 Ignore-this: b450c76dc875f5ac8cca229a666cbd0a
403 
404 
405 - The storage server version is 0 for all storage nodes in the Welcome Page
406 
407 
408] 
409[NEWS: add NEWS snippets about two recent patches
410zooko@zooko.com**20100708162058
411 Ignore-this: 6c9da6a0ad7351a960bdd60f81532899
412] 
413[directory_html_top_banner.dpatch
414freestorm77@gmail.com**20100622205301
415 Ignore-this: 1d770d975e0c414c996564774f049bca
416 
417 The div tag with the link "Return to Welcome page" on the directory.xhtml page is not correct
418 
419] 
420[tahoe_css_toolbar.dpatch
421freestorm77@gmail.com**20100622210046
422 Ignore-this: 5b3ebb2e0f52bbba718a932f80c246c0
423 
424 CSS modification to be correctly diplayed with Internet Explorer 8
425 
426 The links on the top of page directory.xhtml are not diplayed in the same line as display with Firefox.
427 
428] 
429[runnin_test_tahoe_css.dpatch
430freestorm77@gmail.com**20100622214714
431 Ignore-this: e0db73d68740aad09a7b9ae60a08c05c
432 
433 Runnin test for changes in tahoe.css file
434 
435] 
436[runnin_test_directory_xhtml.dpatch
437freestorm77@gmail.com**20100622201403
438 Ignore-this: f8962463fce50b9466405cb59fe11d43
439 
440 Runnin test for diretory.xhtml top banner
441 
442] 
443[stringutils.py: tolerate sys.stdout having no 'encoding' attribute.
444david-sarah@jacaranda.org**20100626040817
445 Ignore-this: f42cad81cef645ee38ac1df4660cc850
446] 
447[quickstart.html: python 2.5 -> 2.6 as recommended version
448david-sarah@jacaranda.org**20100705175858
449 Ignore-this: bc3a14645ea1d5435002966ae903199f
450] 
451[SFTP: don't call .stopProducing on the producer registered with OverwriteableFileConsumer (which breaks with warner's new downloader).
452david-sarah@jacaranda.org**20100628231926
453 Ignore-this: 131b7a5787bc85a9a356b5740d9d996f
454] 
455[docs/how_to_make_a_tahoe-lafs_release.txt: trivial correction, install.html should now be quickstart.html.
456david-sarah@jacaranda.org**20100625223929
457 Ignore-this: 99a5459cac51bd867cc11ad06927ff30
458] 
459[setup: in the Makefile, refuse to upload tarballs unless someone has passed the environment variable "BB_BRANCH" with value "trunk"
460zooko@zooko.com**20100619034928
461 Ignore-this: 276ddf9b6ad7ec79e27474862e0f7d6
462] 
463[trivial: tiny update to in-line comment
464zooko@zooko.com**20100614045715
465 Ignore-this: 10851b0ed2abfed542c97749e5d280bc
466 (I'm actually committing this patch as a test of the new eager-annotation-computation of trac-darcs.)
467] 
468[docs: about.html link to home page early on, and be decentralized storage instead of cloud storage this time around
469zooko@zooko.com**20100619065318
470 Ignore-this: dc6db03f696e5b6d2848699e754d8053
471] 
472[docs: update about.html, especially to have a non-broken link to quickstart.html, and also to comment out the broken links to "for Paranoids" and "for Corporates"
473zooko@zooko.com**20100619065124
474 Ignore-this: e292c7f51c337a84ebfeb366fbd24d6c
475] 
476[TAG allmydata-tahoe-1.7.0
477zooko@zooko.com**20100619052631
478 Ignore-this: d21e27afe6d85e2e3ba6a3292ba2be1
479] 
480Patch bundle hash:
481b69fe6b760cb47664c6c1dfdb1ec123192a0b6fb