WebStack

Annotated README.txt

725:9bf2f189cf13
2007-10-27 paulb [project @ 2007-10-27 22:39:41 by paulb] Fixed the reset method call: Python streams do not have a reset method.
paulb@68 1
Introduction
paulb@68 2
------------
paulb@68 3
paulb@301 4
WebStack is a package which provides a common API for Python Web
paulb@301 5
applications, regardless of the underlying server or framework environment.
paulb@301 6
It should be possible with WebStack to design and implement an application,
paulb@301 7
to choose a deployment environment, and then to be able to deploy the
paulb@301 8
application in a different environment later on without having to go back
paulb@301 9
and rewrite substantial parts of the application.
paulb@60 10
paulb@362 11
Quick Start
paulb@362 12
-----------
paulb@362 13
paulb@362 14
Try running the demo:
paulb@362 15
paulb@362 16
python tools/demo.py
paulb@362 17
paulb@363 18
An introductory guide to creating applications can be found in the docs
paulb@363 19
directory - see docs/index.html for the start page.
paulb@363 20
paulb@363 21
Contact, Copyright and Licence Information
paulb@363 22
------------------------------------------
paulb@363 23
paulb@363 24
The current Web page for WebStack at the time of release is:
paulb@363 25
paulb@363 26
http://www.boddie.org.uk/python/WebStack.html
paulb@363 27
paulb@363 28
Copyright and licence information can be found in the docs directory - see
paulb@413 29
docs/COPYING.txt, docs/LICENCE.txt and docs/LICENCE-PyServlet.txt for more
paulb@413 30
information.
paulb@363 31
paulb@68 32
Framework Support
paulb@68 33
-----------------
paulb@68 34
paulb@580 35
See the docs/supported-frameworks.html document for more information.
paulb@388 36
paulb@712 37
New in WebStack 1.2.7 (Changes since WebStack 1.2.6)
paulb@712 38
----------------------------------------------------
paulb@712 39
paulb@712 40
  * Fixed the MessageBodyStream class, adding an optional parameter to the
paulb@712 41
    readline method which seems to be necessary when handling multipart
paulb@712 42
    requests.
paulb@712 43
  * Introduced stream usage for file uploads where possible, in order to
paulb@719 44
    reduce memory usage (suggested by Kevin Glynn), adding a stream attribute
paulb@719 45
    to the FileContent class and making the content attribute a property.
paulb@719 46
  * Removed error handling in the examples in order to make troubleshooting
paulb@719 47
    easier.
paulb@723 48
  * Fixed header issues by introducing a special HeaderDict class which
paulb@723 49
    enforces the case-insensitivity expected of header dictionaries.
paulb@712 50
paulb@672 51
New in WebStack 1.2.6 (Changes since WebStack 1.2.5)
paulb@672 52
----------------------------------------------------
paulb@672 53
paulb@697 54
  * Added a jython-webstack package for Ubuntu Feisty (7.04).
paulb@672 55
  * Improved support for Jython on Ubuntu Feisty (7.04), adding python.path
paulb@672 56
    and python.cachedir settings which respectively avoid issues with missing
paulb@672 57
    libraries (due to the separation of libraries in the Ubuntu package) and
paulb@672 58
    with failed imports (due to a read-only class cache directory).
paulb@686 59
  * Improved the webstack_java_build.py script and added a deployment
paulb@686 60
    descriptor for JSP to accompany the new Java Servlet-specific JSPTest
paulb@686 61
    example.
paulb@686 62
  * Added a special Java Servlet-specific get_servlet method to support the
paulb@686 63
    JSPTest example. It is envisaged that a more general method could be made
paulb@686 64
    available for all frameworks in order to support access to underlying
paulb@686 65
    request dispatchers and other framework facilities.
paulb@672 66
  * Added more Jython-related documentation as suggested by Kevin Glynn.
paulb@672 67
  * Added missing request headers for CGI/WSGI environment variables.
paulb@674 68
  * Fixed Webware support to work with Webware 0.9.4.
paulb@684 69
  * Fixed/improved Zope path value retrieval.
paulb@705 70
  * Added support for wsgiref, changing the WSGI deploy function for CGI-based
paulb@705 71
    applications to deploy_as_cgi and adding a deploy_with_wsgiref function.
paulb@672 72
paulb@649 73
New in WebStack 1.2.5 (Changes since WebStack 1.2.4)
paulb@649 74
----------------------------------------------------
paulb@649 75
paulb@649 76
  * Fixed mod_python status codes using a solution proposed by John Krukoff.
paulb@650 77
  * Fixed a Twisted deprecation warning when accessing port numbers, thanks to
paulb@650 78
    John Krukoff.
paulb@649 79
  * Added Ubuntu Feisty (7.04) package support.
paulb@653 80
  * Tidied up the documentation HTML.
paulb@649 81
paulb@636 82
New in WebStack 1.2.4 (Changes since WebStack 1.2.3)
paulb@636 83
----------------------------------------------------
paulb@636 84
paulb@640 85
  * Made a SessionDirectoryRepository which uses directories for data produced
paulb@640 86
    by the shelve module, rather than attempting to manipulate files produced
paulb@640 87
    by the shelve module, since the details of such files may differ between
paulb@640 88
    environments: a situation noticed by John Krukoff in an environment
paulb@640 89
    without the bsddb module installed.
paulb@636 90
paulb@631 91
New in WebStack 1.2.3 (Changes since WebStack 1.2.2)
paulb@631 92
----------------------------------------------------
paulb@631 93
paulb@631 94
  * Fixed inadvertent OpenSSL dependency, noticed by John Krukoff.
paulb@631 95
paulb@619 96
New in WebStack 1.2.2 (Changes since WebStack 1.2.1)
paulb@619 97
----------------------------------------------------
paulb@619 98
paulb@619 99
  * Added an EncodingSelector class for the setting of default encodings on
paulb@619 100
    transactions.
paulb@619 101
  * Added some documentation about path processing strategies.
paulb@625 102
  * Added a secure variant of the BaseHTTPServer provided in the adapter for
paulb@625 103
    BaseHTTPRequestHandler.
paulb@619 104
paulb@606 105
New in WebStack 1.2.1 (Changes since WebStack 1.2)
paulb@606 106
--------------------------------------------------
paulb@606 107
paulb@606 108
  * Fixed mod_python get_content_type method.
paulb@615 109
  * Fixed LoginResource form field processing; changed the field type to
paulb@615 110
    password.
paulb@615 111
  * Exposed LoginResource and LoginRedirectResource page contents as
paulb@615 112
    attributes.
paulb@615 113
  * Added documentation about extending LoginRedirectResource and using
paulb@615 114
    PathSelector to remember an application's root path.
paulb@615 115
  * Changed handle_errors to 1 throughout the examples.
paulb@606 116
paulb@542 117
New in WebStack 1.2 (Changes since WebStack 1.1.2)
paulb@542 118
--------------------------------------------------
paulb@542 119
paulb@542 120
  * Added support for Django.
paulb@542 121
  * Fixed documentation about the representation of file upload fields.
paulb@552 122
  * Changed mod_python, Java Servlet and Webware (> 0.8.1) deployment to use a
paulb@552 123
    deploy function instead of more complicated configuration mechanisms.
paulb@542 124
  * Improved mod_python deployment documentation and tools so that cleaner
paulb@542 125
    application paths/URLs can now be used.
paulb@542 126
  * Moved user and path_info default definitions into WebStack.Generic as
paulb@542 127
    class attributes.
paulb@542 128
  * Fixed encoding usage issues with path fields when using get_fields in a
paulb@542 129
    Zope environment.
paulb@550 130
  * Added a FileResource class to WebStack.Resources.Static.
paulb@565 131
  * Made DirectoryRepository convert filenames to Unicode in all cases.
paulb@568 132
  * Renamed the Apache and Java Servlet tools, making them scripts which are
paulb@568 133
    installed by setup.py.
paulb@584 134
  * Fixed CGI content charsets and languages support.
paulb@587 135
  * Fixed CGI cookie output.
paulb@587 136
  * Added URL overriding in the LoginRedirectResource.
paulb@587 137
  * Exposed a get_target function from WebStack.Resources.Login in order to
paulb@587 138
    better support alternative login resources.
paulb@592 139
  * Added improved error reporting for BaseHTTPRequestHandler, CGI, Django and
paulb@592 140
    WSGI.
paulb@597 141
  * Added a traverse_path method to the Transaction class.
paulb@597 142
  * Made a path_encoding alias for urlencoding in the initialisation of
paulb@597 143
    WebStack.Resources.ResourceMap objects.
paulb@597 144
  * Added a Selectors module to WebStack.Resources in order to support common
paulb@597 145
    resource selection patterns.
paulb@542 146
paulb@536 147
New in WebStack 1.1.2 (Changes since WebStack 1.1.1)
paulb@536 148
----------------------------------------------------
paulb@536 149
paulb@536 150
  * Fixed missing import in WebStack.Repositories.Directory.
paulb@536 151
paulb@530 152
New in WebStack 1.1.1 (Changes since WebStack 1.1)
paulb@530 153
--------------------------------------------------
paulb@530 154
paulb@530 155
  * Fixed update_path to handle the root path properly.
paulb@530 156
paulb@495 157
New in WebStack 1.1 (Changes since WebStack 1.0)
paulb@495 158
------------------------------------------------
paulb@492 159
paulb@495 160
  * Added a Repositories package to provide session-like support for
paulb@495 161
    different kinds of storage.
paulb@495 162
  * Added an explicit filesystem encoding to the Calendar example and adopted
paulb@495 163
    the DirectoryRepository from the Repositories package.
paulb@504 164
  * Added get_path_without_info, update_path and redirect methods to the
paulb@504 165
    Transaction class.
paulb@527 166
  * Added get_attributes (attribute support) to the Transaction class.
paulb@495 167
  * Added a values method to Helpers.Session.Wrapper.
paulb@528 168
  * Fixed get_processed_virtual_path_info (to match from right to left).
paulb@514 169
  * Improved/fixed exception handling in the adapters so that transactions are
paulb@514 170
    committed as the final act of an adapter experiencing an unhandled
paulb@514 171
    exception. This should result in session stores being closed properly.
paulb@517 172
  * Changed the Helpers.Session.SessionStore to use DirectoryRepository.
paulb@514 173
  * Made the "not found" behaviour of DirectoryResource more configurable.
paulb@514 174
  * Added documentation for MapResource and DirectoryResource.
paulb@492 175
  * Fixed the distribution names in the Ubuntu changelog.
paulb@492 176
paulb@409 177
New in WebStack 1.0 (Changes since WebStack 0.10)
paulb@409 178
-------------------------------------------------
paulb@409 179
paulb@474 180
  * Changed the behaviour of get_path, get_path_without_query, get_path_info,
paulb@474 181
    get_virtual_path_info, get_processed_virtual_path_info and
paulb@474 182
    get_fields_from_path to return Unicode data decoded using the optional
paulb@474 183
    encoding parameter or a common default encoding.
paulb@474 184
  * Fixed file upload values so that FileContent objects are returned for such
paulb@474 185
    fields in get_fields_from_body and get_fields.
paulb@474 186
    (Warning! Except for Twisted!)
paulb@474 187
  * Fixed the JavaServlet support so that streams and file content are
paulb@474 188
    obtained as "almost" plain strings.
paulb@474 189
  * Updated/fixed LoginResource and LoginRedirectResource to use the updated
paulb@474 190
    path API and to handle special characters properly.
paulb@474 191
  * Added convenience methods to Transaction for the decoding and encoding of
paulb@474 192
    path values (to and from Unicode objects) - see the decode_path and
paulb@474 193
    encode_path methods.
paulb@474 194
  * Added the notion of processed virtual path info - the part of the original
paulb@474 195
    path info not represented in the current virtual path info.
paulb@474 196
  * Added "pass through" behaviour to ResourceMap.MapResource (prompted by a
paulb@474 197
    patch from Scott Robinson).
paulb@474 198
  * Fixed ResourceMap.MapResource to handle non-existent resources properly
paulb@474 199
    (where the virtual path info is only one component in length).
paulb@474 200
  * Added Debian package support.
paulb@474 201
  * Added automatic session directory creation for the WebStack sessions
paulb@474 202
    implementation.
paulb@474 203
  * Added support for the repeated retrieval of sessions from the same
paulb@474 204
    WebStack session store, avoiding deadlocks.
paulb@474 205
  * Fixed the calendar example, making it perform a proper function.
paulb@474 206
  * Made the BaseHTTPRequestHandler and Twisted SimpleWithLogin applications
paulb@474 207
    include the Login application, since Konqueror (at least) does not share
paulb@474 208
    cookies across different port numbers on the same host.
paulb@474 209
  * Added the SimpleWithLogin and Login applications to the demonstration.
paulb@474 210
  * Improved the documentation, adding information on request headers, and
paulb@474 211
    describing file upload and session support limitations.
paulb@476 212
  * Improved the AOLserver-related notes for CGI and Webware, adding a patch
paulb@476 213
    for Webware in order to work around AOLserver issues.
paulb@409 214
paulb@388 215
New in WebStack 0.10 (Changes since WebStack 0.9)
paulb@388 216
-------------------------------------------------
paulb@388 217
paulb@474 218
  * Changes to make the tools/demo.py script work on Windows (and other)
paulb@474 219
    platforms (suggested by Jim Madsen).
paulb@474 220
  * Fixed end of header newlines for CGI (suggested by Matt Harrison).
paulb@474 221
  * Minor documentation fixes and improvements, adding information on
paulb@474 222
    AOLserver in the CGI and Webware notes.
paulb@474 223
  * Changed the mod_python server name method to use the server object rather
paulb@474 224
    than the connection object.
paulb@474 225
  * Added a parameter to the ResourceMap.MapResource class to permit automatic
paulb@474 226
    redirects into resource hierarchies when no trailing "/" was given in the
paulb@474 227
    URL; changed the updated virtual path info so that empty values may be set
paulb@474 228
    (the guarantee that "/" will always appear no longer applies).
paulb@474 229
  * Fixed virtual path info retrieval when the value is an empty string.
paulb@192 230
paulb@314 231
New in WebStack 0.9 (Changes since WebStack 0.8)
paulb@314 232
------------------------------------------------
paulb@314 233
paulb@474 234
  * Standardised error handling in the adapters so that tracebacks can be
paulb@474 235
    suppressed and an internal server error condition raised.
paulb@474 236
  * Added overriding of path info in transactions.
paulb@474 237
  * Added a ResourceMap resource for dispatching to different resources
paulb@474 238
    according to path components.
paulb@474 239
  * Standardised deployment for some frameworks (see docs/deploying.html).
paulb@474 240
  * Introductory documentation in XHTML format.
paulb@474 241
  * Added server name and port methods to the transaction.
paulb@474 242
  * Added a simple demonstration application, incorporating many of the
paulb@474 243
    examples and launched under a single script.
paulb@474 244
  * Fixed mod_python native sessions.
paulb@474 245
  * Fixed Zope request stream access.
paulb@474 246
  * WebStack is now licensed under the LGPL - see docs/COPYING.txt for
paulb@474 247
    details.
paulb@314 248
paulb@300 249
New in WebStack 0.8 (Changes since WebStack 0.7)
paulb@295 250
------------------------------------------------
paulb@295 251
paulb@474 252
  * Added a standard exception, EndOfResponse, which can be used to
paulb@474 253
    immediately stop the processing/production of a response; this is useful
paulb@474 254
    when resources need to issue a redirect without unnecessary content being
paulb@474 255
    generated, for example.
paulb@474 256
  * Fixed path information for Zope.
paulb@474 257
  * Added WSGI support.
paulb@474 258
  * Verified Twisted 1.3.0 support with Python 2.3.3.
paulb@295 259
paulb@300 260
New in WebStack 0.7 (Changes since WebStack 0.6)
paulb@192 261
------------------------------------------------
paulb@192 262
paulb@474 263
  * Fixed path information semantics.
paulb@474 264
  * Fixed file upload semantics.
paulb@474 265
  * Fixed content type handling for Unicode output and for interpreting
paulb@474 266
    request body fields/parameters (although some improvement remains).
paulb@474 267
  * Added a method to discover the chosen response stream encoding.
paulb@474 268
  * Fixed field/parameter retrieval so that path and body fields are distinct,
paulb@474 269
    regardless of the framework employed.
paulb@474 270
  * Added a method to get a combination of path and body fields (suggested by
paulb@474 271
    Jacob Smullyan).
paulb@474 272
  * Introduced Zope 2 support.
paulb@474 273
  * Improved Jython/Java Servlet API support (although a special PyServlet
paulb@474 274
    class must now be used, and certain libraries must be deployed with
paulb@474 275
    applications).
paulb@474 276
  * Introduced authentication/authorisation support for Jython/Java Servlet
paulb@474 277
    API.
paulb@474 278
  * Session support has been added (except for Webware 0.8.1).
paulb@474 279
  * Alternative cookie support for mod_python has been added.
paulb@474 280
  * Cookie support now supports encoded Unicode sequences for names and
paulb@474 281
    values.
paulb@68 282
paulb@300 283
New in WebStack 0.6 (Changes since WebStack 0.5)
paulb@178 284
------------------------------------------------
paulb@178 285
paulb@474 286
  * Introduced Jython/Java Servlet API support.
paulb@474 287
  * Minor fixes to example applications and to BaseHTTPRequestHandler.
paulb@178 288
paulb@300 289
New in WebStack 0.5 (Changes since WebStack 0.4)
paulb@171 290
------------------------------------------------
paulb@171 291
paulb@474 292
  * Changed request body fields/parameters so that they are now represented
paulb@474 293
    using Unicode objects rather than plain strings.
paulb@474 294
  * Introduced better support for Unicode in response streams.
paulb@171 295
paulb@300 296
New in WebStack 0.4 (Changes since WebStack 0.3)
paulb@160 297
------------------------------------------------
paulb@140 298
paulb@474 299
  * Added application definition of user identity, permitting alternative
paulb@474 300
    authentication mechanisms.
paulb@474 301
  * Improved BaseHTTPRequestHandler and mod_python reliability around fields
paulb@474 302
    from request bodies.
paulb@474 303
  * Provided stream and environment parameterisation in the CGI adapter.
paulb@474 304
  * Added LoginRedirect and Login examples.
paulb@474 305
  * Added get_path_without_query and fixed get_path behaviour.
paulb@140 306
paulb@300 307
New in WebStack 0.3 (Changes since WebStack 0.2)
paulb@160 308
------------------------------------------------
paulb@120 309
paulb@474 310
  * Added better header support for Webware (suggested by Ian Bicking).
paulb@474 311
  * Introduced CGI and Java Servlet support (the latter is currently
paulb@474 312
    broken/unfinished).
paulb@474 313
  * Introduced support for cookies.
paulb@120 314
paulb@68 315
Future Work
paulb@68 316
-----------
paulb@68 317
paulb@308 318
(Essential)
paulb@308 319
paulb@460 320
Twisted 1.3.0 does not provide file upload metadata, and Twisted Web 0.5.0
paulb@460 321
also seems to be missing this functionality. It isn't obvious whether Twisted
paulb@460 322
Web2 will just copy its predecessors and provide a similarly limited API.
paulb@460 323
Perhaps the Twisted support needs to resemble the CGI support much more when
paulb@460 324
handling fields.
paulb@460 325
paulb@308 326
JythonServlet libraries need to be configured using sys.add_package when
paulb@308 327
these do not feature in the compiled-in list. Adding such configuration to
paulb@308 328
the handler may be most appropriate (since the web.xml file can be too
paulb@308 329
arcane), but this needs testing.
paulb@308 330
paulb@580 331
The algorithm employed in the WebStack.Helpers.Auth.get_token function
paulb@580 332
should be reviewed and improved for better security.
paulb@580 333
paulb@308 334
(Important)
paulb@308 335
paulb@363 336
Field access needs testing, especially for anything using the
paulb@363 337
cgi.FieldStorage class, and the way file uploads are exposed should be
paulb@363 338
reviewed (currently the meta-data is not exposed). The acquisition of fields
paulb@363 339
from specific sources should be tested with different request methods - some
paulb@363 340
frameworks provide path fields in the body fields dictionary, others (eg.
paulb@363 341
Zope) change the fields exposed depending on request method.
paulb@248 342
paulb@363 343
Interpretation of path field encodings needs to be verified. Currently,
paulb@363 344
stray path fields are handled (eg. in WebStack.Helpers.Request) as being
paulb@363 345
ISO-8859-1, but it might be the case that some such fields might be
paulb@438 346
submitted as UTF-8. The decode_path method on Transaction does do much of the
paulb@460 347
work that is likely to be required, however. Still, a good policy for decoding
paulb@460 348
path fields, reducing the number of times one might specify the encoding in
paulb@460 349
various method calls, may be important.
paulb@438 350
paulb@438 351
An interesting test of encodings is to introduce things like the following to
paulb@438 352
the path info and query string sections of the URL: %25F0?%E6=%F8&%25F0=%F8
paulb@438 353
This should produce the following decoded result: %F0?æ=ø&%F0=ø
paulb@438 354
(The above needs to be read in ISO-8859-1 or ISO-8859-15.)
paulb@102 355
paulb@102 356
Cookie objects need defining strictly, especially since the standard library
paulb@363 357
Cookie object behaves differently to mod_python (and possibly Webware)
paulb@363 358
Cookie objects. Moreover, the set_cookie_value method needs to provide
paulb@363 359
access to the usual cookie parameters as supported by the frameworks. The
paulb@363 360
standard library Cookie module has issues with Unicode cookie names (and
paulb@363 361
possibly values) - this is worked around, but it would be best to resolve
paulb@363 362
this comprehensively.
paulb@90 363
paulb@363 364
UTF-16 (and possibly other encodings) causes problems with HTML form data
paulb@363 365
sent in POST requests using the application/x-www-form-urlencoded content
paulb@363 366
type.  This should be reviewed at a later date when proper standardisation
paulb@363 367
has taken place.
paulb@218 368
paulb@239 369
Session support, especially through WebStack.Helpers.Session, should be
paulb@248 370
reviewed and be made compatible with non-cookie mechanisms.
paulb@248 371
paulb@514 372
Locking in the session support and in DirectoryRepository should be improved.
paulb@514 373
paulb@248 374
HeaderValue objects should be employed more extensively. Thus, the header
paulb@469 375
access methods may need to change their behaviour slightly. The get_headers
paulb@469 376
method should potentially return a list for each item in the dictionary.
paulb@248 377
paulb@304 378
WSGI support could demand that a special "end of headers" method be
paulb@304 379
introduced into WebStack, thus making response output more efficient (and
paulb@304 380
probably also for other frameworks, too).
paulb@304 381
paulb@336 382
Investigate proper support for HEAD, OPTIONS and other request methods.
paulb@336 383
paulb@438 384
Consider packages for different operating systems (other than Debian).
paulb@365 385
paulb@542 386
Investigate cStringIO usage.
paulb@542 387
paulb@355 388
The location of deployed applications in the filesystem should be exposed to
paulb@355 389
those applications. (This is actually available in the __file__ module
paulb@580 390
variable.) A resource could be provided to record the "root" path and added to
paulb@617 391
a resource hierarchy or site map. Note that PathSelector records the "root"
paulb@617 392
path, although it is not automatically deployed.
paulb@580 393
paulb@580 394
(Completed/rejected)
paulb@355 395
paulb@355 396
Path information should be consistent across all frameworks, and the "path
paulb@355 397
info" value should be meaningful. (This should now be correct.)
paulb@355 398
paulb@460 399
Investigate the nicer functions in the cgi module, discarding the "magic"
paulb@460 400
stuff like FieldStorage. (These nicer functions are used by projects like
paulb@460 401
Twisted - as of 1.3.0 at least - and do not give the necessary information we
paulb@460 402
require.)
paulb@460 403
paulb@159 404
Release Procedures
paulb@159 405
------------------
paulb@159 406
paulb@159 407
Update the WebStack/__init__.py __version__ attribute.
paulb@329 408
Change the version number and package filename/directory in the documentation.
paulb@332 409
Change code examples in the documentation if appropriate.
paulb@159 410
Update the release notes (see above).
paulb@159 411
Check the setup.py file and ensure that all package directories are mentioned.
paulb@417 412
Check the release information in the PKG-INFO file and in the package
paulb@417 413
changelog (and other files).
paulb@253 414
Tag, export.
paulb@247 415
Generate the PyServlet classes.
paulb@355 416
Generate the API documentation.
paulb@384 417
Remove generated .pyc files: rm `find . -name "*.pyc"`
paulb@253 418
Archive, upload.
paulb@367 419
Upload the introductory documentation.
paulb@678 420
Update PyPI, PythonInfo Wiki entries.
paulb@355 421
paulb@705 422
Generating the PyServlet Classes
paulb@705 423
--------------------------------
paulb@705 424
paulb@705 425
In order to generate the PyServlet classes, it is necessary to run the
paulb@705 426
supplied script:
paulb@705 427
paulb@705 428
./tools/JavaServlet/compile.sh
paulb@705 429
paulb@705 430
This produces Java classes and a .jar file for use by WebStack applications
paulb@705 431
running on the Java platform.
paulb@705 432
paulb@355 433
Generating the API Documentation
paulb@355 434
--------------------------------
paulb@355 435
paulb@363 436
In order to prepare the API documentation, it is necessary to generate some
paulb@363 437
Web pages from the Python source code. For this, the epydoc application must
paulb@475 438
be available on your system. Then, inside the distribution directory, run the
paulb@355 439
apidocs.sh tool script as follows:
paulb@355 440
paulb@355 441
./tools/apidocs.sh
paulb@355 442
paulb@355 443
Some warnings may be generated by the script, but the result should be a new
paulb@475 444
apidocs directory within the distribution directory.
paulb@472 445
paulb@472 446
Making Packages
paulb@472 447
---------------
paulb@472 448
paulb@485 449
To make Debian-based packages:
paulb@472 450
paulb@485 451
  1. Create new package directories under packages if necessary.
paulb@474 452
  2. Make a symbolic link in the distribution's root directory to keep the
paulb@649 453
     Debian tools happy. For example:
paulb@472 454
paulb@485 455
     ln -s packages/ubuntu-hoary/python2.4-webstack/debian/
paulb@649 456
     ln -s packages/ubuntu-feisty/python-webstack/debian/
paulb@472 457
paulb@474 458
  3. Run the package builder:
paulb@472 459
paulb@474 460
     dpkg-buildpackage -rfakeroot
paulb@472 461
paulb@474 462
  4. Locate and tidy up the packages in the parent directory of the
paulb@474 463
     distribution's root directory.