Easybuild Documentation Release 20150714.01

Total Page:16

File Type:pdf, Size:1020Kb

Easybuild Documentation Release 20150714.01 EasyBuild Documentation Release 20150714.01 Ghent University Tue, 14 Jul 2015 12:47:12 Contents 1 Introductory topics 3 1.1 What is EasyBuild?.........................................3 1.2 Concepts and terminology......................................4 1.3 Typical workflow example: building and installing WRF......................6 2 Getting started 9 2.1 Installing EasyBuild.........................................9 2.2 Configuring EasyBuild........................................ 16 3 Basic usage topics 27 3.1 Using the EasyBuild command line................................. 27 3.2 Writing easyconfig files: the basics................................. 36 3.3 Understanding EasyBuild logs.................................... 42 4 Advanced usage topics 45 4.1 Experimental features........................................ 45 4.2 Including additional Python modules (--include-*)...................... 45 4.3 Integration with GitHub....................................... 47 4.4 Manipulating dependencies..................................... 49 4.5 Packaging support.......................................... 50 4.6 Partial installations.......................................... 53 4.7 Submitting jobs using --job .................................... 57 4.8 Using external modules....................................... 63 5 Other topics 65 5.1 Code style.............................................. 65 5.2 Unit tests............................................... 65 5.3 Useful scripts............................................. 69 5.4 Deprecated functionality....................................... 71 5.5 Removed functionality........................................ 73 6 Getting help 81 7 Lists and tables 83 8 Appendices 85 8.1 Changelog for EasyBuild documentation.............................. 85 8.2 Configuration Legacy........................................ 88 8.3 Available easyconfig parameters................................... 89 8.4 Available easyconfig parameters for EB_WRF........................... 91 8.5 Getting help, --help ........................................ 93 8.6 List of easyblocks.......................................... 98 8.7 List of known toolchains....................................... 101 i 8.8 Alternative installation methods................................... 102 8.9 Installing environment modules without root permissions...................... 105 8.10 Installing Lmod without root permissions.............................. 106 8.11 Useful links.............................................. 107 8.12 Sphinx and Read the Docs reference documents online....................... 107 8.13 Third party Sphinx examples, themes and possible extensions................... 107 8.14 EasyBuild release notes....................................... 108 ii EasyBuild Documentation, Release 20150714.01 Welcome to the documentation of EasyBuild, a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way. This documentation is intended for EasyBuild version 2.2.0dev, and was last rebuilt on Tue, 14 Jul 2015 12:47:11. Contents 1 EasyBuild Documentation, Release 20150714.01 2 Contents CHAPTER 1 Introductory topics 1.1 What is EasyBuild? EasyBuild is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way. It is motivated by the need for a tool that combines the following features: •a flexible framework for building/installing (scientific) software • fully automates software builds • divert from the standard configure / make / make install with custom procedures • allows for easily reproducing previous builds • keep the software build recipes/specifications simple and human-readable • supports co-existence of versions/builds via dedicated installation prefix and module files • enables sharing with the HPC community (win-win situation) • automagic dependency resolution • retain logs for traceability of the build processes Some key features of EasyBuild: • build & install (scientific) software fully autonomously – also interactive installers, code patching, generating module file, ... • easily configurable: config file/environment/command line – including aspects like module naming scheme • thorough logging and archiving (see Understanding EasyBuild logs) – entire build process is logged thoroughly, logs are stored in install directory; – easyconfig file used for build is archived (install directory + file/svn/git repo) • automatic dependency resolution (see Enabling dependency resolution, –robot / -r and –robot-paths) – build entire software stack with a single command, using --robot • building software in parallel • robust and thoroughly tested code base, fully unit-tested before each release • thriving, growing community Take a look at our HUST‘14 workshop paper Modern Scientific Software Management Using EasyBuild and Lmod (download PDF here) and use that as a reference in case you present academic work mentioning EasyBuild. 3 EasyBuild Documentation, Release 20150714.01 1.2 Concepts and terminology EasyBuild consists of a collection of Python modules and packages that interact with each other, dynamically picking up additional Python modules as needed for building and installing a (stack of) software package(s) specified via simple specification files. Or, in EasyBuild terminology: the EasyBuild framework leverages easyblocks to automatically build and install software using particular compiler toolchains, as specified by one or multiple easyconfig files. 1.2.1 EasyBuild framework The EasyBuild framework embodies the core of the tool, providing functionality commonly needed when in- stalling scientific software on HPC systems. For example, it deals with downloading, unpacking and patching of sources, loading module files for dependencies, setting up the build environment, autonomously running (interac- tive) shell commands, creating module files that match the specification files, etc. Included in the framework is an abstract implementation of a software build and install procedure, which is split up into different steps: • unpacking sources • configuration • build • installation • module generation • etc. Most of these steps, i.e., the ones which are generally more-or-less analogous across different software packages, have appropriate (default) implementations. The only exceptions are the configuration, build and installation steps that are purposely left unimplemented (since there is no common procedure for them). Each of the steps can be tweaked and steered via different parameters known to the framework, for which values are either obtained from the provided specification files or set to reasonable default values. See Easyconfig files. In EasyBuild version 2.2.0dev the framework source code consists of about 19000 lines of code, organized across about 125 Python modules in roughly a dozen Python package directories, next to almost 7000 lines of code for tests. This provides some notion of the size of the EasyBuild framework and the amount of supporting function- ality it has to offer. 1.2.2 Easyblocks The implementation of a particular software build and install procedure is done in a Python module, which is aptly referred to as an easyblock. Each easyblock ties in with the framework API by defining (or extending/replacing) one or more of the step func- tions that are part of the abstract procedure used by the EasyBuild framework. Easyblocks typically heavily rely on the supporting functionality provided by the framework, for example for (autonomously) executing (interactive) shell commands and obtaining the command’s output and exit code. A distinction is made between software-specific and generic easyblocks. Software-specific easyblocks implement a build and install procedure which is entirely custom to one particular software package (e.g., WRF), while generic easyblocks implement a procedure using standard tools (e.g., CMake). Since easyblocks are implemented in an object-oriented scheme, the step methods implemented by a particular easyblock can be reused in others via inheritance, enabling code reuse across build procedure implementations. For each software package being built, the EasyBuild framework will determine which easyblock should be used, based on the name of the software package or the value of the easyblock specification parameter. In case an easyblock specification is not provided and no (software-specific) easyblock matching the software name could 4 Chapter 1. Introductory topics EasyBuild Documentation, Release 20150714.01 be found, a fallback mechanism will resort to using the generic ConfigureMake easyblock, which implements the common configure / make / make install procedure. The most recent release of EasyBuild (version 2.2.0dev) includes 139 software-specific easyblocks and 20 generic easyblocks (see also List of easyblocks), providing support for automatically installing a wide range of software packages. Examples range from fairly easy-to-build programs like gzip, other basic tools like compilers, various MPI stacks and commonly used libraries, primarily for x86_64 architecture systems, to large scientific software packages that are notorious for their involved and tedious install procedures, such as: CP2K, NWChem, Open- FOAM, QuantumESPRESSO, WRF. 1.2.3 Toolchains EasyBuild employs so-called compiler toolchains or, simply toolchains for short, which are a major concept in handling the build and installation processes. A typical toolchain consists of
Recommended publications
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • Skyfire: Data-Driven Seed Generation for Fuzzing
    Skyfire: Data-Driven Seed Generation for Fuzzing Junjie Wang, Bihuan Chen†, Lei Wei, and Yang Liu Nanyang Technological University, Singapore {wang1043, bhchen, l.wei, yangliu}@ntu.edu.sg †Corresponding Author Abstract—Programs that take highly-structured files as inputs Syntax Semantic normally process inputs in stages: syntax parsing, semantic check- Features Rules ing, and application execution. Deep bugs are often hidden in the <?xml version="1.0" application execution stage, and it is non-trivial to automatically encoding="utf- pass pass pass 8"?><xsl:stylesheet version="1.0" Syntax Semantic Application xmlns:xsl="http://www.w3 .org/1999/XSL/Transform" generate test inputs to trigger them. Mutation-based fuzzing gen- ><xsl:output xsl:use- √ attribute- Parsing Checking Execution erates test inputs by modifying well-formed seed inputs randomly sets=""/></xsl:stylesheet> Parsing Semantic or heuristically. Most inputs are rejected at the early syntax pars- Inputs Crashes ing stage. Differently, generation-based fuzzing generates inputs Errors Violations from a specification (e.g., grammar). They can quickly carry the ! ! X fuzzing beyond the syntax parsing stage. However, most inputs fail to pass the semantic checking (e.g., violating semantic rules), Fig. 1: Stages of Processing Highly-Structured Inputs which restricts their capability of discovering deep bugs. In this paper, we propose a novel data-driven seed generation approach, named Skyfire, which leverages the knowledge in the analysis [8, 9] that identifies those interesting bytes to mutate, vast amount of existing samples to generate well-distributed seed symbolic execution [10, 11, 12] that relies on constraint solving inputs for fuzzing programs that process highly-structured inputs.
    [Show full text]
  • Cisco ACE XML Gateway Installation and Administration Guide Software Version 5.1
    Cisco ACE XML Gateway Installation and Administration Guide Software Version 5.1 Cisco Systems, Inc. | 170 West Tasman Drive | San Jose, CA 95134-1706 | 800 553-6387 THE SPECIFICATIONS AND INFORMATION REGARDING THE PRODUCTS IN THIS MANUAL ARE SUBJECT TO CHANGE WITHOUT NOTICE. ALL STATEMENTS, INFORMATION, AND RECOMMENDATIONS IN THIS MANUAL ARE BELIEVED TO BE ACCURATE BUT ARE PRESENTED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USERS MUST TAKE FULL RESPONSIBILITY FOR THEIR APPLICATION OF ANY PRODUCTS. THE SOFTWARE LICENSE AND LIMITED WARRANTY FOR THE ACCOMPANYING PRODUCT ARE SET FORTH IN THE INFORMATION PACKET THAT SHIPPED WITH THE PRODUCT AND ARE INCORPORATED HEREIN BY THIS REFERENCE. IF YOU ARE UNABLE TO LOCATE THE SOFTWARE LICENSE OR LIMITED WARRANTY, CONTACT YOUR CISCO REPRESENTATIVE FOR A COPY. NOTWITHSTANDING ANY OTHER WARRANTY HEREIN, ALL DOCUMENT FILES AND SOFTWARE OF THESE SUPPLIERS ARE PROVIDED “AS IS” WITH ALL FAULTS. CISCO AND THE ABOVE-NAMED SUPPLIERS DISCLAIM ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THOSE OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OR ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE.IN NO EVENT SHALL CISCO OR ITS SUPPLIERS BE LIABLE FOR ANY INDIRECT, SPECIAL, CONSEQUENTIAL, OR INCIDENTAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST PROFITS OR LOSS OR DAMAGE TO DATA ARISING OUT OF THE USE OR INABILITY TO USE THIS MANUAL, EVEN IF CISCO OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. CCVP, the Cisco Logo, and the
    [Show full text]
  • Using XSL and Mod Transform in Apache Applications
    Using XSL and mod_transform in Apache Applications Paul Querna [email protected] What is XSL? ● Extensible Stylesheet Language (XSL) ● A family of Standards for XML by the W3C: – XSL Transformations (XSLT) – XML Path Language (Xpath) – XSL Formatting Objects (XSL-FO) XSLT Example <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head><title>A Message</title></head> <body> <h1> <xsl:value-of select="message" /> </h1> </body> </html> </xsl:template> </xsl:stylesheet> Data Source... <?xml version="1.0"?> <message>Hello World</message> Outputs... <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>A Message</title> </head> <body> <h1>Hello World</h1> </body> </html> Why is XSLT good? ● Mixing Data and Presentation is bad! – Keeps Data in a clean XML schema – Keeps the Presentation of this Data separate ● XSLT is XML ● Easy to Extend ● Put HTML or other Markups directly in the XSLT. – Easy for Web Developers to create a template Why is XSLT bad? ● XSLT is XML ● Complicated XSLT can be slow ● Yet another language to learn Where does Apache fit in this? ● Apache 2.0 has Filters! Input Handlers Client Filters (Perl, PHP, Proxy, File) Output Filters mod_include (SSI) mod_transform (XSLT) mod_deflate (gzip) mod_transform ● Uses libXML2 and libXSLT from Gnome – C API ● Doesn't depend on other Gnome Libs. – Provides: ● EXSLT ● XInclude ● XPath ● Xpointer ● ... and more Static XML Files ● AddOutputFilter XSLT .xml ● TransformSet /xsl/foo.xsl – Only if your XML does not specify a XSL File ● TransformOptions +ApacheFS – Uses Sub-Requests to find files – Makes mod_transform work like Apache AxKit Dynamic Sources ● XML Content Types: – AddOutputFilterByType XSLT application/xml ● Controlled Content Types: – AddOutputFilterByType XSLT applicain/needs- xslt ● Works for Proxied Content, PHP, mod_perl, mod_python, CGI, SSI, etc.
    [Show full text]
  • Yocto Project Reference Manual Is for the 1.6.3 Release of the Yocto Project
    Richard Purdie, Linux Foundation <[email protected]> by Richard Purdie Copyright © 2010-2015 Linux Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales [http://creativecommons.org/licenses/by-sa/2.0/uk/] as published by Creative Commons. Manual Notes • This version of the Yocto Project Reference Manual is for the 1.6.3 release of the Yocto Project. To be sure you have the latest version of the manual for this release, go to the Yocto Project documentation page [http://www.yoctoproject.org/documentation] and select the manual from that site. Manuals from the site are more up-to-date than manuals derived from the Yocto Project released TAR files. • If you located this manual through a web search, the version of the manual might not be the one you want (e.g. the search might have returned a manual much older than the Yocto Project version with which you are working). You can see all Yocto Project major releases by visiting the Releases [https://wiki.yoctoproject.org/wiki/Releases] page. If you need a version of this manual for a different Yocto Project release, visit the Yocto Project documentation page [http://www.yoctoproject.org/ documentation] and select the manual set by using the "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE" pull-down menus. • To report any inaccuracies or problems with this manual, send an email to the Yocto Project discussion group at [email protected] or log into the freenode #yocto channel.
    [Show full text]
  • Pipenightdreams Osgcal-Doc Mumudvb Mpg123-Alsa Tbb
    pipenightdreams osgcal-doc mumudvb mpg123-alsa tbb-examples libgammu4-dbg gcc-4.1-doc snort-rules-default davical cutmp3 libevolution5.0-cil aspell-am python-gobject-doc openoffice.org-l10n-mn libc6-xen xserver-xorg trophy-data t38modem pioneers-console libnb-platform10-java libgtkglext1-ruby libboost-wave1.39-dev drgenius bfbtester libchromexvmcpro1 isdnutils-xtools ubuntuone-client openoffice.org2-math openoffice.org-l10n-lt lsb-cxx-ia32 kdeartwork-emoticons-kde4 wmpuzzle trafshow python-plplot lx-gdb link-monitor-applet libscm-dev liblog-agent-logger-perl libccrtp-doc libclass-throwable-perl kde-i18n-csb jack-jconv hamradio-menus coinor-libvol-doc msx-emulator bitbake nabi language-pack-gnome-zh libpaperg popularity-contest xracer-tools xfont-nexus opendrim-lmp-baseserver libvorbisfile-ruby liblinebreak-doc libgfcui-2.0-0c2a-dbg libblacs-mpi-dev dict-freedict-spa-eng blender-ogrexml aspell-da x11-apps openoffice.org-l10n-lv openoffice.org-l10n-nl pnmtopng libodbcinstq1 libhsqldb-java-doc libmono-addins-gui0.2-cil sg3-utils linux-backports-modules-alsa-2.6.31-19-generic yorick-yeti-gsl python-pymssql plasma-widget-cpuload mcpp gpsim-lcd cl-csv libhtml-clean-perl asterisk-dbg apt-dater-dbg libgnome-mag1-dev language-pack-gnome-yo python-crypto svn-autoreleasedeb sugar-terminal-activity mii-diag maria-doc libplexus-component-api-java-doc libhugs-hgl-bundled libchipcard-libgwenhywfar47-plugins libghc6-random-dev freefem3d ezmlm cakephp-scripts aspell-ar ara-byte not+sparc openoffice.org-l10n-nn linux-backports-modules-karmic-generic-pae
    [Show full text]
  • Hackerpraktikum - RUB Nov 2017
    HackerPraktikum - RUB Nov 2017 nearly generic fuzzing of xml-based formats [email protected] @agarri_fr Me ● Hacking stuff since 1998 ● Current skills – Web hacking ● Published about XXE and SSRF – Teaching ● Official Burp Suite Pro training partner – Fuzzing ● Mostly client-side nowadays @agarri_fr Younger Me vs XSLT On the shoulders of giants Project’s goals Design choices Implementation Findings Future work @agarri_fr Younger Me vs XSLT On the shoulders of giants Project’s goals Design choices Implementation Findings Future work @agarri_fr Abuse of features ● Talk "Offensive XSLT" (2011) – No memory corruption, simply abuse the features ● Using hand-crafted XSLT stylesheets – Highly reliable exploits ● Read and create files, execute arbitrary code ● Positive side effect – Produced a large corpus covering most features ● Combining nodes, attributes and namespaces ● <sx:output file="/tmp/pwned">31337</sx:output> @agarri_fr Basic mutation-based fuzzing ● Talk "Dumb-fuzzing XSLT engines" (2013) – Reuse XSLT corpus from 2011 – Mutate with radamsa – Minimalist tools ● Linux: ASan + bash + grep ● Windows: Python + WinAppDbg – Limited depth, found some bugs anyway ● Take-away – Producing XML for fuzzing purposes is hard! @agarri_fr Younger Me vs XSLT On the shoulders of giants Project’s goals Design choices Implementation Findings Future work @agarri_fr Reuse of code fragments ● Aimed at fuzzing of interpreters – Tested on JavaScript, PHP and Ruby ● Christian Holler @mozdeco (2012) – Paper: "Fuzzing with Code Fragments" – Toolbox:
    [Show full text]
  • Red Hat Enterprise Linux 7 7.9 Release Notes
    Red Hat Enterprise Linux 7 7.9 Release Notes Release Notes for Red Hat Enterprise Linux 7.9 Last Updated: 2021-08-17 Red Hat Enterprise Linux 7 7.9 Release Notes Release Notes for Red Hat Enterprise Linux 7.9 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
    [Show full text]
  • Importing Vector Graphics: the Grimport Package for R
    JSS Journal of Statistical Software April 2009, Volume 30, Issue 4. http://www.jstatsoft.org/ Importing Vector Graphics: The grImport Package for R Paul Murrell The University of Auckland Abstract This article describes an approach to importing vector-based graphical images into statistical software as implemented in a package called grImport for the R statistical com- puting environment. This approach assumes that an original image can be transformed into a PostScript format (i.e., the opriginal image is in a standard vector graphics format such as PostScript, PDF, or SVG). The grImport package consists of three components: a function for converting PostScript files to an R-specific XML format; a function for read- ing the XML format into special Picture objects in R; and functions for manipulating and drawing Picture objects. Several examples and applications are presented, including annotating a statistical plot with an imported logo and using imported images as plotting symbols. Keywords: PostScript, R, statistical graphics, XML. 1. Introduction One of the important features of statistical software is the ability to create sophisticated statistical plots of data. Software systems such as the lattice (Sarkar 2008) package in R (R Development Core Team 2008) can produce complex images from a very compact expression. For example, the following code is all that is needed to produce the image in Figure1, which shows density estimates for the number of moves in a set of chess games, broken down by the result of the games. R> xyplot(Freq ~ nmoves | result, data = chess.df, type = "h", + layout = c(1, 3), xlim = c(0, 100)) On the other hand, statistical graphics software does not typically provide support for pro- ducing more free-form or artistic graphical images.
    [Show full text]
  • Documentation of the Plplot Plotting Software I
    Documentation of the PLplot plotting software i Documentation of the PLplot plotting software Documentation of the PLplot plotting software ii Copyright © 1994 Maurice J. LeBrun, Geoffrey Furnish Copyright © 2000-2005 Rafael Laboissière Copyright © 2000-2016 Alan W. Irwin Copyright © 2001-2003 Joao Cardoso Copyright © 2004 Andrew Roach Copyright © 2004-2013 Andrew Ross Copyright © 2004-2016 Arjen Markus Copyright © 2005 Thomas J. Duck Copyright © 2005-2010 Hazen Babcock Copyright © 2008 Werner Smekal Copyright © 2008-2016 Jerry Bauck Copyright © 2009-2014 Hezekiah M. Carty Copyright © 2014-2015 Phil Rosenberg Copyright © 2015 Jim Dishaw Redistribution and use in source (XML DocBook) and “compiled” forms (HTML, PDF, PostScript, DVI, TeXinfo and so forth) with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code (XML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in compiled form (transformed to other DTDs, converted to HTML, PDF, PostScript, and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Important: THIS DOCUMENTATION IS PROVIDED BY THE PLPLOT PROJECT “AS IS” AND ANY EXPRESS OR IM- PLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PLPLOT PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    [Show full text]
  • Tclxml: the Next Generation
    TclXML: The Next Generation Steve Ball [email protected] Zveno http://www.zveno.com Abstract libxslt library for Python, Perl and Ruby. TclXML is a family of packages that together provide com- Since both libraries are in widespread use they are stable, prehensive support for creating and processing XML docu- well-tested and well supported. ments using the Tcl scripting language. The package family is comprised of TclXML (for SAX-style streamed parsing), Tcl applications that process XML documents often need to TclDOM (for in-memory tree manipulation) and TclXSLT navigate the document tree, or otherwise identify some part of (for transformations). a document to process. The W3C XPath language has been designed for this purpose. XPath is part of the XSLT and New developments in each of the packages are discussed, as XML-Query languages, and DOM Level 3 [7] also has sup- well as new XML-based applications that make use of the port for XPath. Addressing a document component using TclXML framework. The most important aspect of these de- XPath is quite succinct, as the following examples show: velopments is its impact on application development and inte- gration. /book /book/chapter //title 1. Introduction //section[sectioninfo]/para The TclXML project [1] encompasses three closely related, Example 1. XPath Expressions but separate packages - TclXML, TclDOM [2] and TclXSLT. Together these packages provide a comprehensive toolkit for accessing and manipulating data in XML documents [3]. From their early development these packages have concen- The first path selects the document element book. The sec- trated on the design of APIs to allow application developers to ond path selects all chapter elements within a book.
    [Show full text]
  • 1. Why POCS.Key
    Symptoms of Complexity Prof. George Candea School of Computer & Communication Sciences Building Bridges A RTlClES A COMPUTER SCIENCE PERSPECTIVE OF BRIDGE DESIGN What kinds of lessonsdoes a classical engineering discipline like bridge design have for an emerging engineering discipline like computer systems Observation design?Case-study editors Alfred Spector and David Gifford consider the • insight and experienceof bridge designer Gerard Fox to find out how strong the parallels are. • bridges are normally on-time, on-budget, and don’t fall ALFRED SPECTORand DAVID GIFFORD • software projects rarely ship on-time, are often over- AS Gerry, let’s begin with an overview of THE DESIGN PROCESS bridges. AS What is the procedure for designing and con- GF In the United States, most highway bridges are budget, and rarely work exactly as specified structing a bridge? mandated by a government agency. The great major- GF It breaks down into three phases: the prelimi- ity are small bridges (with spans of less than 150 nay design phase, the main design phase, and the feet) and are part of the public highway system. construction phase. For larger bridges, several alter- There are fewer large bridges, having spans of 600 native designs are usually considered during the Blueprints for bridges must be approved... feet or more, that carry roads over bodies of water, preliminary design phase, whereas simple calcula- • gorges, or other large obstacles. There are also a tions or experience usually suffices in determining small number of superlarge bridges with spans ap- the appropriate design for small bridges. There are a proaching a mile, like the Verrazzano Narrows lot more factors to take into account with a large Bridge in New Yor:k.
    [Show full text]