From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1884 invoked by alias); 28 Feb 2010 09:58:17 -0000 Received: (qmail 1860 invoked by uid 22791); 28 Feb 2010 09:58:15 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from e23smtp06.au.ibm.com (HELO e23smtp06.au.ibm.com) (202.81.31.148) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 28 Feb 2010 09:58:10 +0000 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.31.245]) by e23smtp06.au.ibm.com (8.14.3/8.13.1) with ESMTP id o1S9w4pA010147 for ; Sun, 28 Feb 2010 20:58:04 +1100 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o1S9w6oC1859726 for ; Sun, 28 Feb 2010 20:58:06 +1100 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id o1S9w65s008132 for ; Sun, 28 Feb 2010 20:58:06 +1100 Received: from apj.in.ibm.com ([9.77.125.40]) by d23av04.au.ibm.com (8.14.3/8.13.1/NCO v10.0 AVin) with ESMTP id o1S9w4rg008127 for ; Sun, 28 Feb 2010 20:58:05 +1100 Message-ID: <4B8A3E2B.1030706@linux.vnet.ibm.com> Date: Sun, 28 Feb 2010 09:58:00 -0000 From: Anithra P Janakiraman User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20090922 Fedora/3.0-3.9.b4.fc12 Thunderbird/3.0b4 MIME-Version: 1.0 To: systemtap@sourceware.org Subject: Re: [RFC] Framework for easy distribution of SystemTap scripts. References: <4B1FE14D.5070307@linux.vnet.ibm.com> <4B685611.5090402@linux.vnet.ibm.com> <4B7C30CF.6070808@linux.vnet.ibm.com> In-Reply-To: <4B7C30CF.6070808@linux.vnet.ibm.com> Content-Type: multipart/mixed; boundary="------------050008070103000307050107" X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2010-q1/txt/msg00547.txt.bz2 This is a multi-part message in MIME format. --------------050008070103000307050107 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 5192 Hi, Please do let me know if there are any concerns/suggestions with the distribution framework. We are thinking a man page would not be necessary as usage is trivial. Let me know if it is needed ((README has been included). Regards, Anithra. On 02/17/2010 11:39 PM, Anithra P Janakiraman wrote: > > Hi, > > I've attached a modified framework. The systemtap_pkg_generator now > generates a package that includes staprun,stapio, an install script and > the generated kernel module. The files are not packaged into an rpm, and > no installation happens. The resulting 'package' is a self-extracting > binary file that extracts all files to the current dir, invokes the > install script which in turn invokes staprun from the current dir. This > binary file can only be executed by root users. > > Please comment. > > Regards, > Anithra. > > > On 02/02/2010 10:12 PM, Anithra P Janakiraman wrote: >> Hi, >> >> I've attached a modified framework. The names of the template/config >> files have been changed(no change in functionality). I've attempted to >> keeps the names compatible with other scripts in the SystemTap package. >> We would like to keep the framework in a seperate directory (similar to >> the initscript dir) for the sake of simplicity. (called >> distribution-framework or distribution-fw?) >> >> The directory would contain the following >> template.specfile >> template.install >> template.binextractor >> config.rpmoptions >> systemtap-rpm-generator (This is the executable script) >> README >> >> >> Let me know if any changes are needed (names of files/directory or >> contents). If there is any naming convention that i should adhere to >> please let me know. If there are no concerns, or suggestions i would >> like to go ahead and commit the framework. >> >> Thanks. >> >> Regards, >> Anithra >> >> >> >> On 12/09/2009 11:11 PM, Anithra P Janakiraman wrote: >>> Hi all, >>> >>> We've been looking at a simplified distribution framework for SystemTap >>> scripts that : >>> 1. packages a set of systemtap scripts and dependent >>> tapsets in a form that circumvents , as much as possible the need for >>> external dependencies(like kernel-debuginfo) >>> 2. installs, runs the script, post processes the output and uninstalls >>> out of the box >>> >>> We feel this would be especially useful in scenarios where support >>> admins wish to run a particular set of script(s) on a machine for debug >>> or monitoring purposes. I'm attaching an rpm-based framework that does >>> the following: >>> 1. Compiles a set of scripts into a set of kernel modules >>> on another machine of identical architecture that has SystemTap >>> installed and running >>> 2. Creates an rpm on the fly that would consist of >>> i) kernel modules ii) staprun & stapio taken from the systemtap-runtime >>> package in the machine that has SystemTap installed, iii) post >>> processing script to process the output(optional) >>> 3. Bundles the above >>> rpm with an install script that has options to i) install the rpm ii) >>> run / stop iii) uninstall iv) all of the above. >>> 4 . The rpm and the >>> install script are packaged into a self-extracting binary that would >>> extract itself and execute 1 of the four steps above. >>> >>> The framework would mainly consist of >>> 1. rpm-generating script >>> (rpm-generator.sh) that does all of the above >>> 2. spec file template that >>> will be modified by the rpm-generator on the fly and used to build the >>> rpm >>> 3. install script template that will be modified by the >>> rpm-generator and bundled with the rpm >>> 4. Configuration file - that >>> would specify the location of the scripts/tapsets >>> >>> The rpm is packaged as a self extracting binary for ease of use. When >>> the binary is executed it extracts the rpm package and based on the >>> parameters provided either installs/runs/uninstalls the rpm. Help >>> detailing the available options are also provided >>> >>> USAGE: [options] [parameters] >>> >>> Options: >>> * --install -i Install the tapset rpm. >>> * --run -r Runs the scripts >>> for n minutes where n can be passed as a parameter. o The default value >>> is 10 minutes. Post processing is performed after the script completes. >>> * --start -s Invokes the script as a background process. >>> * --stop -x Stops the script and performs post processing. >>> * --uninstall -u Stops the script if running and uninstalls the rpm. >>> * --all Installs the rpm, runs the scrip, processes the output and >>> uninstalls the rpm. >>> * --help Displays this usage text. >>> >>> Parameters: >>> >>> * time=[x] x is in minutes. Runs the script for x minutes. valid for >>> --run(-r) o --start(-s) or --all(-a) options only >>> >>> >>> >>> One disadvantage of the above framework is that the end binary that is >>> created is tied to a particular kernel version/architecture. However the >>> users now need not install systemtap, debuginfo and need not even be >>> familiar with SystemTap. This should help users and admins who wish to >>> run a set of scripts to solve a specific problem(maybe on a customer's >>> machine). >>> >>> Please comment, >>> >>> Regards, >>> Anithra. >>> >>> >>> >>> >> > --------------050008070103000307050107 Content-Type: application/x-compressed-tar; name="distribution-fw.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="distribution-fw.tgz" Content-length: 10391 H4sIAAg8iksAA+1bB1xTydZH15brExFdV7GNoQhiEkIXBERERBEwFEVACMkN BNLMTSgq2HURFRXBwqoUXXEVFezYy66o2Cv2rgh2cRVW+WbuTaOpu9/bfV9x fgjJlDP/OWfOmXPOjDypRCCMZsrioqUyhVAqIfT+/cUKFgc7O/IvLA3/OlhZ W+mx2Ta21rY2djb29npWbBu2HVsPWP0NWBoVJaHgygHQk0ulis/1+1L7/9LS J62d3junuSP1vns2bhJx3d7wzIHD666Wyg3X9TUtn5vMG7P7zcDYX9bz4gas W+mzOMPCsHhsgMnIhSm21QkHwvUmV+D9xOcrg5YdXfxy7B9b0sKrmLLz5VM+ lLy5k5bVJuvZs6w/biyvOVp86eiLU4+C47Zur568dfvHnHMiicPOPoPvnzzM Me1U9H2LQVsmO/T2unw4JWF7nWfark7s1UeD2y2wvFfay6yox3uruRtpB7C8 9r/5Htuk94fDXMe2nebds7S8Z1Z5f3Ni2d07u37fMektNmzTMW6XoQav6Gtr TGQ3FsWFLhaV5aeWHotPr1lXO2fOh6vE8zel27nLdq36blO6wjB72D1wufq+ uezii/DDv+ayzq1mDu2Y5dzJoO3VfcIhMeU/XB74Q+S0O+xWxqVjWFWlHXii 171kiaXJc2rZke3fHX1Y69imhe+AjT3u9xHsWbTSh1mUkdgma6p3VHqFzb9m yub0ntLmD6MxlaHjh52OnxB7Zt8d2bQON2x6uvqcDp/SZZme6ELghp1RCwhh QWyx5ZU3BkUO1gsF/PJXNlPNX5m2//55tKHD6fmlh8237DYotht+z6pvy1fd zDa98DVYUGnMbLnJ8XsfPcNDxvde9phG0Ddb7+g2d2/uotyZVQf77H4sSJzQ eybHat5H20eLFj/2yV9cFbQwx7aIvWPhIv1jHf0Mat+0/rFEYJf2XbfXio/6 Y8ffWb2hdaTUoSXLf9Lxmcl9LtruMrfbusL3tc8Zs2V5HekP7J8d2RaNLXwv aDv6qGe39wvSiPm7f2hZ3I8+obzriFudZ6YKDX+yf1TFGXUtfbjZq6i8xdjZ oD2Mpb3si3MrQ8/Np5UO7JMa3uaHobaX542YXDxc4pMf02OCc2rStDF+sx1i DU4dOTt51q7u9q975ThMtbAz6btoxE16y1eD5pm/lFZfmZY+903LWxV2yVMT cj1LZjoPmxxZNTbohbVeIjbbPfvs4Pu0fqmsuefX6K8dojf52vRdXVqMkR97 v3gP5+qQhQWzbryf6Nq53f4jXl3zVuYmCJNS+ZKtizh2uWPGuhR2zPboveia YXUnw8xu0T9WMKLaZpy9P9QivE+vDuxuLUs4w3417b/Ng389qYvJ0ZolleVX Qav7RjnpESeM1+88bDrC0KOsXNY+aHyWa/EMs4wbvqEPe699ff773OibBslh hYbx85w7ZO5e6q3fesCxX5/P3Hk7fMrBPleO9rxyJsnB1N1iS+Xe7h+eOQUO PDIotTK1k3jwQnlVat+XY9YEvzq6xd5a3H7yi9lFbrVloZl7Y77bXFb+wwqP mimFZbezP4lsV3R4XbdjR8IO+9BCs5op2dnvXyk/HjBvdw//+Dy2Lq2rsPOq tEzfT6NGPn+aa5lRmzTlSU/rW5M+TZ72ySG7cOVjTl2CUfb1QvFG6Y4dZ002 vq2zXLJ9+xylwqvSY+S8cqM7bk8sO+r1mmCZ+p1x2og8GT3wIMA6dZ7veO9J 5MMWU+VHzkUX9dNvM8g1Jf10uREv/+jSc9nyfgsfDe6QWHzItfiE0V79s4xt x27sz8mZH+ZxcsJC2+lHDnTZNLzuk9mD6UET3fYa9Xx24Pm2OL/Txr2H2BUW DHl25/2TPYcSbh7R/6PNE5cZd6ums6+VpeyTXjjTIXiC10v92IrhMTtzx83q uHF62quQtYefTdC7dPr48Ve0qsOjF+6uftDPo6tB4PrK7T1eFJ0oxbFr6Ssz Un5/XzDT90py78Eu7z91Y52rNhawZiWdH1hV9ftJn4vK1W0DOu53K/txUs+H ewx+bnPNzbHine9Ix6BLH7nPv5/wy6GEIz+18r13s2/lhY/jDxBOieUuFndP bnCjGXd41rv61k/6MT6/B6UKiu5mrE+5PbDqlPG4grouK4TtBptMPPbxQpJ1 /4tTsIrQ3y7rlxosrDBwGsLnOG43ix/T+QnYi7Fynr88WbI6sXcA/VO/bjEJ Rrv5I6c/C8t35M3FTi6fkbNsxujutJUt+1bOyRuzuN+h6JHCKysmYSHVOYPj dm65Flti1D1zwflu7T2s5uawf1p3xPO7F3sr9pdtOTPtk/3wg0vfBRsNN/KO CHJtZ+F60dy0dPvFs12Xrj/0qWBFO06LncLg368uSbqVbdTpfcjGAXvud/Ln X59ZPKHTa4cfJe2Mhh2OuWyRs3b0NL+BW2/+6PeeP7xTkp69kd7q132823Us Fz5WptuuXzDz6XKh/Vx7WfoopgybuuK5j0FNjFfV2MeX+X/Eek0zkHOuZGxZ vtrnmnmh1b2Wo/8VeDv+JjFHufZxXkrW8OuSodHm0Sb3OMvCnr5aMtA91jss xqPQh3ldPs6Zk805cny15GLYjUKW9R3lSuxtWKceT36cZT7I72US7wW7i+cq /TWZq15VWrU0an97cOcr98Gb7r3WtplzLO/Tqqxq1/ArtRP3pXxKZCctc7Pb WpiYMmP6eMORmZ438v4IWZZjJOx6vqPVad6sQGnNxR3m9PAIU8C/HStJkivX 3CyaIn+Z7Jy5etJvKU9+6qnU35rx3qf7/LqC7hsI98dZMTMGnOueZjbSsbht +xXV16pXDZ1dl7Nj2EST/AnmM4zbt9jMMX2aMWXt0TyLCjPO5SH5510r5nfn tk9q91vrbhk3ctms6eeF0YpLZ/7g5/1xs0vXn1vx5p1QnLjcLtkuiZlVsib4 YItFV5ecM8p139+ilYVDtcvsEz9tmxVfys6dcXht69pDmcIVU+M77BYPzQ+r bP8okbF1sCJu6m+zvfw20S3/lbQt95k4ds2E9iNK+u27krPHfGcWf+7sIUVB yq7KFZWyum02B58biiUZTx9fyuO0O1b6yH6I5c9vDyzz8yJKxtvGLr72eNEF 1zH7nky95JZmtH4h3fjAzfaLi83znUse3rgkPlqSbmEpbVvyLiCVW5XXuTJm w8kuaaPKeuefmFp9qvqGd1rs3shF8e2in3w39VXa0ogeo59nWJuv98rLeFXh d9+6kF3HXVU3Mcsv6tbqVT2W/FZUdqWddM3A0k1brLMPmi0NMAO99ANmPFw5 VUGUHrBwog1v044nvlZR1vFmWCcfO4NRY0eMNStIPW0zohWvi1dmYmn+1Xs9 HoLcRa9eDVocUmO+S8E+a3Mya92drMNtE9+2y/7lQoegxAKXRHwlp/TXIkKv 8/7i0f3Xvw70srXaOjn7xI044wBPs6sJ72pcwiwSL+KbloQ9MxzzpMCne0BP V+mhVsvWupbKb5VuKu2xNnTNuPY1Z1N+ulSy15m3+bb+RLd9otWzxpzuvnXl Rlr62BFnur07M+tCwYP2K65K9KfcnLlO/hN929LY4wcq6AMzf71o1/NJnCOn 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 rXwrDcp/AT74vcwAUAAA --------------050008070103000307050107--