paulb@104 | 1 | Introduction
|
paulb@104 | 2 | ------------
|
paulb@76 | 3 |
|
paulb@104 | 4 | XSLTools is a collection of modules and packages facilitating the development
|
paulb@104 | 5 | of applications based on XML, XSL stylesheets and transformations, notably Web
|
paulb@104 | 6 | applications involving complicated Web forms potentially consisting of
|
paulb@104 | 7 | editable hierarchical structures and potentially involving "live" or "in-page"
|
paulb@104 | 8 | dynamic updates to portions of those Web forms.
|
paulb@28 | 9 |
|
paulb@109 | 10 | Quick Start
|
paulb@109 | 11 | -----------
|
paulb@109 | 12 |
|
paulb@109 | 13 | Try running the demo:
|
paulb@109 | 14 |
|
paulb@109 | 15 | python tools/demo.py
|
paulb@109 | 16 |
|
paulb@109 | 17 | An introductory guide to creating applications can be found in the docs
|
paulb@109 | 18 | directory - see docs/index.html for the start page.
|
paulb@109 | 19 |
|
paulb@109 | 20 | Contact, Copyright and Licence Information
|
paulb@109 | 21 | ------------------------------------------
|
paulb@109 | 22 |
|
paulb@109 | 23 | The current Web page for XSLTools at the time of release is:
|
paulb@109 | 24 |
|
paulb@109 | 25 | http://www.boddie.org.uk/python/XSLTools.html
|
paulb@109 | 26 |
|
paulb@109 | 27 | Copyright and licence information can be found in the docs directory - see
|
paulb@607 | 28 | docs/COPYING.txt, docs/lgpl-3.0.txt, docs/gpl-3.0.txt,
|
paulb@607 | 29 | docs/LICENCE-Sarissa-lgpl.txt and docs/LICENCE-Sarissa-gpl.txt for more
|
paulb@194 | 30 | information.
|
paulb@109 | 31 |
|
paulb@618 | 32 | Additional Software
|
paulb@618 | 33 | -------------------
|
paulb@618 | 34 |
|
paulb@618 | 35 | The XSLTools examples make use of sarissa.js from the Sarissa distribution,
|
paulb@618 | 36 | release 0.9.8.1. Copies of this file are found in the Resources/scripts
|
paulb@618 | 37 | directory within each example's package.
|
paulb@618 | 38 |
|
paulb@104 | 39 | Dependencies
|
paulb@104 | 40 | ------------
|
paulb@104 | 41 |
|
paulb@104 | 42 | XSLTools has the following basic dependencies:
|
paulb@28 | 43 |
|
paulb@584 | 44 | Packages Release Information
|
paulb@584 | 45 | -------- -------------------
|
paulb@104 | 46 |
|
paul@669 | 47 | libxml2dom 0.5
|
paulb@584 | 48 | libxml2 and libxslt Some combinations may not be reliable!
|
paulb@584 | 49 | Tested with libxml2 2.6.17 and libxslt 1.1.12
|
paulb@584 | 50 | Tested with libxml2 2.6.27 and libxslt 1.1.20
|
paulb@605 | 51 | libxslt 1.1.17 should be avoided
|
paulb@28 | 52 |
|
paulb@645 | 53 | The example Web applications require WebStack (release 1.3 or later).
|
paulb@329 | 54 | The example PyQt applications have been tested with PyQt 3.15.
|
paulb@104 | 55 |
|
paulb@645 | 56 | New in XSLTools 0.6 (Changes since XSLTools 0.5)
|
paulb@645 | 57 | ------------------------------------------------
|
paulb@631 | 58 |
|
paulb@636 | 59 | * Added modular request handling methods to XSLFormsResource, altering some
|
paulb@636 | 60 | of the examples to demonstrate the usage and overriding of these methods
|
paulb@636 | 61 | in preference to overriding respond_to_form.
|
paulb@639 | 62 | * Added methods to the Form class to support modular request handling.
|
paulb@631 | 63 | * Added information about XSLT extension function usage to the advanced
|
paulb@631 | 64 | template design document, linking to the housekeeping annotations section
|
paulb@631 | 65 | of the template attribute reference guide.
|
paulb@653 | 66 | * Observed changes in WebStack 1.3 and introduced default_charset usage in
|
paulb@653 | 67 | the WebResources and PyQtWebResources modules.
|
paulb@653 | 68 | * Added experimental OpenID support; improved the authentication resources
|
paulb@653 | 69 | and mechanisms.
|
paulb@664 | 70 | * Fixed the LoginResource to work correctly when detecting the protected
|
paulb@664 | 71 | application's location.
|
paulb@660 | 72 | * NOTE: Need to add persistence for OpenID associations.
|
paulb@660 | 73 | * Added XInclude support in templates (requires libxml2dom 0.4.6 or later).
|
paulb@631 | 74 |
|
paulb@621 | 75 | New in XSLTools 0.5 (Changes since XSLTools 0.4.6)
|
paulb@621 | 76 | --------------------------------------------------
|
paulb@609 | 77 |
|
paulb@621 | 78 | * Renamed template:id to template:section in order to get around problems
|
paulb@621 | 79 | and potential future problems with browsers (such as Konqueror 3.5.6)
|
paulb@621 | 80 | which get confused loading documents with multiple id attributes, even if
|
paulb@621 | 81 | only one is unprefixed. WARNING! This change is not backwards compatible.
|
paulb@609 | 82 | * Added Ubuntu Feisty (7.04) package support.
|
paulb@614 | 83 | * Tidied the documentation HTML.
|
paulb@609 | 84 |
|
paulb@599 | 85 | New in XSLTools 0.4.6 (Changes since XSLTools 0.4.5)
|
paulb@599 | 86 | ----------------------------------------------------
|
paulb@599 | 87 |
|
paulb@599 | 88 | * Improved the Login module, enabling the VerySimpleWithLogin example for
|
paulb@599 | 89 | various frameworks.
|
paulb@600 | 90 | * Relicensed under the LGPL version 3 or later.
|
paulb@601 | 91 | * Upgraded to Sarissa 0.9.7.8 (compatible with LGPL/GPL version 3), removing
|
paulb@601 | 92 | a test around DOMParser so that Konqueror 3.4.0 is still supported.
|
paulb@599 | 93 |
|
paulb@569 | 94 | New in XSLTools 0.4.5 (Changes since XSLTools 0.4.4)
|
paulb@569 | 95 | ----------------------------------------------------
|
paulb@569 | 96 |
|
paulb@569 | 97 | * Fixed the result of transformations in XSLOutput: proper document nodes
|
paulb@569 | 98 | are now produced.
|
paulb@578 | 99 | * Added an XSLForms.Resources.Login module which provides resources to
|
paulb@578 | 100 | support login screens and redirects.
|
paulb@579 | 101 | * Fixed newlines in the attributes created from fields in XSLForms: CR
|
paulb@579 | 102 | characters are no longer included since this caused the doubling up of
|
paulb@579 | 103 | newlines in Firefox.
|
paulb@569 | 104 |
|
paulb@554 | 105 | New in XSLTools 0.4.4 (Changes since XSLTools 0.4.3)
|
paulb@554 | 106 | ----------------------------------------------------
|
paulb@554 | 107 |
|
paulb@562 | 108 | * Fixed translation selection for the template:i18n annotation attribute,
|
paulb@562 | 109 | not just for the template:i18n extension function - more apologies for
|
paulb@562 | 110 | resulting output changes!
|
paulb@554 | 111 | * Improved the template fixing stylesheet and added some documentation for
|
paulb@554 | 112 | the script and the related expr-prefix attribute.
|
paulb@559 | 113 | * Introduced WebStack 1.2.2 EncodingSelector and encoding changes.
|
paulb@562 | 114 | * Added docstring and return value for the write_month_to_document function
|
paulb@562 | 115 | in XSLTools.XMLCalendar.
|
paulb@554 | 116 |
|
paulb@544 | 117 | New in XSLTools 0.4.3 (Changes since XSLTools 0.4.2)
|
paulb@544 | 118 | ----------------------------------------------------
|
paulb@544 | 119 |
|
paulb@544 | 120 | * Fixed translation selection when an unsupported locale is specified,
|
paulb@544 | 121 | choosing the first locale as the default (rather than exposing the values
|
paulb@549 | 122 | themselves as translations). Note that this is an unfortunate and subtle
|
paulb@549 | 123 | change which may affect application output - apologies are hereby offered!
|
paulb@544 | 124 |
|
paulb@532 | 125 | New in XSLTools 0.4.2 (Changes since XSLTools 0.4.1)
|
paulb@532 | 126 | ----------------------------------------------------
|
paulb@532 | 127 |
|
paulb@532 | 128 | * Added a content type check in the XSLFormsResource class, permitting
|
paulb@532 | 129 | non-form-based resources to access the raw request data, rather than have
|
paulb@532 | 130 | the data processed unsuccessfully and consequently discarded.
|
paulb@532 | 131 | * Added a script and a function to fix template namespaces after editing in
|
paulb@532 | 132 | a careless editor.
|
paulb@538 | 133 | * Changed libxml2mod and libxsltmod import details to try libxmlmods -
|
paulb@538 | 134 | suggested by Lucian Wischik for libxml2dom.
|
paulb@532 | 135 |
|
paulb@524 | 136 | New in XSLTools 0.4.1 (Changes since XSLTools 0.4)
|
paulb@524 | 137 | --------------------------------------------------
|
paulb@524 | 138 |
|
paulb@524 | 139 | * Made translations specified using the template:i18n annotation take
|
paulb@524 | 140 | priority over template:value annotations.
|
paulb@524 | 141 | * Added expression-based template:i18n annotations, and provided fallback
|
paulb@524 | 142 | output for such translations based on the value of the evaluated
|
paulb@524 | 143 | expression.
|
paulb@524 | 144 |
|
paulb@464 | 145 | New in XSLTools 0.4 (Changes since XSLTools 0.3.1)
|
paulb@464 | 146 | --------------------------------------------------
|
paulb@461 | 147 |
|
paulb@478 | 148 | * Changed the preparation of templates to produce rule-based output
|
paulb@504 | 149 | stylesheets, thus permitting recursive templates. This requires an extra
|
paulb@504 | 150 | expr-prefix annotation to be used in certain kinds of templates.
|
paulb@492 | 151 | * Added a recursive template example application.
|
paulb@478 | 152 | * Changed fragment production to use original template documents instead of
|
paulb@478 | 153 | output stylesheets.
|
paulb@508 | 154 | * Changed the in_page_resources attribute to provide the output identifier,
|
paulb@508 | 155 | thus changing the prepare_fragment method in Web resources so that only
|
paulb@508 | 156 | the fragment identifier needs to be supplied.
|
paulb@508 | 157 | * Added the XSLForms.Resources.WebResources.prepare_resources method for the
|
paulb@508 | 158 | preparation of initialiser and output stylesheets before an application is
|
paulb@508 | 159 | run.
|
paulb@478 | 160 | * Changed selectors to not automatically create elements in the form data
|
paulb@478 | 161 | document unless requested to do so. Introduced a Form.get_selector
|
paulb@478 | 162 | method in XSLForms.Fields.
|
paulb@519 | 163 | * Permitted the creation of hierarchies of elements in
|
paulb@519 | 164 | XSLForms.Utils.add_elements.
|
paulb@461 | 165 | * Introduced dynamic parameter evaluation for multiple-choice fields in
|
paulb@461 | 166 | order to support sources of multiple-choice values which reside in the
|
paulb@461 | 167 | form data document itself.
|
paulb@472 | 168 | * Added the FixNamespace.xsl stylesheet to correct documents saved by HTML
|
paulb@472 | 169 | editors which strip namespace prefixes.
|
paulb@501 | 170 | * Fixed filesystem encoding issues in the Candidate example; fixed language
|
paulb@501 | 171 | preference access in the Configurator and VerySimple examples.
|
paulb@508 | 172 | * Changed the BaseHTTPRequestHandler version of the Candidate example to
|
paulb@508 | 173 | store data in a subdirectory of the current working directory, thus
|
paulb@508 | 174 | allowing the demonstration application to work after package installation.
|
paulb@461 | 175 |
|
paulb@464 | 176 | New in XSLTools 0.3.1 (Changes since XSLTools 0.3)
|
paulb@464 | 177 | --------------------------------------------------
|
paulb@464 | 178 |
|
paulb@464 | 179 | * Fixed copyright and licensing information.
|
paulb@464 | 180 |
|
paulb@424 | 181 | New in XSLTools 0.3 (Changes since XSLTools 0.2)
|
paulb@424 | 182 | ------------------------------------------------
|
paulb@424 | 183 |
|
paulb@424 | 184 | * Introduced copying of multiple-choice value element contents so that
|
paulb@424 | 185 | option element labels can differ from the underlying values.
|
paulb@447 | 186 | * Added internationalisation support, providing the template:i18n annotation
|
paulb@447 | 187 | and the template:i18n extension function.
|
paulb@447 | 188 | * Updated the documentation to cover the above new features.
|
paulb@449 | 189 | * Fixed non-GET/POST request method handling in WebResources.
|
paulb@424 | 190 | * Added the xslform_preparemacro.py script.
|
paulb@453 | 191 | * Added an experimental template:range extension function.
|
paulb@424 | 192 |
|
paulb@190 | 193 | New in XSLTools 0.2 (Changes since XSLTools 0.1)
|
paulb@190 | 194 | ------------------------------------------------
|
paulb@190 | 195 |
|
paulb@231 | 196 | * Made a new XSLTools package and moved XSLOutput into it.
|
paulb@252 | 197 | * Improved serialisation of transformation results so that output options
|
paulb@252 | 198 | are observed (in some cases, at least).
|
paulb@252 | 199 | * Fixed stylesheet and reference document paths so that libxslt should not
|
paulb@252 | 200 | now become confused by ambiguous relative paths.
|
paulb@286 | 201 | * Added expression parameters to XSLOutput.Processor so that in-document
|
paulb@286 | 202 | data can be used to, for example, initialise multiple-choice field values.
|
paulb@252 | 203 | * Added input/initialiser support so that input documents can be tidied or
|
paulb@252 | 204 | initialised using information from the template.
|
paulb@286 | 205 | * Added template:init for use with template:element in XSLForms to control
|
paulb@286 | 206 | element initialisation where necessary.
|
paulb@252 | 207 | * Added special high-level "macro" attributes (eg. template:attribute-field)
|
paulb@252 | 208 | which should make templates easier to write and maintain.
|
paulb@286 | 209 | * Added template:if to XSLForms, providing conditional output of annotated
|
paulb@286 | 210 | elements.
|
paulb@290 | 211 | * Added set_document to XSLForms.Fields.Form.
|
paulb@400 | 212 | * Added prepare_parameters to the XSLFormsResource class in the
|
paulb@400 | 213 | XSLForms.Resources.WebResources module.
|
paulb@420 | 214 | * Added element-path, url-encode and choice XSLForms extension functions.
|
paulb@286 | 215 | * Improved Unicode support in the XSLForms extension functions.
|
paulb@231 | 216 | * Changed in-page requests to contain proper POST data.
|
paulb@422 | 217 | * Fixed checkbox and radiobutton value detection in XSLForms.js.
|
paulb@252 | 218 | * Updated the code to work with WebStack 1.0 changes and adopted the
|
paulb@252 | 219 | new-style WebStack demonstration mechanism.
|
paulb@286 | 220 | * Added XMLCalendar and XMLTable (to the XSLTools package).
|
paulb@231 | 221 | * Added a dictionary (or word lookup) example application.
|
paulb@286 | 222 | * Added a job candidate profile (or CV editor) example application.
|
paulb@297 | 223 | * Added a template attribute reference and an XSLFormsResource guide to the
|
paulb@297 | 224 | documentation.
|
paulb@392 | 225 | * Added Debian package support (specifically Ubuntu package support).
|
paulb@231 | 226 | * Added missing COPYING.txt file.
|
paulb@231 | 227 | * Renamed the scripts to avoid naming issues in system-wide installations.
|
paulb@329 | 228 | * Added a PyQt example based on the system configurator example, with the
|
paulb@392 | 229 | form prepared in Qt Designer. This example runs in PyQt and in a Web
|
paulb@392 | 230 | environment without any changes to the application code. In-page updates
|
paulb@392 | 231 | are currently not implemented in the Web version, however.
|
paulb@190 | 232 |
|
paulb@104 | 233 | Notes on In-Page Update Functionality
|
paulb@104 | 234 | -------------------------------------
|
paulb@28 | 235 |
|
paulb@185 | 236 | Special note #1: Konqueror seems in certain cases to remember replaced form
|
paulb@185 | 237 | content (when replaceChild is used to replace regions of the page which
|
paulb@185 | 238 | include form elements). This causes the browser to believe that more form
|
paulb@185 | 239 | fields exist on the page than actually do so, and subsequent form submissions
|
paulb@185 | 240 | thus include the values of such removed fields. A special hack is in place to
|
paulb@185 | 241 | disable form fields by changing their names, thus causing Konqueror to not
|
paulb@185 | 242 | associate such fields with the real, active fields; this hack does not seem to
|
paulb@185 | 243 | cause problems for Mozilla. This needs some investigation to determine in
|
paulb@185 | 244 | exactly which circumstances the problem arises.
|
paulb@185 | 245 |
|
paulb@185 | 246 | Special note #2: Konqueror also seems to crash if asked to find elements using
|
paulb@185 | 247 | an empty 'id' attribute string. This needs some investigation to see if it
|
paulb@185 | 248 | really is the getElementById call that causes the crash.
|
paulb@125 | 249 |
|
paulb@221 | 250 | Special note #3: Konqueror's XMLHttpRequest seems to append null characters to
|
paulb@221 | 251 | the end of field values. Attempting to prune them before the request is sent
|
paulb@221 | 252 | fails with a function like the following:
|
paulb@221 | 253 |
|
paulb@221 | 254 | function fixValue(fieldValue) {
|
paulb@221 | 255 | if (fieldValue.length == 0) {
|
paulb@221 | 256 | return fieldValue;
|
paulb@221 | 257 | } else if (fieldValue[fieldValue.length - 1] == '\0') {
|
paulb@221 | 258 | return fieldValue.substr(0, fieldValue.length - 1);
|
paulb@221 | 259 | } else {
|
paulb@221 | 260 | return fieldValue;
|
paulb@221 | 261 | }
|
paulb@221 | 262 | }
|
paulb@221 | 263 |
|
paulb@221 | 264 | This may be because it is the entire message that is terminated with the null
|
paulb@221 | 265 | character, and that this happens only upon sending the message. Consequently,
|
paulb@221 | 266 | some frameworks (notably mod_python) do not support in-page functionality when
|
paulb@221 | 267 | used from Konqueror.
|
paulb@207 | 268 |
|
paulb@104 | 269 | Various browsers (eg. Mozilla/Firefox, Konqueror) will not allow the
|
paulb@185 | 270 | XMLHttpRequest in-page updates to function unless the URL used in the
|
paulb@185 | 271 | requestUpdate JavaScript function is compatible with the URL at which the
|
paulb@185 | 272 | browser finds the application. Currently, relative URLs are in use to avoid
|
paulb@185 | 273 | this issue of compatibility, but should an absolute URL be deduced using the
|
paulb@185 | 274 | WebStack API and then used, it may be possible that the values returned by
|
paulb@185 | 275 | that API do not match the actual addresses entered into the address bar of the
|
paulb@185 | 276 | browser.
|
paulb@28 | 277 |
|
paulb@104 | 278 | To check the behaviour of the applications, it is possible to view the
|
paulb@104 | 279 | document source of the pages served by applications and to verify that the
|
paulb@185 | 280 | URLs mentioned in the JavaScript function calls (to 'requestUpdate') either be
|
paulb@185 | 281 | a relative link or involve a URL similar to that which appears in the
|
paulb@185 | 282 | browser's address bar. In some environments, the use of 'localhost' addresses
|
paulb@185 | 283 | often confuses the browser and server; one workaround is to use real host
|
paulb@185 | 284 | names or addresses instead of 'localhost'.
|
paulb@155 | 285 |
|
paulb@166 | 286 | Choosing an element-path:
|
paulb@166 | 287 |
|
paulb@166 | 288 | When specifying the "context" of the in-page update, one must imagine which
|
paulb@664 | 289 | element the template fragment should operate within. If the template:section
|
paulb@166 | 290 | attribute marks a particular section, then the element-path should be a path
|
paulb@166 | 291 | to the applicable context element for that section in the complete template
|
paulb@166 | 292 | document. Note that if a template:element attribute appears on the same
|
paulb@664 | 293 | element as the template:section attribute then the element-path should refer
|
paulb@664 | 294 | to the element specified in the template:element attribute.
|
paulb@166 | 295 |
|
paulb@664 | 296 | Choosing where to put template:attribute, template:section and id:
|
paulb@166 | 297 |
|
paulb@166 | 298 | When specifying the extent of a template fragment, one must be sure not to put
|
paulb@664 | 299 | the template:section attribute on the same element as a template:attribute
|
paulb@166 | 300 | annotation; otherwise, the generated code will be improperly extracted as a
|
paulb@166 | 301 | fragment producing two versions of the element - one for when the specified
|
paulb@166 | 302 | attribute is present, and one for when it is not present. Generally,
|
paulb@664 | 303 | template:section and id can be placed on the same node, however.
|
paulb@173 | 304 |
|
paulb@173 | 305 | Stable element ordering and element-path:
|
paulb@173 | 306 |
|
paulb@173 | 307 | Within the element-path, the numbering of the elements will start at 1.
|
paulb@173 | 308 | Therefore it is vital to choose a region of the form data structure with the
|
paulb@173 | 309 | element-path which is isolated from surrounding elements whose positions would
|
paulb@173 | 310 | otherwise be dependent on a stable ordering of elements, and whose processing
|
paulb@173 | 311 | would be disrupted if some new elements suddenly appeared claiming the same
|
paulb@173 | 312 | positions in the document. For example:
|
paulb@173 | 313 |
|
paulb@173 | 314 | <item value=""> .../item$1/value
|
paulb@173 | 315 | <type value=""/> .../item$1/type$1/value
|
paulb@173 | 316 | <comment value=""/> .../item$1/comment$2/value
|
paulb@173 | 317 | </item>
|
paulb@173 | 318 |
|
paulb@173 | 319 | In-page update...
|
paulb@173 | 320 |
|
paulb@173 | 321 | <comment value=""/> .../item$1/comment$1/value
|
paulb@173 | 322 |
|
paulb@173 | 323 | Notes on XSL
|
paulb@173 | 324 | ------------
|
paulb@173 | 325 |
|
paulb@173 | 326 | libxslt seems to be quite liberal on the definition of runtime parameters, in
|
paulb@173 | 327 | that there is no apparent need to explicitly declare the corresponding global
|
paulb@173 | 328 | variables in stylesheets. Whilst this is nice, we may eventually need to
|
paulb@173 | 329 | detect such variables and add them in the preparation process.
|
paulb@184 | 330 |
|
paulb@184 | 331 | Release Procedures
|
paulb@184 | 332 | ------------------
|
paulb@184 | 333 |
|
paulb@201 | 334 | Update the XSLTools/__init__.py and XSLForms/__init__.py __version__
|
paulb@201 | 335 | attributes.
|
paulb@184 | 336 | Change the version number and package filename/directory in the documentation.
|
paulb@184 | 337 | Change code examples in the documentation if appropriate.
|
paulb@184 | 338 | Update the release notes (see above).
|
paulb@184 | 339 | Check the setup.py file and ensure that all package directories are mentioned.
|
paulb@207 | 340 | Check the release information in the PKG-INFO file and in the package
|
paulb@207 | 341 | changelog (and other files).
|
paulb@184 | 342 | Tag, export.
|
paulb@508 | 343 | Generate the example resources.
|
paulb@184 | 344 | Generate the API documentation.
|
paulb@636 | 345 | Remove generated .pyc files: find . -name "*.pyc" | xargs rm
|
paulb@184 | 346 | Archive, upload.
|
paulb@184 | 347 | Upload the introductory documentation.
|
paulb@184 | 348 | Update PyPI, PythonInfo Wiki, Vaults of Parnassus entries.
|
paulb@184 | 349 |
|
paulb@508 | 350 | Generating the Example Resources
|
paulb@508 | 351 | --------------------------------
|
paulb@508 | 352 |
|
paulb@508 | 353 | In order to prepare the example resources, the prepare_demo.py script must be
|
paulb@508 | 354 | run as follows:
|
paulb@508 | 355 |
|
paulb@508 | 356 | python tools/prepare_demo.py
|
paulb@508 | 357 |
|
paulb@508 | 358 | This will ensure that all initialiser and output stylesheets are created and
|
paulb@508 | 359 | are thus installed by packages.
|
paulb@508 | 360 |
|
paulb@184 | 361 | Generating the API Documentation
|
paulb@184 | 362 | --------------------------------
|
paulb@184 | 363 |
|
paulb@184 | 364 | In order to prepare the API documentation, it is necessary to generate some
|
paulb@184 | 365 | Web pages from the Python source code. For this, the epydoc application must
|
paulb@231 | 366 | be available on your system. Then, inside the distribution directory, run the
|
paulb@184 | 367 | apidocs.sh tool script as follows:
|
paulb@184 | 368 |
|
paulb@184 | 369 | ./tools/apidocs.sh
|
paulb@184 | 370 |
|
paulb@184 | 371 | Some warnings may be generated by the script, but the result should be a new
|
paulb@231 | 372 | apidocs directory within the distribution directory.
|
paulb@218 | 373 |
|
paulb@218 | 374 | Making Packages
|
paulb@218 | 375 | ---------------
|
paulb@218 | 376 |
|
paulb@312 | 377 | To make Debian-based packages:
|
paulb@218 | 378 |
|
paulb@312 | 379 | 1. Create new package directories under packages if necessary.
|
paulb@230 | 380 | 2. Make a symbolic link in the distribution's root directory to keep the
|
paulb@636 | 381 | Debian tools happy. Try one of the following:
|
paulb@218 | 382 |
|
paulb@312 | 383 | ln -s packages/ubuntu-hoary/python2.4-xsltools/debian/
|
paulb@636 | 384 | ln -s packages/ubuntu-feisty/python-xsltools/debian/
|
paulb@218 | 385 |
|
paulb@230 | 386 | 3. Run the package builder:
|
paulb@218 | 387 |
|
paulb@230 | 388 | dpkg-buildpackage -rfakeroot
|
paulb@218 | 389 |
|
paulb@230 | 390 | 4. Locate and tidy up the packages in the parent directory of the
|
paulb@230 | 391 | distribution's root directory.
|