diff options
author | Christoph Junghans <ottxor@gentoo.org> | 2015-02-13 14:46:14 -0700 |
---|---|---|
committer | Christoph Junghans <ottxor@gentoo.org> | 2015-02-13 14:46:31 -0700 |
commit | 63895749c0448ecc12c36b3aeec0df367d91a1b4 (patch) | |
tree | 51bc19af8c2254107f50d8774322785dc952ff95 /app-shells/mpibash | |
parent | fix Gentoo copyright header (diff) | |
download | sci-63895749c0448ecc12c36b3aeec0df367d91a1b4.tar.gz sci-63895749c0448ecc12c36b3aeec0df367d91a1b4.tar.bz2 sci-63895749c0448ecc12c36b3aeec0df367d91a1b4.zip |
version bump
Package-Manager: portage-2.2.14
Diffstat (limited to 'app-shells/mpibash')
-rw-r--r-- | app-shells/mpibash/ChangeLog | 11 | ||||
-rw-r--r-- | app-shells/mpibash/Manifest | 32 | ||||
-rw-r--r-- | app-shells/mpibash/files/bash-4.3-append-process-segfault.patch | 18 | ||||
-rw-r--r-- | app-shells/mpibash/files/bash-4.3-compat-lvl.patch | 13 | ||||
-rw-r--r-- | app-shells/mpibash/files/bash-4.3-parse-time-keyword.patch | 30 | ||||
-rw-r--r-- | app-shells/mpibash/files/bash-4.3-term-cleanup.patch | 47 | ||||
-rw-r--r-- | app-shells/mpibash/files/mpibash-4.3.patch | 1565 | ||||
-rw-r--r-- | app-shells/mpibash/metadata.xml | 13 | ||||
-rw-r--r-- | app-shells/mpibash/mpibash-1.1.ebuild | 28 | ||||
-rw-r--r-- | app-shells/mpibash/mpibash-4.3_p30-r1.ebuild | 277 |
10 files changed, 40 insertions, 1994 deletions
diff --git a/app-shells/mpibash/ChangeLog b/app-shells/mpibash/ChangeLog index bbc69c9f5..6e2905cd6 100644 --- a/app-shells/mpibash/ChangeLog +++ b/app-shells/mpibash/ChangeLog @@ -1,7 +1,16 @@ # ChangeLog for app-shells/mpibash -# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 +# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ +*mpibash-1.1 (13 Feb 2015) + + 13 Feb 2015; Christoph Junghans <ottxor@gentoo.org> +mpibash-1.1.ebuild, + -files/bash-4.3-append-process-segfault.patch, + -files/bash-4.3-compat-lvl.patch, -files/bash-4.3-parse-time-keyword.patch, + -files/bash-4.3-term-cleanup.patch, -files/mpibash-4.3.patch, + -mpibash-4.3_p30-r1.ebuild, metadata.xml: + version bump + 05 Dec 2014; Christoph Junghans <ottxor@gentoo.org> mpibash-4.3_p30-r1.ebuild: added prefix support diff --git a/app-shells/mpibash/Manifest b/app-shells/mpibash/Manifest index 1a04ccbb1..9c71677ba 100644 --- a/app-shells/mpibash/Manifest +++ b/app-shells/mpibash/Manifest @@ -1,31 +1 @@ -DIST bash-4.3.tar.gz 7955839 SHA256 afc687a28e0e24dc21b988fa159ff9dbcf6b7caa92ade8645cc6d5605cd024d4 SHA512 a852b8e46ee55568dce9d23a30a9dbd1c770c2d2a4bc91e1c3177d723b31b32c5d69d19704a93f165891b409b9dd2cc65723372044e2bd0ee49ed59a11512651 WHIRLPOOL d82eb296b1bdee517b20e40d2231697dc41e2040d34e2da24c4fa40755c723d732929805ebef6f6923cd8ffecfb0db7063ec1dc3ab4e695a93916f2d872e236f -DIST bash43-001 1617 SHA256 ecb3dff2648667513e31554b3ad054ccd89fce38e33367c9459ac3a285153742 SHA512 a1011392652180a28f9837af4a341a80beb929c1458e2384e282f0007713c5fe8d0b315abf1340b3707748d3caed322135dee87b59eeb7612ee5130f87d79888 WHIRLPOOL 94d34b6ae2496b4007bf9b3af69847828179dfa90528d7fc2f9a91facc451535e2fa46120cc3ea22156974c92f2633f91423f2d43b4733f8960cde69dfff81b9 -DIST bash43-002 1594 SHA256 eee7cd7062ab29a9e4f02924d9c367264dcb8b162703f74ff6eb8f175a91502b SHA512 e3178c85f553522d5d1c5fd39e76f015b680a8ccc84836a5e10283b2aed6e5b7cc3d23af0e67a270b7622dce0abf35dd8a95afa9bb6f89b73a9439f7435175a4 WHIRLPOOL 2d1b6679a1263f7a4325b692c3edac9f5daaa72e3f06dfa88958e70ad64c1fc74b92d8325becfff2c21dd28c002470bdaad50f57037c2676352078291bf0b0bc -DIST bash43-003 1465 SHA256 000e6eac50cd9053ce0630db01239dcdead04a2c2c351c47e2b51dac1ac1087d SHA512 dc2c5fad8d357d1301e419afd959dfaf015a63172857080c11f77ab1bb7d1d737f411eb0e70a861f98a36bed1b19edb7217a4fa9f4773e21706b62dc56ec3464 WHIRLPOOL 1ef78321cfe3ca6e9f690ae3dd6a7c06bc72d2e6590bfdaa8543b0ac3ff84eae998e4a2aa44531423cab1137c974b09ac30baf5fa2746e2e5a2006cde03a2b32 -DIST bash43-004 1534 SHA256 5ea0a42c6506720d26e6d3c5c358e9a0d49f6f189d69a8ed34d5935964821338 SHA512 6a5177d5f4205ca9d3824601052dc6d0cd768638cdfc125501c5643dd51d537f5d075cbd11a10356caf4205e47a0287c72636065789ecce264129fc92fbda420 WHIRLPOOL 90c2f4f7752cf84a67b1f648137b6c25b8a6f5212fc5dde26d6f0fb6f316e923bec916368ba9ebc6b608bfa0fd82f86b6ac7ec6db32d06b83c3d22730788cfa1 -DIST bash43-005 2636 SHA256 1ac83044032b9f5f11aeca8a344ae3c524ec2156185d3adbb8ad3e7a165aa3fa SHA512 e201aa8ef0ce0d74fa5ee42e8171bbb5ba633d831d863a8e8afc5d5157581bb055d16c52b316cc945979a852b0eae7921244a24b89818acfb7c96572ed04d1f8 WHIRLPOOL fd4c6b03fb8b4344cc3833beb0310738af9826c56d2b0cf7c5262f3d2a99e83f700485dafe0e726e84a2dffcb1b907efcc860a685160ff22c99e40c8a2b659b0 -DIST bash43-006 1445 SHA256 a0648ee72d15e4a90c8b77a5c6b19f8d89e28c1bc881657d22fe26825f040213 SHA512 d1da3c9d3781482d87cdcbfd69ab3958ed4950f2a00e9d15228ecb4ad5ca8ae253eff378010b4908d04df2ecf658e08f7c2efc97d6a0b8dd2317552c1895d7b2 WHIRLPOOL 55e3c5e7be01f5928247a7677482dde1f0c89a0344ca23c947e9f84bf93d43ce1d7f621b39d74e09f0dd2de85ef304c5d34e68eb0af35cdf61c611e649dcbf68 -DIST bash43-007 1331 SHA256 1113e321c59cf6a8648a36245bbe4217cf8acf948d71e67886dad7d486f8f3a3 SHA512 c445b5cdd486d06991c78d4c88e2e44e49f74d1fc07b8e4bc9492cccfc4ff4045587bed6b24d745974c6339340e45b9756c27723fdb79e7591e7d6c5d350a86e WHIRLPOOL 0537006403347466536de5843d62725be75b6f5b4e6d9228c9f5671201de6a473ba04d8fcfa29894584b51f3ee35718bb46c2acc5c014713e03ee24828f10d43 -DIST bash43-008 4575 SHA256 9941a98a4987192cc5ce3d45afe879983cad2f0bec96d441a4edd9033767f95e SHA512 53bae88cd3341a4ef8c60d6a294c09402103d1b20f485cf85775e6730a3d2eec8e6ebe15aa6dd95336e4a1f540f21db394823b9d04b416e5af071a7a6c618900 WHIRLPOOL 94a3e9f004729490f70cb3a33de0605fc11f498b6bde2dc37bc08578283e47a3b625619de9d823b2796ce6fbd4982871fa2d428e94c892c863fc448ef2711482 -DIST bash43-009 2413 SHA256 c0226d6728946b2f53cdebf090bcd1c01627f01fee03295768605caa80bb40a5 SHA512 8d06fe612cd32cb414fdcdc34d4420b8991b268dd3ddd2dd47b3d01679954debd78e21f697a7f495d2340f0dcc8acdc3ad6809b8870bf5fd300afb1439788776 WHIRLPOOL 66e13efba99362a361e9e7d317773d51862f4c474f5c213654eba875a86b6d83b531b246bbd22c53e8a81fa7b67cb564c2de264ce28063967426fcf586ddda4d -DIST bash43-010 5357 SHA256 ce05799c0137314c70c7b6ea0477c90e1ac1d52e113344be8e32fa5a55c9f0b7 SHA512 e36e550d749f52bab01256ed5f8f1b48fe53190c1a0a0a15c545328261c1f50b85f574b44188855858de1f2d045945770c4940bdecadd8381ea2cf174bde2fee WHIRLPOOL 830e7c82afd2650cbb00818928d22be0e0518aec2752736ff7a5085c5628bc8852c6c409f21684beec0c675d79898917efafb3f8dc1bc6bfcea41e1a8521d4fb -DIST bash43-011 1533 SHA256 7c63402cdbc004a210f6c1c527b63b13d8bb9ec9c5a43d5c464a9010ff6f7f3b SHA512 678bbcd92b927c86631cd42d6d3ab7596a3ffd20b640f471a9783a7972f05d2d4fb15970c12e7645e90d407c5a2d2aadcad698113211724b0ef8d89eccd2cd66 WHIRLPOOL 1d0b84ff75d19db1bfbd60b37551978825902be2187b6407471a8810ebeb9136b2846e6c76505fec0c828a3e83ba8d4dd0950c5e6020b649da7ae530f7d5bf05 -DIST bash43-012 1365 SHA256 3e1379030b35fbcf314e9e7954538cf4b43be1507142b29efae39eef997b8c12 SHA512 169453248edb55baf761b0c9c7b296ed2c24543b80fcf4756b8dd398054b6317da285c5e9cd68828f2620b05874f21a08773844ee32416daef76b88d0ef3ee6d WHIRLPOOL 52b6c6d6c374b307ac562c1dfda730dc3ba322d3d6e9c7acb3f2a40461bb61ad5cb54dd65e2e4b72e492b55b436c323cae95ed63948df3b06bcd64a3487b3374 -DIST bash43-013 2151 SHA256 bfa8ca5336ab1f5ef988434a4bdedf71604aa8a3659636afa2ce7c7446c42c79 SHA512 536bbf0c9b23eb824579955e7fce892cfc1e1d9fbcfc66810353ac4ff238e9e57361c0a46b3f3573ca8ca563331070ce55442ffea38e2a632840b6a318db1c88 WHIRLPOOL 15fe2e97ac2a07a1d4c0f9946adc63e64b9141a3837391206fd5c934853f7e9ad9ede3baeecdd7a0dbb73e2bf007db8a5b57f0f8e2d03d693de09502dff32636 -DIST bash43-014 3533 SHA256 5a4d6fa2365b6eb725a9d4966248b5edf7630a4aeb3fa8d526b877972658ac13 SHA512 79fb50f62dbdca5e45a1359570e6d2173d442b3d4ddd4eb44809ed45ac022de4fe3f0aadd7672b4c8d9739405d51762486ee0c677b56f9c7d60e6224be84b87a WHIRLPOOL 10b6a2b7a7e5e6dfb3dd730b9ccc2ce3152bda1983a78745aa7367e9f5671695577d45070ad800158a36ffeb7db176e29f6b48d139075770ec773a478adfa1b2 -DIST bash43-015 1894 SHA256 13293e8a24e003a44d7fe928c6b1e07b444511bed2d9406407e006df28355e8d SHA512 38a7af22f13f1f45705ceadf3abb52be75f3239959c2b1d57f333d137f25f14ed92c4d209b35417d449b1ec4291bbd984bb5fd11ad40375b22d2668b33fb8efb WHIRLPOOL c06aa4977f891ec606f107157a0295d5025fbd24a620644547ee3f3a79582aae1ea4cd4be4254f92c6d2aee9322934839f01cc118148cea85af700e6f83c21cc -DIST bash43-016 3674 SHA256 92d60bcf49f61bd7f1ccb9602bead6f2c9946d79dea0e5ec0589bb3bfa5e0773 SHA512 52ab2966ccd42554c8bd76041e07921388220b46c93c34190197cdda38a085fd499d71e2e0a10daea130e6782ada556f35b1a37d06d023e83c4c4d665d07cd3f WHIRLPOOL 9b7eb252291680d5db2596700774fddcab7e5c6c14ed5b1da7f8e23e1eaae85a927cf69d7662807b99c63fa083d2267f7e70076d4d4927a8bd4cb9273c416b4c -DIST bash43-017 1565 SHA256 1267c25c6b5ba57042a7bb6c569a6de02ffd0d29530489a16666c3b8a23e7780 SHA512 88b11f324a780823b459b1e8a0904348c56079b4103cb86025d34dbba02543b0b7fbc2397bf043c24c1363f30539a6fe9b9f9fc717be9798f466071d1d420bb9 WHIRLPOOL 1aa1160771b98d393a2fb341e9025c2169aa43123f682bbe7648038e555b4f70eb1dbdba90492edb514c9621468f5005c2cf5fff82921e941ad3ca42534e7b1d -DIST bash43-018 1315 SHA256 7aa8b40a9e973931719d8cc72284a8fb3292b71b522db57a5a79052f021a3d58 SHA512 f83d8e1d6d8fa8adf1715b8d4130730a13f5cd626f75e9e4b8c63244645a45a3f1fbac03081bb9d1e46864919d1b3189a9bb6d7a5e7a8854e6270ab3269c771f WHIRLPOOL 14a216257c3d1d3501dfc23d72ad8c085a216cdac83d5d909922d51b502ce83fb454c7e64a8d44e91a87a1a09237d965272fb563ae945c5d81688e9f0686264e -DIST bash43-019 2610 SHA256 a7a91475228015d676cafa86d2d7aa9c5d2139aa51485b6bbdebfdfbcf0d2d23 SHA512 77e6dac3079d9282f6f85940a762b0da2473ac0d35e9bad2ebc2862bf0f3c4376a6220c746c1c37de0b4d492251ec9531a62c8a042a1be5e485f8f5ae6fa0704 WHIRLPOOL 5acde269ea62e2074ca5eb30750dbd67512b69658908f532165a90873f54de7705b0d41515ac6278e942f8ea66e0abe67c13b842e404a41cd7684ec0683928ef -DIST bash43-020 2777 SHA256 ca5e86d87f178128641fe91f2f094875b8c1eb2de9e0d2e9154f5d5cc0336c98 SHA512 fa06563eb46609115750ffa88098b07c608cc8b13fc31356f33e1428a4da4d2610e122e0241356afcfadfecc5ccee5db4b7cf07f74005e7f30240ada4a81b5f7 WHIRLPOOL 9f05ce5028f20e7cbc11c1995d99a47274f782f228faa752919e0444afe1df748adb7837c0a3affa20633c63ad0175780327b9a02a39f5ada494736f0fd694dd -DIST bash43-021 1623 SHA256 41439f06883e6bd11c591d9d5e9ae08afbc2abd4b935e1d244b08100076520a9 SHA512 90dc85302d9bc60e68fa8cce472b7e022d8a6ccee361f97aad4cbe5f1585b4870ab9997a3e6fac420aaf84c3dce9757716eb08f4fa6b38e14bac4f2d5d503731 WHIRLPOOL e7930992f6e2a1f5a07458eee74ed118fe93152ceb78fbdb41a4a3d799c5f9aa71fac52bc3cd43c321b983c5a4309e9884d37cac1facb54a2f38383527c8e765 -DIST bash43-022 1782 SHA256 fd4d47bb95c65863f634c4706c65e1e3bae4ee8460c72045c0a0618689061a88 SHA512 721b772349f9e0cc65975e419fabe4acdb23c77796a5d8fde01f110687ea1cb7d23fb706fc0452fb3c2082958a81c95b82f277e1f8f722b1156913efd59afc30 WHIRLPOOL 7387429460d85bffb9f7ce9cbd524f4b2c21b116beff30424db2cb66d48ec81707c7cb9479d5d72bcf36879248963a405dcdf87515fc0f5b6642568d9d236df2 -DIST bash43-023 3414 SHA256 9ac250c7397a8f53dbc84dfe790d2a418fbf1fe090bcece39b4a5c84a2d300d4 SHA512 d45b5f5dc4682c7260c8b6ef6faa99c929d2159cc34534931790f71f76e7324376e4a5d4a2a3bc21c16c25a8206554580943e7a3f672ec5a4af16cbccd216819 WHIRLPOOL 4cee4cdbe8525aff748a42a19d1d7cbc659cc8fe99b0bca3b2875ddfe5b8325f504cfdf09fb6edc70b1040f00eae3a4ab5fcda64cfa93ce96ce1e8d8c902b78f -DIST bash43-024 1909 SHA256 3b505882a0a6090667d75824fc919524cd44cc3bd89dd08b7c4e622d3f960f6c SHA512 eada2b4839b81f28f63a874e08c72dfee9708c0982d2447347c17770a29c8fbb3d3f8c58c8a22b0d46a9d10abbd79dec11b5815257fb39af06420ef3602f8499 WHIRLPOOL 06059921dccb590aa7847ff5212bcb3e6a177aa96749eb19012d633ebf86badb83aad3b75ba8b304c620380d08395c0e37da4e2934a833ef1c0e1daf0f42ca72 -DIST bash43-025 3940 SHA256 1e5186f5c4a619bb134a1177d9e9de879f3bb85d9c5726832b03a762a2499251 SHA512 b4ea28ea0a24c8609d5c3a10114c5fec87ab978ec60700c36992d093e7afd976dbaee4a0d62c6e41e8ed6674c356fc26589f4c5168642dec8df8d727d7127822 WHIRLPOOL b3385e49dfbbf156bea9ebbd10f18dcb88c1d489c61c5bd6c16d1caac8a2ebf1ce057ec350d661ebd0307330a61f8c1088bef1cb133368919ccd0b5e81c3e7e3 -DIST bash43-026 1575 SHA256 2ecc12201b3ba4273b63af4e9aad2305168cf9babf6d11152796db08724c214d SHA512 d55620c86ab4835eaf53c18033a939e00ebbef7045d1429bd6fb212be6da167c368b4c03aec6c00ba60a1363b9cf8a4828e85c8108c5476b4a342e6c57f03897 WHIRLPOOL 3c21e3b21f1967d85b49386c05945859ee0fab2bbe0062052319876bbe3283bf3a7b50a9e160e36e9ee96fbe79ac13c90d86ffb4157ef0cb0641acd9dafb917e -DIST bash43-027 6889 SHA256 1eb76ad28561d27f7403ff3c76a36e932928a4b58a01b868d663c165f076dabe SHA512 6941156db9a6ab35b2d6ddc63eec064e03da779e29f47e33b467711e3405c9adb58ad33be3ad3c77aea1e84a314d5404c8e1a8475408991f5f719b93c5a276b3 WHIRLPOOL 241a77807f142765fac71490987bd62a93bbd57c6ad2f83fbc645bf0618286fbfc3cd269eadf99e7f973a9e88ac08c5065868f8ad38727c17bb6056cedc83888 -DIST bash43-028 69606 SHA256 e8b0dbed4724fa7b9bd8ff77d12c7f03da0fbfc5f8251ef5cb8511eb082b469d SHA512 4317380539e3a93167f195eddd0acf0c75a5d86d5ef243cb7f7dca43e745badc3ebbc081b099678ac17dc03d9a3ed4a3ff3c6636bb1887e73e94b8ff9ced7c88 WHIRLPOOL f01e8fe2c09a7bdefacd7114cc8377f7ccd65de6c3bafac05595f1400f330ba0ba63ce97fe7b9b49957639c75438bb5ceb853890094cb0c4e43fadc1795b89b6 -DIST bash43-029 1824 SHA256 4cc4a397fe6bc63ecb97d030a4e44258ef2d4e076d0e90c77782968cc43d6292 SHA512 e25783c7557c1cda8344ba779d59f83e26b90b0aca393b5f7ee389e0583ccf81eba394589e992b33eb6c969083a8a4ff7fc8ce52059cab3b71289d085d381f07 WHIRLPOOL 857275184a8a449461b5aebba12d8231e1e33a2119693fa2c865ead18d4c462dea8151cfc3e0d121c2e5569d9984856ba69820aaa54399ddc77bb849ea9de890 -DIST bash43-030 63206 SHA256 85434f8a2f379d0c49a3ff6d9ffa12c8b157188dd739e556d638217d2a58385b SHA512 ae41a9a5326ceb8e7105e359be097e14876160f6357bfa7c5cd3c4a495a629be762c3db671754c2cffc6abb34998aad91dde4a449ba16a0c6da844bac53feca4 WHIRLPOOL 2184fa715fb90de89f18ba2b27dca612b684a85e9228d58ccf2d62a96a2e575929b3e1a47fbb5809e4c231a6657084be4a076271cfdd5b8b7dde493f2cb40a01 +DIST mpibash-1.1.tar.gz 346708 SHA256 bbcb4b93db7e58be11c4cebb369b52fe8ea9de1abd474f7834c9937002335877 SHA512 9729ed92025f0470dac110a2cc0a6ed971082ed98fa09493dc029dc32029474b8a51c55a571e01ee79a026f67829fc6011bcc074e318b5dfc327b3186f5d6f28 WHIRLPOOL e40b98e6762916aa30f9bdb851c8667a0d1afd11cfdf89c76125df822b41f3dccb351581168b5090bb2b890be720c4943222cbd8917d6a3065925d835da820e4 diff --git a/app-shells/mpibash/files/bash-4.3-append-process-segfault.patch b/app-shells/mpibash/files/bash-4.3-append-process-segfault.patch deleted file mode 100644 index 6c9b2e830..000000000 --- a/app-shells/mpibash/files/bash-4.3-append-process-segfault.patch +++ /dev/null @@ -1,18 +0,0 @@ -https://lists.gnu.org/archive/html/bug-bash/2014-08/msg00048.html - -*** ../bash-4.3-patched/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400 ---- execute_cmd.c 2014-08-11 16:55:57.000000000 -0400 -*************** -*** 2406,2410 **** - { - #if defined (JOB_CONTROL) -! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid); - #endif - lstdin = wait_for (lastpid); ---- 2433,2438 ---- - { - #if defined (JOB_CONTROL) -! if (INVALID_JOB (lastpipe_jid) == 0) -! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid); - #endif - lstdin = wait_for (lastpid); diff --git a/app-shells/mpibash/files/bash-4.3-compat-lvl.patch b/app-shells/mpibash/files/bash-4.3-compat-lvl.patch deleted file mode 100644 index 5734687ff..000000000 --- a/app-shells/mpibash/files/bash-4.3-compat-lvl.patch +++ /dev/null @@ -1,13 +0,0 @@ -https://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html - ---- a/builtins/shopt.def -+++ b/builtins/shopt.def -@@ -160,7 +160,7 @@ static struct { - { "compat32", &shopt_compat32, set_compatibility_level }, - { "compat40", &shopt_compat40, set_compatibility_level }, - { "compat41", &shopt_compat41, set_compatibility_level }, -- { "compat42", &shopt_compat41, set_compatibility_level }, -+ { "compat42", &shopt_compat42, set_compatibility_level }, - #if defined (READLINE) - { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, - { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, diff --git a/app-shells/mpibash/files/bash-4.3-parse-time-keyword.patch b/app-shells/mpibash/files/bash-4.3-parse-time-keyword.patch deleted file mode 100644 index cd516e5c6..000000000 --- a/app-shells/mpibash/files/bash-4.3-parse-time-keyword.patch +++ /dev/null @@ -1,30 +0,0 @@ -https://lists.gnu.org/archive/html/bug-bash/2014-06/msg00034.html - -*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 ---- parse.y 2014-06-11 10:25:53.000000000 -0400 -*************** -*** 2789,2797 **** - case OR_OR: - case '&': - case DO: - case THEN: - case ELSE: - case '{': /* } */ -! case '(': /* ) */ - case BANG: /* ! time pipeline */ - case TIME: /* time time pipeline */ ---- 2789,2802 ---- - case OR_OR: - case '&': -+ case WHILE: - case DO: -+ case UNTIL: -+ case IF: - case THEN: -+ case ELIF: - case ELSE: - case '{': /* } */ -! case '(': /* )( */ -! case ')': /* only valid in case statement */ - case BANG: /* ! time pipeline */ - case TIME: /* time time pipeline */ diff --git a/app-shells/mpibash/files/bash-4.3-term-cleanup.patch b/app-shells/mpibash/files/bash-4.3-term-cleanup.patch deleted file mode 100644 index be7a5def7..000000000 --- a/app-shells/mpibash/files/bash-4.3-term-cleanup.patch +++ /dev/null @@ -1,47 +0,0 @@ -http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00031.html - -*** ../bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400 ---- bashline.c 2014-09-08 11:28:56.000000000 -0400 -*************** -*** 203,206 **** ---- 203,207 ---- - extern int array_needs_making; - extern int posixly_correct, no_symbolic_links; -+ extern int sigalrm_seen; - extern char *current_prompt_string, *ps1_prompt; - extern STRING_INT_ALIST word_token_alist[]; -*************** -*** 4209,4214 **** - /* If we're going to longjmp to top_level, make sure we clean up readline. - check_signals will call QUIT, which will eventually longjmp to top_level, -! calling run_interrupt_trap along the way. */ -! if (interrupt_state) - rl_cleanup_after_signal (); - bashline_reset_event_hook (); ---- 4262,4268 ---- - /* If we're going to longjmp to top_level, make sure we clean up readline. - check_signals will call QUIT, which will eventually longjmp to top_level, -! calling run_interrupt_trap along the way. The check for sigalrm_seen is -! to clean up the read builtin's state. */ -! if (terminating_signal || interrupt_state || sigalrm_seen) - rl_cleanup_after_signal (); - bashline_reset_event_hook (); -*** ../bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500 ---- sig.c 2014-09-08 11:26:33.000000000 -0400 -*************** -*** 533,538 **** - /* Set the event hook so readline will call it after the signal handlers - finish executing, so if this interrupted character input we can get -! quick response. */ -! if (interactive_shell && interactive && no_line_editing == 0) - bashline_set_event_hook (); - #endif ---- 533,540 ---- - /* Set the event hook so readline will call it after the signal handlers - finish executing, so if this interrupted character input we can get -! quick response. If readline is active or has modified the terminal we -! need to set this no matter what the signal is, though the check for -! RL_STATE_TERMPREPPED is possibly redundant. */ -! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED)) - bashline_set_event_hook (); - #endif diff --git a/app-shells/mpibash/files/mpibash-4.3.patch b/app-shells/mpibash/files/mpibash-4.3.patch deleted file mode 100644 index 20d4787d7..000000000 --- a/app-shells/mpibash/files/mpibash-4.3.patch +++ /dev/null @@ -1,1565 +0,0 @@ -diff -Naur bash-4.3/builtins/circle.def mpibash-4.3/builtins/circle.def ---- bash-4.3/builtins/circle.def 1969-12-31 17:00:00.000000000 -0700 -+++ mpibash-4.3/builtins/circle.def 2014-05-13 11:27:37.314100671 -0600 -@@ -0,0 +1,620 @@ -+This file is circle.def, from which is created circle.c. -+It implements all of the "circle_*" builtins in Bash. -+ -+$PRODUCES circle.c -+ -+#include <config.h> -+ -+#include <stdio.h> -+#if defined (HAVE_UNISTD_H) -+# ifdef _MINIX -+# include <sys/types.h> -+# endif -+# include <unistd.h> -+#endif -+ -+#include "../bashintl.h" -+#include "../shell.h" -+#include "common.h" -+#include "bashgetopt.h" -+#include <libcircle.h> -+ -+extern int running_trap, trap_saved_exit_value; -+ -+static int circle_rank; /* Rank in the Libcircle job */ -+static SHELL_VAR *create_func = NULL; /* User-defined callback function for CIRCLE_cb_create. */ -+static SHELL_VAR *process_func = NULL; /* User-defined callback function for CIRCLE_cb_process. */ -+static SHELL_VAR *reduce_init_func = NULL; /* User-defined callback function for CIRCLE_cb_reduce_init. */ -+static SHELL_VAR *reduce_fini_func = NULL; /* User-defined callback function for CIRCLE_cb_reduce_fini. */ -+static SHELL_VAR *reduce_op_func = NULL; /* User-defined callback function for CIRCLE_cb_reduce_op. */ -+static CIRCLE_handle *current_handle = NULL; /* Active handle within a callback or NULL if not within a callback */ -+static int within_reduction = 0; /* 1=within a reduction callback; 0=not */ -+ -+/* Return with a usage message if no arguments remain. */ -+#define YES_ARGS(LIST) \ -+ if ((LIST) == 0) \ -+ { \ -+ builtin_usage (); \ -+ return (EX_USAGE); \ -+ } -+ -+/* Perform the same operation as bind_variable, but with VALUE being a -+ * number, not a string. */ -+static SHELL_VAR * -+bind_variable_number (name, value, flags) -+ const char *name; -+ long value; -+ int flags; -+{ -+ char numstr[25]; /* String version of VALUE */ -+ -+ sprintf (numstr, "%ld", value); -+ return bind_variable (name, numstr, flags); -+} -+ -+/* Invoke the user-defined creation-callback function (create_func). */ -+static void -+internal_create_func (handle) -+ CIRCLE_handle *handle; -+{ -+ WORD_LIST *funcargs; -+ -+ if (create_func == NULL) -+ return; -+ current_handle = handle; -+ funcargs = make_word_list (make_word ("cb_create"), NULL); -+ execute_shell_function (create_func, funcargs); -+ dispose_words (funcargs); -+ current_handle = NULL; -+} -+ -+/* Invoke the user-defined process-callback function (process_func). */ -+static void -+internal_process_func (handle) -+ CIRCLE_handle *handle; -+{ -+ WORD_LIST *funcargs; -+ -+ if (process_func == NULL) -+ return; -+ current_handle = handle; -+ funcargs = make_word_list (make_word ("cb_process"), NULL); -+ execute_shell_function (process_func, funcargs); -+ dispose_words (funcargs); -+ current_handle = NULL; -+} -+ -+/* Invoke the user-defined reduction-initiation callback function -+ * (reduce_init_func). */ -+static void -+internal_reduce_init_func (void) -+{ -+ WORD_LIST *funcargs; -+ -+ if (reduce_init_func == NULL) -+ return; -+ within_reduction = 1; -+ funcargs = make_word_list (make_word ("cb_reduce_init"), NULL); -+ execute_shell_function (reduce_init_func, funcargs); -+ dispose_words (funcargs); -+ within_reduction = 0; -+} -+ -+/* Invoke the user-defined reduction callback function -+ * (reduce_op_func). */ -+static void -+internal_reduce_op_func (buf1, size1, buf2, size2) -+ const void* buf1; -+ size_t size1; -+ const void* buf2; -+ size_t size2; -+{ -+ WORD_LIST *funcargs; -+ -+ if (reduce_op_func == NULL) -+ return; -+ within_reduction = 1; -+ funcargs = make_word_list (make_word (buf2), NULL); -+ funcargs = make_word_list (make_word (buf1), funcargs); -+ funcargs = make_word_list (make_word ("cb_reduce_op"), funcargs); -+ execute_shell_function (reduce_op_func, funcargs); -+ dispose_words (funcargs); -+ within_reduction = 0; -+} -+ -+/* Invoke the user-defined reduction-finalization callback function -+ * (reduce_fini_func). */ -+static void -+internal_reduce_fini_func (buf, size) -+ const void* buf; -+ size_t size; -+{ -+ WORD_LIST *funcargs; -+ -+ if (reduce_fini_func == NULL) -+ return; -+ funcargs = make_word_list (make_word (buf), NULL); -+ funcargs = make_word_list (make_word ("cb_reduce_fini"), funcargs); -+ execute_shell_function (reduce_fini_func, funcargs); -+ dispose_words (funcargs); -+} -+ -+/* Look up a user-provided callback function. */ -+static int -+find_callback_function (list, user_func) -+ WORD_LIST *list; -+ SHELL_VAR **user_func; -+{ -+ char *funcname; /* Name of the user-defined function. */ -+ -+ /* If no argument was provided, nullify the callback function. */ -+ if (list == NULL) -+ { -+ *user_func = NULL; -+ return EXECUTION_SUCCESS; -+ } -+ -+ /* Get the callback function. */ -+ funcname = list->word->word; -+ list = list->next; -+ no_args (list); -+ *user_func = find_function (funcname); -+ if (*user_func == NULL) -+ { -+ builtin_error (_("function %s not found"), funcname); -+ return EXECUTION_FAILURE; -+ } -+ return EXECUTION_SUCCESS; -+} -+ -+/* Initialize Libcircle. */ -+void -+initialize_libcircle (argc, argv) -+ int argc; -+ char **argv; -+{ -+ circle_rank = CIRCLE_init (argc, argv, CIRCLE_DEFAULT_FLAGS); -+ bind_variable_number ("circle_rank", circle_rank, 0); -+ CIRCLE_enable_logging (CIRCLE_LOG_WARN); -+ CIRCLE_cb_create (internal_create_func); -+ CIRCLE_cb_process (internal_process_func); -+ CIRCLE_cb_reduce_init (internal_reduce_init_func); -+ CIRCLE_cb_reduce_op (internal_reduce_op_func); -+ CIRCLE_cb_reduce_fini (internal_reduce_fini_func); -+} -+ -+/* Finalize Libcircle. */ -+void -+finalize_libcircle (void) -+{ -+ CIRCLE_finalize (); -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+$BUILTIN circle_set_options -+$FUNCTION circle_set_options_builtin -+$SHORT_DOC circle_set_options [flag]... -+Change Libcircle's run-time behavior. -+ -+Arguments: -+ FLAG "split_random", "split_equal", or "create_global" -+ -+Multiple flags can be provided. If no flags are provided, Libcircle -+reverts to its default options. -+ -+Exit Status: -+Returns 0 unless an invalid option is given. -+$END -+/*'*/ -+ -+/* Here is the circle_set_options builtin. */ -+int -+circle_set_options_builtin (list) -+ WORD_LIST *list; -+{ -+ char *word; /* One argument */ -+ int flags = 0; /* Flags to pass to CIRCLE_set_options */ -+ -+ if (list == NULL) -+ flags = CIRCLE_DEFAULT_FLAGS; -+ else -+ while (list != NULL) -+ { -+ word = list->word->word; -+ if (!strcmp (word, "split_random")) -+ flags |= CIRCLE_SPLIT_RANDOM; -+ else if (!strcmp (word, "split_equal")) -+ flags |= CIRCLE_SPLIT_EQUAL; -+ else if (!strcmp (word, "create_global")) -+ flags |= CIRCLE_CREATE_GLOBAL; -+ else -+ { -+ builtin_error (_("invalid flag \"%s\""), word); -+ return (EXECUTION_FAILURE); -+ } -+ list = list->next; -+ } -+ CIRCLE_set_options (flags); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_cb_create -+$FUNCTION circle_cb_create_builtin -+$SHORT_DOC circle_cb_create [func] -+Register a function that will create work when asked. -+ -+Arguments: -+ FUNC User-defined callback function that will invoke -+ circle_enqueue when called -+ -+If FUNC is omitted, no function will be associated with work creation. -+This can be used to nullify a previous circle_cb_create invocation. -+ -+Exit Status: -+Returns 0 unless an invalid function is given or an error occurs. -+$END -+ -+/* Here is the circle_cb_create builtin. */ -+int -+circle_cb_create_builtin (list) -+ WORD_LIST *list; -+{ -+ return find_callback_function (list, &create_func); -+} -+ -+$BUILTIN circle_cb_process -+$FUNCTION circle_cb_process_builtin -+$SHORT_DOC circle_cb_process [func] -+Register a function that will process work when asked. -+ -+Arguments: -+ FUNC User-defined callback function that will invoke -+ circle_enqueue when called -+ -+If FUNC is omitted, no function will be associated with work processing. -+This can be used to nullify a previous circle_cb_process invocation. -+ -+Exit Status: -+Returns 0 unless an invalid function is given or an error occurs. -+$END -+ -+/* Here is the circle_cb_process builtin. */ -+int -+circle_cb_process_builtin (list) -+ WORD_LIST *list; -+{ -+ return find_callback_function (list, &process_func); -+} -+ -+$BUILTIN circle_begin -+$FUNCTION circle_begin_builtin -+$SHORT_DOC circle_begin -+Begin creation and processing of the distributed work queue. -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+ -+/* Here is the circle_begin builtin. */ -+int -+circle_begin_builtin (list) -+ WORD_LIST *list; -+{ -+ no_args (list); -+ CIRCLE_begin (); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_enqueue -+$FUNCTION circle_enqueue_builtin -+$SHORT_DOC circle_enqueue work -+Enqueue work onto the distributed queue. -+ -+Arguments: -+ WORK "Work" as represented by an arbitrary string of limited -+ size (generally around 4KB) -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+ -+/* Here is the circle_enqueue builtin. */ -+int -+circle_enqueue_builtin (list) -+ WORD_LIST *list; -+{ -+ char *work; /* Work to perform */ -+ -+ /* Extract the work argument. */ -+ YES_ARGS (list); -+ work = list->word->word; -+ list = list->next; -+ no_args (list); -+ -+ /* Complain if we're not within a proper callback function. */ -+ if (current_handle == NULL) -+ { -+ builtin_error (_("not within a Libcircle \"create\" or \"process\" callback function")); -+ return EXECUTION_FAILURE; -+ } -+ -+ /* Enqueue the work. */ -+ if (current_handle->enqueue (work) == -1) -+ return EXECUTION_FAILURE; -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_dequeue -+$FUNCTION circle_dequeue_builtin -+$SHORT_DOC circle_dequeue var -+Dequeue work from the distributed queue into a variable. -+ -+Arguments: -+ VAR Variable in which to receive previously enqueued "work" -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+ -+/* Here is the circle_dequeue builtin. */ -+int -+circle_dequeue_builtin (list) -+ WORD_LIST *list; -+{ -+ char *varname; /* Variable in which to store the work string */ -+ char work[CIRCLE_MAX_STRING_LEN+1]; /* Work to perform */ -+ -+ /* Extract the variable-name argument. */ -+ YES_ARGS (list); -+ varname = list->word->word; -+ list = list->next; -+ no_args (list); -+ -+ /* Complain if we're not within a callback function. */ -+ if (current_handle == NULL) -+ { -+ builtin_error (_("not within a Libcircle callback function")); -+ return EXECUTION_FAILURE; -+ } -+ -+ /* Dequeue the work and bind it to the given variable. */ -+ if (current_handle->dequeue (work) == -1) -+ return EXECUTION_FAILURE; -+ bind_variable (varname, work, 0); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_enable_logging -+$FUNCTION circle_enable_logging_builtin -+$SHORT_DOC circle_enable_logging log_level -+Change Libcircle's logging verbosity -+ -+Arguments: -+ LOG_LEVEL "fatal", "error", "warning", "info", or "debug" -+ -+Exit Status: -+Returns 0 unless an invalid option is given. -+$END -+/*'*/ -+ -+/* Here is the circle_enable_logging builtin. */ -+int -+circle_enable_logging_builtin (list) -+ WORD_LIST *list; -+{ -+ char *word; /* One argument */ -+ CIRCLE_loglevel loglevel; /* Level to set */ -+ -+ /* Parse the log level. */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (!strcmp (word, "fatal")) -+ loglevel = CIRCLE_LOG_FATAL; -+ else if (!strcmp (word, "error")) -+ loglevel = CIRCLE_LOG_ERR; -+ else if (!strcmp (word, "warning")) -+ loglevel = CIRCLE_LOG_WARN; -+ else if (!strcmp (word, "info")) -+ loglevel = CIRCLE_LOG_INFO; -+ else if (!strcmp (word, "debug")) -+ loglevel = CIRCLE_LOG_DBG; -+ else -+ { -+ builtin_error (_("invalid log level \"%s\""), word); -+ return (EXECUTION_FAILURE); -+ } -+ -+ /* Set the log level. */ -+ CIRCLE_enable_logging (loglevel); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_abort -+$FUNCTION circle_abort_builtin -+$SHORT_DOC circle_abort -+Terminate queue processing. -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+ -+/* Here is the circle_abort builtin. */ -+int -+circle_abort_builtin (list) -+ WORD_LIST *list; -+{ -+ no_args (list); -+ CIRCLE_abort (); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_checkpoint -+$FUNCTION circle_checkpoint_builtin -+$SHORT_DOC circle_checkpoint -+Checkpoint a work queue to disk. -+ -+Write a file called circle${circle_rank}.txt containing the current -+queue state of rank ${circle_rank}. On a later run, a worker can -+invoke circle_read_restarts to repopulate its queue from such a -+checkpoint file. -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+/*'*/ -+ -+/* Here is the circle_checkpoint builtin. */ -+int -+circle_checkpoint_builtin (list) -+ WORD_LIST *list; -+{ -+ no_args (list); -+ CIRCLE_checkpoint (); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_read_restarts -+$FUNCTION circle_read_restarts_builtin -+$SHORT_DOC circle_read_restarts -+Repopulate a work queue from a disk checkpoint. -+ -+Read queue contents from a file called circle${circle_rank}.txt, which -+was previously produced by circle_checkpoint. -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+/*'*/ -+ -+/* Here is the circle_read_restarts builtin. */ -+int -+circle_read_restarts_builtin (list) -+ WORD_LIST *list; -+{ -+ no_args (list); -+ CIRCLE_read_restarts (); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN circle_cb_reduce_init -+$FUNCTION circle_cb_reduce_init_builtin -+$SHORT_DOC circle_cb_reduce_init [func] -+Register a function that will initiate a reduction operation. -+ -+Arguments: -+ FUNC User-defined callback function that will invoke -+ circle_reduce when called -+ -+FUNC will be invoked on all ranks. -+ -+If FUNC is omitted, no function will be associated with reduction -+initialization. This can be used to nullify a previous -+circle_cb_reduce_init invocation. -+ -+Exit Status: -+Returns 0 unless an invalid function is given or an error occurs. -+$END -+ -+/* Here is the circle_cb_reduce_init builtin. */ -+int -+circle_cb_reduce_init_builtin (list) -+ WORD_LIST *list; -+{ -+ return find_callback_function (list, &reduce_init_func); -+} -+ -+$BUILTIN circle_cb_reduce_op -+$FUNCTION circle_cb_reduce_op_builtin -+$SHORT_DOC circle_cb_reduce_op [func] -+Register a function that will complete a reduction operation. -+ -+Arguments: -+ FUNC User-defined callback function that will receive -+ two items to reduce and invoke circle_reduce on -+ the reduced value -+ -+If FUNC is omitted, no function will be associated with reduction -+execution. This can be used to nullify a previous circle_cb_reduce_op -+invocation. -+ -+Exit Status: -+Returns 0 unless an invalid function is given or an error occurs. -+$END -+ -+/* Here is the circle_cb_reduce_op builtin. */ -+int -+circle_cb_reduce_op_builtin (list) -+ WORD_LIST *list; -+{ -+ return find_callback_function (list, &reduce_op_func); -+} -+ -+$BUILTIN circle_cb_reduce_fini -+$FUNCTION circle_cb_reduce_fini_builtin -+$SHORT_DOC circle_cb_reduce_fini [func] -+Register a function that will complete a reduction operation. -+ -+Arguments: -+ FUNC User-defined callback function that will receive -+ the final reduced data -+ -+If FUNC is omitted, no function will be associated with reduction -+completion. This can be used to nullify a previous -+circle_cb_reduce_fini invocation. -+ -+Libcircle guarantees that FUNC will be invoked only on rank 0. -+ -+Exit Status: -+Returns 0 unless an invalid function is given or an error occurs. -+$END -+ -+/* Here is the circle_cb_reduce_fini builtin. */ -+int -+circle_cb_reduce_fini_builtin (list) -+ WORD_LIST *list; -+{ -+ return find_callback_function (list, &reduce_fini_func); -+} -+ -+$BUILTIN circle_reduce -+$FUNCTION circle_reduce_builtin -+$SHORT_DOC circle_reduce work -+Seed the next phase of a reduction operation -+ -+Arguments: -+ WORK "Work" as represented by an arbitrary string of limited -+ size (generally around 4KB) -+ -+This function should be called both by the callback function -+registered with circle_reduce_init and the callback function -+registered with circle_reduce_op. -+ -+Exit Status: -+Returns 0 unless an error occurs. -+$END -+ -+/* Here is the circle_reduce builtin. */ -+int -+circle_reduce_builtin (list) -+ WORD_LIST *list; -+{ -+ char *work; /* Work to perform */ -+ -+ /* Extract the work argument. */ -+ YES_ARGS (list); -+ work = list->word->word; -+ list = list->next; -+ no_args (list); -+ -+ /* Complain if we're not within a proper callback function. */ -+ if (!within_reduction) -+ { -+ builtin_error (_("not within a Libcircle \"reduce_init\" or \"reduce_op\" callback function")); -+ return EXECUTION_FAILURE; -+ } -+ -+ /* Reduce the work. */ -+ CIRCLE_reduce (work, strlen (work)); -+ return EXECUTION_SUCCESS; -+} -diff -Naur bash-4.3/builtins/Makefile.in mpibash-4.3/builtins/Makefile.in ---- bash-4.3/builtins/Makefile.in 2012-05-25 07:29:19.000000000 -0600 -+++ mpibash-4.3/builtins/Makefile.in 2014-05-13 11:27:37.314100671 -0600 -@@ -141,7 +141,9 @@ - $(srcdir)/times.def $(srcdir)/trap.def $(srcdir)/type.def \ - $(srcdir)/ulimit.def $(srcdir)/umask.def $(srcdir)/wait.def \ - $(srcdir)/reserved.def $(srcdir)/pushd.def $(srcdir)/shopt.def \ -- $(srcdir)/printf.def $(srcdir)/complete.def $(srcdir)/mapfile.def -+ $(srcdir)/printf.def $(srcdir)/complete.def $(srcdir)/mapfile.def \ -+ $(srcdir)/mpi.def \ -+@CIRCLE@ $(srcdir)/circle.def - - STATIC_SOURCE = common.c evalstring.c evalfile.c getopt.c bashgetopt.c \ - getopt.h -@@ -153,7 +155,9 @@ - jobs.o kill.o let.o mapfile.o \ - pushd.o read.o return.o set.o setattr.o shift.o source.o \ - suspend.o test.o times.o trap.o type.o ulimit.o umask.o \ -- wait.o getopts.o shopt.o printf.o getopt.o bashgetopt.o complete.o -+ wait.o getopts.o shopt.o printf.o getopt.o bashgetopt.o complete.o \ -+ mpi.o \ -+@CIRCLE@ circle.o - - CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h tmpbuiltins.c \ - tmpbuiltins.h -@@ -317,6 +321,8 @@ - getopts.o: getopts.def - reserved.o: reserved.def - complete.o: complete.def -+@CIRCLE@ circle.o: circle.def -+mpi.o: mpi.def - - # C files - bashgetopt.o: ../config.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h -@@ -644,6 +650,19 @@ - mapfile.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h - mapfile.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/variables.h $(topdir)/conftypes.h - mapfile.o: $(topdir)/arrayfunc.h ../pathnames.h -+@CIRCLE@ circle.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h -+@CIRCLE@ circle.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h -+@CIRCLE@ circle.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -+@CIRCLE@ circle.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -+@CIRCLE@ circle.o: $(BASHINCDIR)/maxpath.h ../pathnames.h -+mpi.o: ../config.h ../config-top.h ../config-bot.h ../bashintl.h -+mpi.o: ../include/gettext.h ../shell.h ../config.h ../bashjmp.h -+mpi.o: ../include/posixjmp.h ../command.h ../syntax.h ../general.h -+mpi.o: ../bashtypes.h ../include/chartypes.h ../xmalloc.h ../bashansi.h -+mpi.o: ../error.h ../variables.h ../array.h ../assoc.h ../hashlib.h -+mpi.o: ../conftypes.h ../arrayfunc.h ../quit.h ../sig.h ../include/maxpath.h -+mpi.o: ../unwind_prot.h ../dispose_cmd.h ../make_cmd.h ../include/ocache.h -+mpi.o: ../subst.h ../pathnames.h ../externs.h common.h bashgetopt.h - - #bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h - -diff -Naur bash-4.3/builtins/mpi.def mpibash-4.3/builtins/mpi.def ---- bash-4.3/builtins/mpi.def 1969-12-31 17:00:00.000000000 -0700 -+++ mpibash-4.3/builtins/mpi.def 2014-05-13 11:27:37.314100671 -0600 -@@ -0,0 +1,744 @@ -+This file is mpi.def, from which is created mpi.c. -+It implements all of the "mpi_*" builtins in Bash. -+ -+$PRODUCES mpi.c -+ -+#include <config.h> -+ -+#include <stdio.h> -+#if defined (HAVE_UNISTD_H) -+# ifdef _MINIX -+# include <sys/types.h> -+# endif -+# include <unistd.h> -+#endif -+ -+#include "../bashintl.h" -+#include "../shell.h" -+#include "common.h" -+#include "bashgetopt.h" -+#include <mpi.h> -+ -+extern int running_trap, trap_saved_exit_value; -+ -+/* Keep track of who we are within MPI_COMM_WORLD. */ -+static int mpi_rank; -+static int mpi_num_ranks; -+ -+/* Try an MPI operation. Return with an error message on failure. */ -+#define MPI_TRY(STMT) \ -+ do \ -+ { \ -+ int mpierr; \ -+ mpierr = STMT; \ -+ if (mpierr != MPI_SUCCESS) \ -+ return report_mpi_error (mpierr); \ -+ } \ -+ while (0) -+ -+/* Return with a usage message if no arguments remain. */ -+#define YES_ARGS(LIST) \ -+ if ((LIST) == 0) \ -+ { \ -+ builtin_usage (); \ -+ return (EX_USAGE); \ -+ } -+ -+/* Return with an error message if a given variable is read-only or if -+ * we can't write to it for any other reason (e.g., it's defined as a -+ * function). */ -+#define REQUIRE_WRITABLE(NAME) \ -+ do \ -+ { \ -+ SHELL_VAR *bindvar = find_shell_variable (NAME); \ -+ if (bindvar) \ -+ { \ -+ if (readonly_p (bindvar)) \ -+ { \ -+ err_readonly (NAME); \ -+ return (EXECUTION_FAILURE); \ -+ } \ -+ if (unbind_variable (NAME) == -1) \ -+ { \ -+ builtin_error ("Failed to write to variable %s", NAME); \ -+ return (EXECUTION_FAILURE); \ -+ } \ -+ } \ -+ } \ -+ while (0) -+ -+/* Initialize MPI. */ -+void -+initialize_mpi (argc, argv) -+ int argc; -+ char **argv; -+{ -+ int init_done; -+ -+ MPI_Initialized (&init_done); -+ if (!init_done) -+ MPI_Init (&argc, &argv); -+ MPI_Errhandler_set (MPI_COMM_WORLD, MPI_ERRORS_RETURN); -+ MPI_Comm_rank (MPI_COMM_WORLD, &mpi_rank); -+ MPI_Comm_size (MPI_COMM_WORLD, &mpi_num_ranks); -+} -+ -+/* Finalize MPI. */ -+void -+finalize_mpi () -+{ -+ MPI_Finalize (); -+} -+ -+/* Parse an operation name into an MPI_Op. Return 1 on success, 0 on -+ * failure. */ -+static int -+parse_operation (char *name, MPI_Op *op) -+{ -+ /* Define a mapping from operator names to MPI_Op values. */ -+ typedef struct { -+ char *name; /* Operation name (e.g., "sum") */ -+ MPI_Op value; /* Operation value (e.g., MPI_SUM) */ -+ } opname2value_t; -+ static opname2value_t oplist[] = { -+ {"max", MPI_MAX}, -+ {"min", MPI_MIN}, -+ {"sum", MPI_SUM}, -+ {"prod", MPI_PROD}, -+ {"land", MPI_LAND}, -+ {"band", MPI_BAND}, -+ {"lor", MPI_LOR}, -+ {"bor", MPI_BOR}, -+ {"lxor", MPI_LXOR}, -+ {"bxor", MPI_BXOR}, -+ {"maxloc", MPI_MAXLOC}, -+ {"minloc", MPI_MINLOC} -+ }; -+ size_t i; -+ -+ for (i = 0; i < sizeof(oplist)/sizeof(opname2value_t); i++) -+ if (!strcmp(name, oplist[i].name)) -+ { -+ *op = oplist[i].value; -+ if (i > 0) -+ { -+ /* As a performance optimization, bubble up the value we -+ * just found. */ -+ opname2value_t prev = oplist[i - 1]; -+ oplist[i - 1] = oplist[i]; -+ oplist[i] = prev; -+ } -+ return 1; -+ } -+ return 0; -+} -+ -+/* Report an error to the user and return EXECUTION_FAILURE. */ -+static int -+report_mpi_error (mpierr) -+ int mpierr; -+{ -+ char errstr[MPI_MAX_ERROR_STRING]; -+ int errstrlen; -+ -+ MPI_Error_string (mpierr, errstr, &errstrlen); -+ builtin_error ("%s", errstr); -+ return EXECUTION_FAILURE; -+} -+ -+/* Perform the same operation as bind_variable, but with VALUE being a -+ * number, not a string. */ -+static SHELL_VAR * -+bind_variable_number (name, value, flags) -+ const char *name; -+ long value; -+ int flags; -+{ -+ char numstr[25]; /* String version of VALUE */ -+ -+ sprintf (numstr, "%ld", value); -+ return bind_variable (name, numstr, flags); -+} -+ -+/* Perform the same operation as bind_array_variable, but with VALUE -+ * being a number, not a string. */ -+static SHELL_VAR * -+bind_array_variable_number (name, ind, value, flags) -+ char *name; -+ arrayind_t ind; -+ long value; -+ int flags; -+{ -+ char numstr[25]; /* String version of VALUE */ -+ -+ sprintf (numstr, "%ld", value); -+ return bind_array_variable (name, ind, numstr, flags); -+} -+ -+/* Define a reduction-type function (allreduce, scan, exscan, etc.). */ -+typedef int (*reduction_func_t)(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm); -+ -+/* Perform any reduction-type operation (allreduce, scan, exscan, etc.). */ -+static int -+reduction_like (list, funcname, func) -+ WORD_LIST *list; -+ char *funcname; -+ reduction_func_t func; -+{ -+ char *word; /* One argument */ -+ struct { -+ long int value; /* Reduced value */ -+ int rank; /* Rank associated with the above */ -+ } number, result; -+ MPI_Op operation = MPI_SUM; /* Operation to perform */ -+ char *varname; /* Name of the variable to bind the results to */ -+ intmax_t n; -+ int i; -+ -+ /* Parse "-O OPERATION" (optional), where OPERATION is a reduction -+ * operation. */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (ISOPTION (word, 'O')) -+ { -+ list = list->next; -+ if (list == 0) -+ { -+ sh_needarg (funcname); -+ return (EX_USAGE); -+ } -+ word = list->word->word; -+ if (!parse_operation (word, &operation)) -+ { -+ sh_invalidopt ("-O"); -+ return (EX_USAGE); -+ } -+ list = list->next; -+ } -+ -+ /* Parse the argument, which must be a number. */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (!legal_number (word, &n)) -+ { -+ sh_neednumarg (funcname); -+ return (EX_USAGE); -+ } -+ number.value = (long int) n; -+ number.rank = mpi_rank; -+ list = list->next; -+ -+ /* Parse the target variable, which must not be read-only. */ -+ YES_ARGS (list); -+ varname = list->word->word; -+ if (mpi_rank != 0 || func != MPI_Exscan) -+ REQUIRE_WRITABLE (varname); -+ list = list->next; -+ no_args (list); -+ -+ /* Perform the reduction operation. Bind the given array variable -+ * to the result and, for minloc/maxloc, the associated rank. */ -+ if (mpi_rank != 0 || func != MPI_Exscan) { -+ bind_array_variable (varname, 0, "", 0); -+ bind_array_variable (varname, 1, "", 0); -+ } -+ if (operation == MPI_MINLOC || operation == MPI_MAXLOC) -+ { -+ MPI_TRY (func (&number, &result, 1, MPI_LONG_INT, operation, MPI_COMM_WORLD)); -+ if (mpi_rank != 0 || func != MPI_Exscan) -+ bind_array_variable_number (varname, 1, result.rank, 0); -+ } -+ else -+ MPI_TRY (func (&number.value, &result.value, 1, MPI_LONG, operation, MPI_COMM_WORLD)); -+ if (mpi_rank != 0 || func != MPI_Exscan) -+ bind_array_variable_number (varname, 0, result.value, 0); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_comm_rank -+$FUNCTION mpi_comm_rank_builtin -+$SHORT_DOC mpi_comm_rank name -+Return the process's rank in the MPI job. -+ -+Arguments: -+ NAME Scalar variable in which to receive the rank -+ -+Exit Status: -+Returns 0 unless an invalid option is given. -+$END -+/*'*/ -+ -+/* Here is the mpi_comm_rank builtin. */ -+int -+mpi_comm_rank_builtin (list) -+ WORD_LIST *list; -+{ -+ char *varname; /* Name of the variable to bind the results to */ -+ -+ YES_ARGS (list); -+ varname = list->word->word; -+ REQUIRE_WRITABLE (varname); -+ list = list->next; -+ no_args (list); -+ bind_variable_number (varname, mpi_rank, 0); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_comm_size -+$FUNCTION mpi_comm_size_builtin -+$SHORT_DOC mpi_comm_size name -+Return the total number of ranks in the MPI job. -+ -+Arguments: -+ NAME Scalar variable in which to receive the number of ranks -+ -+Exit Status: -+Returns 0 unless an invalid option is given. -+$END -+ -+/* Here is the mpi_comm_size builtin. */ -+int -+mpi_comm_size_builtin (list) -+ WORD_LIST *list; -+{ -+ char *varname; /* Name of the variable to bind the results to */ -+ -+ YES_ARGS (list); -+ varname = list->word->word; -+ REQUIRE_WRITABLE (varname); -+ list = list->next; -+ no_args (list); -+ bind_variable_number (varname, mpi_num_ranks, 0); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_abort -+$FUNCTION mpi_abort_builtin -+$SHORT_DOC mpi_abort [n] -+Abort all processes in the MPI job and exit the shell. -+ -+Exits not only the caller's shell (with a status of N) but also all -+remote shells that are part of the same MPI job. If N is omitted, the -+exit status is that of the last command executed. -+ -+This command should be used only in extreme circumstances. It is -+better for each process to exit normally on its own. -+$END -+/*'*/ -+ -+/* Here is the mpi_abort builtin. */ -+int -+mpi_abort_builtin (list) -+ WORD_LIST *list; -+{ -+ int exit_value; -+ -+ exit_value = (running_trap == 1 && list == 0) ? trap_saved_exit_value : get_exitstat (list); /* Copied from exit.def */ -+ MPI_TRY (MPI_Abort (MPI_COMM_WORLD, exit_value)); -+ return EXECUTION_FAILURE; -+} -+ -+$BUILTIN mpi_send -+$FUNCTION mpi_send_builtin -+$SHORT_DOC mpi_send [-t tag] rank message -+Send a message to a remote process in the same MPI job. -+ -+Options: -+ -t TAG Send the message using tag TAG (default: 0). TAG must -+ be a nonnegative integer. -+ -+Arguments: -+ RANK Whom to send the message to. RANK must be an integer in -+ the range [0, $(mpi_comm_size)-1]. -+ -+ MESSAGE String to send to rank RANK. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_send builtin. */ -+int -+mpi_send_builtin (list) -+ WORD_LIST *list; -+{ -+ char *word; /* One argument */ -+ intmax_t target_rank; /* MPI target rank */ -+ char *message; /* Message to send to rank target_rank */ -+ intmax_t tag = 0; /* Message tag to use */ -+ -+ /* Parse "-t TAG" (optional), where TAG is a number or "any". */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (ISOPTION (word, 't')) -+ { -+ list = list->next; -+ if (list == 0) -+ { -+ sh_needarg ("mpi_recv"); -+ return (EX_USAGE); -+ } -+ word = list->word->word; -+ if (!legal_number (word, &tag)) -+ { -+ sh_neednumarg ("-t"); -+ return (EX_USAGE); -+ } -+ list = list->next; -+ } -+ else if (*word == '-') -+ { -+ sh_invalidopt (word); -+ builtin_usage (); -+ return (EX_USAGE); -+ } -+ -+ /* Parse the target rank, which must be a number. */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (!legal_number (word, &target_rank)) -+ { -+ builtin_error (_("mpi_send: numeric rank required")); -+ return (EX_USAGE); -+ } -+ list = list->next; -+ -+ /* Parse the message to send. */ -+ YES_ARGS (list); -+ message = list->word->word; -+ list = list->next; -+ no_args (list); -+ -+ /* Send the message. */ -+ MPI_TRY (MPI_Send (message, strlen(message)+1, MPI_BYTE, (int)target_rank, (int)tag, MPI_COMM_WORLD)); -+ return EXECUTION_SUCCESS; -+} -+ -+ -+$BUILTIN mpi_recv -+$FUNCTION mpi_recv_builtin -+$SHORT_DOC mpi_recv [-t tag] rank name -+Receive a message from a remote process in the same MPI job. -+ -+Options: -+ -t TAG Receive only messages sent using tag TAG (default: 0). -+ TAG must be either a nonnegative integer or the string -+ "any" to receive messages sent using any tag. -+ -+Arguments: -+ RANK Receive only messages sent from sender RANK. RANK -+ must either be in the range [0, $(mpi_comm_size)-1] or -+ be the string "any" to receive messages from any sender. -+ -+ NAME Array variable in which to receive the message, sender -+ rank, and tag. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_recv builtin. */ -+int -+mpi_recv_builtin (list) -+ WORD_LIST *list; -+{ -+ char *word; /* One argument */ -+ intmax_t source_rank; /* MPI source rank */ -+ char *endptr; /* Used for parsing strings into numbers */ -+ MPI_Status status; /* Status of an MPI operation */ -+ int count; /* Message length in bytes */ -+ intmax_t tag = 0; /* Message tag to use */ -+ char *varname; /* Name of the variable to bind the results to */ -+ static char *message = NULL; /* Message received from MPI */ -+ static size_t alloced = 0; /* Number of bytes allocated for the above */ -+ int opt; /* Parsed option */ -+ -+ /* Parse any options provided. */ -+ reset_internal_getopt (); -+ while ((opt = internal_getopt (list, "t:")) != -1) -+ { -+ switch (opt) -+ { -+ case 't': -+ if (!strcmp (list_optarg, "any")) -+ tag = MPI_ANY_TAG; -+ else if (!legal_number (list_optarg, &tag)) -+ { -+ builtin_error (_("-t: numeric argument or \"any\" required")); -+ return (EX_USAGE); -+ } -+ break; -+ -+ default: -+ sh_invalidopt (word); -+ builtin_usage (); -+ return (EX_USAGE); -+ } -+ } -+ list = loptend; -+ -+ /* Parse the source rank, which must be a number or "any". */ -+ YES_ARGS (list); -+ word = list->word->word; -+ if (!legal_number (word, &source_rank)) -+ { -+ if (!strcmp (word, "any")) -+ source_rank = MPI_ANY_SOURCE; -+ else -+ { -+ builtin_error (_("mpi_recv: numeric rank or \"any\" required")); -+ return (EX_USAGE); -+ } -+ } -+ list = list->next; -+ -+ /* Parse the target variable, which must not be read-only. */ -+ YES_ARGS (list); -+ varname = list->word->word; -+ REQUIRE_WRITABLE (varname); -+ list = list->next; -+ no_args (list); -+ -+ /* Receive a message. Because we don't know long the message will -+ * be, we first probe to get the length. */ -+ MPI_TRY (MPI_Probe ((int)source_rank, (int)tag, MPI_COMM_WORLD, &status)); -+ MPI_TRY (MPI_Get_count (&status, MPI_BYTE, &count)); -+ if (alloced < count) -+ { -+ message = xrealloc (message, count); -+ alloced = count; -+ } -+ MPI_TRY (MPI_Recv (message, count, MPI_BYTE, status.MPI_SOURCE, status.MPI_TAG, MPI_COMM_WORLD, &status)); -+ bind_array_variable (varname, 0, message, 0); -+ bind_array_variable_number (varname, 1, status.MPI_SOURCE, 0); -+ bind_array_variable_number (varname, 2, status.MPI_TAG, 0); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_barrier -+$FUNCTION mpi_barrier_builtin -+$SHORT_DOC mpi_barrier -+Synchronizes all of the processes in the MPI job. -+ -+No process will return from mpi_barrier until all processes have -+called mpi_barrier. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_barrier builtin. */ -+int -+mpi_barrier_builtin (list) -+ WORD_LIST *list; -+{ -+ no_args (list); -+ MPI_TRY (MPI_Barrier (MPI_COMM_WORLD)); -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_bcast -+$FUNCTION mpi_bcast_builtin -+$SHORT_DOC mpi_bcast [message] name -+Broadcast a message to all processes in the same MPI job. -+ -+Arguments: -+ MESSAGE String to broadcast from one process to all the others. -+ -+ NAME Scalar variable in which to receive the broadcast message. -+ -+Exactly one process in the MPI job must specify a message to -+broadcast. No process will return from mpi_bcast until all processes -+have called mpi_bcast. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_bcast builtin. */ -+int -+mpi_bcast_builtin (list) -+ WORD_LIST *list; -+{ -+ char *word; /* One argument */ -+ int root; /* MPI root rank */ -+ char *root_message; /* Message to broadcast */ -+ int msglen; /* Length in bytes of the above (including the NULL byte) */ -+ char *varname; /* Name of the variable to bind the results to */ -+ static int *all_lengths = NULL; /* List of every rank's msglen */ -+ static char *message = NULL; /* Message received from the root */ -+ static int alloced = 0; /* Bytes allocated for the above */ -+ int i; -+ -+ /* Parse the optional message and target variable, which must not be -+ * read-only. */ -+ YES_ARGS (list); -+ if (list->next == NULL) -+ { -+ /* Non-root */ -+ root_message = NULL; -+ msglen = -1; -+ } -+ else -+ { -+ /* Root */ -+ root_message = list->word->word; -+ msglen = (int) strlen(root_message) + 1; -+ list = list->next; -+ } -+ varname = list->word->word; -+ REQUIRE_WRITABLE (varname); -+ list = list->next; -+ no_args (list); -+ -+ /* Acquire global agreement on the root and the message size. */ -+ if (all_lengths == NULL) -+ all_lengths = xmalloc (mpi_num_ranks*sizeof(int)); -+ MPI_TRY (MPI_Allgather (&msglen, 1, MPI_INT, all_lengths, 1, MPI_INT, MPI_COMM_WORLD)); -+ root = -1; -+ for (i = 0; i < mpi_num_ranks; i++) -+ { -+ if (all_lengths[i] == -1) -+ continue; -+ if (root != -1) -+ { -+ builtin_error (_("mpi_bcast: more than one process specified a message")); -+ return (EXECUTION_FAILURE); -+ } -+ root = i; -+ msglen = all_lengths[i]; -+ } -+ if (root == -1) -+ { -+ builtin_error (_("mpi_bcast: no process specified a message")); -+ return (EXECUTION_FAILURE); -+ } -+ -+ /* Broadcast the message. */ -+ if (mpi_rank == root) -+ { -+ MPI_TRY (MPI_Bcast (root_message, msglen, MPI_BYTE, root, MPI_COMM_WORLD)); -+ bind_variable (varname, root_message, 0); -+ } -+ else -+ { -+ if (alloced < msglen) -+ { -+ message = xrealloc (message, msglen); -+ alloced = msglen; -+ } -+ MPI_TRY (MPI_Bcast (message, msglen, MPI_BYTE, root, MPI_COMM_WORLD)); -+ bind_variable (varname, message, 0); -+ } -+ return EXECUTION_SUCCESS; -+} -+ -+$BUILTIN mpi_scan -+$FUNCTION mpi_scan_builtin -+$SHORT_DOC mpi_scan number name -+Perform an inclusive scan across all processes in the same MPI job. -+ -+ -O OPERATION Operation to perform. Must be one of "max", "min", -+ "sum", "prod", "land", "band", "lor", "bor", "lxor", -+ "bxor", "maxloc", or "minloc" (default: "sum"). -+ -+Arguments: -+ NUMBER Integer to use in the scan operation. -+ -+ NAME Array variable in which to receive the result and, in -+ the case of maxloc and minloc, the associated rank. -+ -+In an inclusive-scan operation, each process i presents a number, -+a[i]. Once all processes in the MPI job have presented their number, -+the command returns a[0] to rank 0, a[0]+a[1] to rank 1, -+a[0]+a[1]+a[2] to rank 2, and so forth. The -O option enables "+" to -+be replaced with other operations. -+ -+Inclusive scans can be useful for assigning a unique index to each -+process in the MPI job. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_scan builtin. */ -+int -+mpi_scan_builtin (list) -+ WORD_LIST *list; -+{ -+ return reduction_like (list, "mpi_scan", MPI_Scan); -+} -+ -+$BUILTIN mpi_exscan -+$FUNCTION mpi_exscan_builtin -+$SHORT_DOC mpi_exscan number name -+Perform an exclusive scan across all processes in the same MPI job. -+ -+ -O OPERATION Operation to perform. Must be one of "max", "min", -+ "sum", "prod", "land", "band", "lor", "bor", "lxor", -+ "bxor", "maxloc", or "minloc" (default: "sum"). -+ -+Arguments: -+ NUMBER Integer to use in the scan operation. -+ -+ NAME Array variable in which to receive the result and, in -+ the case of maxloc and minloc, the associated rank. -+ -+In a exclusive-scan operation, each process i presents a number, a[i]. -+Once all processes in the MPI job have presented their number, the -+command assigns a[0] to NAME on rank 1, a[0]+a[1] to NAME on rank 2, -+a[0]+a[1]+a[2] to NAME on rank 3, and so forth. No assignment is -+performed on rank 0. The -O option enables "+" to be replaced with -+other operations. -+ -+Exclusive scans can be useful for assigning a unique index to each -+process in the MPI job. -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_exscan builtin. */ -+int -+mpi_exscan_builtin (list) -+ WORD_LIST *list; -+{ -+ return reduction_like (list, "mpi_exscan", MPI_Exscan); -+} -+ -+$BUILTIN mpi_allreduce -+$FUNCTION mpi_allreduce_builtin -+$SHORT_DOC mpi_allreduce number name -+Reduce numbers from all processes in an MPI job to a single number. -+ -+Options: -+ -+ -O OPERATION Operation to perform. Must be one of "max", "min", -+ "sum", "prod", "land", "band", "lor", "bor", "lxor", -+ "bxor", "maxloc", or "minloc" (default: "sum"). -+ -+Arguments: -+ NUMBER Integer to use in the allreduce operation. -+ -+ NAME Array variable in which to receive the result and, in -+ the case of maxloc and minloc, the associated rank. -+ -+In an all-reduce operation, each process i presents a number, a[i]. -+Once all processes in the MPI job have presented their number, the -+command returns a[0]+a[1]+...+a[n-1] to all ranks. The -O option -+enables "+" to be replaced with other operations. -+ -+All-reduces can be useful for reaching global agreement (e.g., of a -+termination condition). -+ -+Exit Status: -+Returns 0 unless an invalid option is given or an error occurs. -+$END -+ -+/* Here is the mpi_allreduce builtin. */ -+int -+mpi_allreduce_builtin (list) -+ WORD_LIST *list; -+{ -+ return reduction_like (list, "mpi_allreduce", MPI_Allreduce); -+} -diff -Naur bash-4.3/config.h.in mpibash-4.3/config.h.in ---- bash-4.3/config.h.in 2013-06-29 15:35:33.000000000 -0600 -+++ mpibash-4.3/config.h.in 2014-05-13 11:27:37.314100671 -0600 -@@ -1147,6 +1147,12 @@ - /* Define if you have the `__argz_stringify' function. */ - #undef HAVE___ARGZ_STRINGIFY - -+/* Define if you have both the <libcircle.h> header file and the libcircle library. */ -+#undef HAVE_LIBCIRCLE -+ -+/* Define if you have the `CIRCLE_cb_reduce_op' function. */ -+#undef HAVE_CIRCLE_CB_REDUCE_OP -+ - /* End additions for lib/intl */ - - #include "config-bot.h" -diff -Naur bash-4.3/configure.ac mpibash-4.3/configure.ac ---- bash-4.3/configure.ac 2014-02-11 08:37:53.000000000 -0700 -+++ mpibash-4.3/configure.ac 2014-05-13 11:27:37.302100179 -0600 -@@ -24,7 +24,7 @@ - AC_REVISION([for Bash 4.3, version 4.063])dnl - - define(bashvers, 4.3) --define(relstatus, release) -+define(relstatus, MPI) - - AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) - -@@ -813,6 +813,21 @@ - fi - ]) - -+dnl Ensure that we can find an MPI library. -+AC_CHECK_FUNCS([MPI_Init], [], [ -+ AC_MSG_ERROR([Cannot continue without MPI. Consider specifying CC=mpicc.])]) -+ -+dnl If we have Libcircle, use it, too. -+AC_SEARCH_LIBS([CIRCLE_cb_create], [circle], [AC_CHECK_HEADERS([libcircle.h])]) -+if test "x$ac_cv_header_libcircle_h" = xyes; then -+ libcircle_make_prefix="" -+ AC_DEFINE([HAVE_LIBCIRCLE], [1], [Define if you have the Libcircle header and library.]) -+ AC_CHECK_FUNCS([CIRCLE_cb_reduce_op]) -+else -+ libcircle_make_prefix="#" -+fi -+AC_SUBST([CIRCLE], [$libcircle_make_prefix]) -+ - BASH_CHECK_DECL(strtoimax) - BASH_CHECK_DECL(strtol) - BASH_CHECK_DECL(strtoll) -diff -Naur bash-4.3/Makefile.in mpibash-4.3/Makefile.in ---- bash-4.3/Makefile.in 2014-01-25 14:27:30.000000000 -0700 -+++ mpibash-4.3/Makefile.in 2014-05-13 11:27:37.314100671 -0600 -@@ -104,7 +104,7 @@ - VERSPROG = bashversion$(EXEEXT) - VERSOBJ = bashversion.$(OBJEXT) - --Program = bash$(EXEEXT) -+Program = mpibash$(EXEEXT) - Version = @BASHVERS@ - PatchLevel = `$(BUILD_DIR)/$(VERSPROG) -p` - RELSTATUS = @RELSTATUS@ -diff -Naur bash-4.3/shell.c mpibash-4.3/shell.c ---- bash-4.3/shell.c 2014-01-14 06:04:32.000000000 -0700 -+++ mpibash-4.3/shell.c 2014-05-13 11:27:37.314100671 -0600 -@@ -107,6 +107,13 @@ - extern char *primary_prompt, *secondary_prompt; - extern char *this_command_name; - -+extern void initialize_mpi __P((int, char **)); -+extern void finalize_mpi __P((void)); -+#ifdef HAVE_LIBCIRCLE -+extern void initialize_libcircle __P((int, char **)); -+extern void finalize_libcircle __P((void)); -+#endif -+ - /* Non-zero means that this shell has already been run; i.e. you should - call shell_reinitialize () if you need to start afresh. */ - int shell_initialized = 0; -@@ -324,7 +331,7 @@ - static void init_interactive_script __P((void)); - - static void set_shell_name __P((char *)); --static void shell_initialize __P((void)); -+static void shell_initialize __P((int, char **)); - static void shell_reinitialize __P((void)); - - static void show_shell_usage __P((FILE *, int)); -@@ -561,7 +568,7 @@ - - /* From here on in, the shell must be a normal functioning shell. - Variables from the environment are expected to be set, etc. */ -- shell_initialize (); -+ shell_initialize (argc, argv); - - set_default_lang (); - set_default_locale_vars (); -@@ -941,6 +948,12 @@ - end_job_control (); - #endif /* JOB_CONTROL */ - -+#ifdef HAVE_LIBCIRCLE -+ finalize_libcircle (); -+#else -+ finalize_mpi (); -+#endif -+ - /* Always return the exit status of the last command to our parent. */ - sh_exit (s); - } -@@ -1691,7 +1704,9 @@ - /* Do whatever is necessary to initialize the shell. - Put new initializations in here. */ - static void --shell_initialize () -+shell_initialize (argc, argv) -+ int argc; -+ char **argv; - { - char hostname[256]; - -@@ -1760,6 +1775,17 @@ - initialize_shell_options (privileged_mode||running_setuid); - initialize_bashopts (privileged_mode||running_setuid); - #endif -+ -+ /* Initialize Libcircle and MPI. */ -+#ifdef HAVE_LIBCIRCLE -+ initialize_libcircle (argc, argv); -+ initialize_mpi (argc, argv); -+ bind_variable ("libcircle", "yes", 0); -+#else -+ initialize_mpi (argc, argv); -+ bind_variable ("libcircle", "no", 0); -+#endif -+ bind_variable ("mpibash", "yes", 0); - } - - /* Function called by main () when it appears that the shell has already diff --git a/app-shells/mpibash/metadata.xml b/app-shells/mpibash/metadata.xml index 372a889b8..897aa2e6b 100644 --- a/app-shells/mpibash/metadata.xml +++ b/app-shells/mpibash/metadata.xml @@ -1,16 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> - <herd>base-system</herd> - <use> - <flag name="bashlogger">Log ALL commands typed into bash; should ONLY be - used in restricted environments such as honeypots</flag> - <flag name="mem-scramble">Build with custom malloc/free overwriting allocated/freed memory</flag> - <flag name="net">Enable /dev/tcp/host/port redirection</flag> - <flag name="plugins">Add support for loading builtins at runtime via - 'enable'</flag> - </use> - <upstream> - <remote-id type="cpe">cpe:/a:gnu:bash</remote-id> - </upstream> + <herd>sci</herd> </pkgmetadata> diff --git a/app-shells/mpibash/mpibash-1.1.ebuild b/app-shells/mpibash/mpibash-1.1.ebuild new file mode 100644 index 000000000..538e32fb1 --- /dev/null +++ b/app-shells/mpibash/mpibash-1.1.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +DESCRIPTION="Parallel scripting right from the Bourne-Again Shell (Bash)" +HOMEPAGE="http://www.ccs3.lanl.gov/~pakin/software/mpibash-4.3.html" +SRC_URI="https://github.com/losalamos/MPI-Bash/releases/download/v${PV}/${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" +IUSE="examples" + +DEPEND="virtual/mpi + app-shells/bash[plugins] + sys-cluster/libcircle" +RDEPEND="${DEPEND}" + +src_configure() { + econf --with-bashdir="${EPREFIX}"/usr/include/bash-plugins +} + +src_install() { + default + use examples || rm -r "${ED}/usr/share/doc/${PF}/examples" || die +} diff --git a/app-shells/mpibash/mpibash-4.3_p30-r1.ebuild b/app-shells/mpibash/mpibash-4.3_p30-r1.ebuild deleted file mode 100644 index 0328448e5..000000000 --- a/app-shells/mpibash/mpibash-4.3_p30-r1.ebuild +++ /dev/null @@ -1,277 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-shells/bash/bash-4.3_p30-r1.ebuild,v 1.1 2014/11/09 20:41:28 mgorny Exp $ - -EAPI=5 - -inherit autotools eutils flag-o-matic toolchain-funcs multilib - -# Official patchlevel -# See ftp://ftp.cwru.edu/pub/bash/bash-4.3-patches/ -PLEVEL=${PV##*_p} -MY_PV=${PV/_p*} -MY_PV=${MY_PV/_/-} -MY_P=${PN#mpi}-${MY_PV} -[[ ${PV} != *_p* ]] && PLEVEL=0 -patches() { - local opt=$1 plevel=${2:-${PLEVEL}} pn=${3:-${PN#mpi}} pv=${4:-${MY_PV}} - [[ ${plevel} -eq 0 ]] && return 1 - eval set -- {1..${plevel}} - set -- $(printf "${pn}${pv/\.}-%03d " "$@") - if [[ ${opt} == -s ]] ; then - echo "${@/#/${DISTDIR}/}" - else - local u - for u in ftp://ftp.cwru.edu/pub/bash mirror://gnu/${pn} ; do - printf "${u}/${pn}-${pv}-patches/%s " "$@" - done - fi -} - -# The version of readline this bash normally ships with. -READLINE_VER="6.3" - -DESCRIPTION="Parallel scripting right from the Bourne-Again Shell (Bash)" -HOMEPAGE="http://www.ccs3.lanl.gov/~pakin/software/mpibash-4.3.html" -SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)" -[[ ${PV} == *_rc* ]] && SRC_URI+=" ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~amd64-linux" -IUSE="afs bashlogger examples mem-scramble +net nls plugins +readline vanilla" - -DEPEND=">=sys-libs/ncurses-5.2-r2 - readline? ( >=sys-libs/readline-${READLINE_VER} ) - nls? ( virtual/libintl )" -RDEPEND="${DEPEND} - virtual/mpi - sys-cluster/libcircle - !<sys-apps/portage-2.1.6.7_p1 - !<sys-apps/paludis-0.26.0_alpha5" -# we only need yacc when the .y files get patched (bash42-005) -DEPEND+=" virtual/yacc" - -S=${WORKDIR}/${MY_P} - -pkg_setup() { - if is-flag -malign-double ; then #7332 - eerror "Detected bad CFLAGS '-malign-double'. Do not use this" - eerror "as it breaks LFS (struct stat64) on x86." - die "remove -malign-double from your CFLAGS mr ricer" - fi - if use bashlogger ; then - ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs." - ewarn "This will log ALL output you enter into the shell, you have been warned." - fi -} - -src_unpack() { - unpack ${MY_P}.tar.gz -} - -src_prepare() { - # Include official patches - [[ ${PLEVEL} -gt 0 ]] && epatch $(patches -s) - - # Clean out local libs so we know we use system ones w/releases. - if [[ ${PV} != *_rc* ]] ; then - rm -rf lib/{readline,termcap}/* - touch lib/{readline,termcap}/Makefile.in # for config.status - sed -ri -e 's:\$[(](RL|HIST)_LIBSRC[)]/[[:alpha:]]*.h::g' Makefile.in || die - fi - - # Avoid regenerating docs after patches #407985 - sed -i -r '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in || die - touch -r . doc/* - - epatch "${FILESDIR}"/${PN#mpi}-4.3-compat-lvl.patch - epatch "${FILESDIR}"/${PN#mpi}-4.3-parse-time-keyword.patch - epatch "${FILESDIR}"/${PN#mpi}-4.3-append-process-segfault.patch - epatch "${FILESDIR}"/${PN#mpi}-4.3-term-cleanup.patch - epatch "${FILESDIR}"/${PN}-4.3.patch - - epatch_user - - eautoconf -} - -src_configure() { - local myconf=() - - # For descriptions of these, see config-top.h - # bashrc/#26952 bash_logout/#90488 ssh/#24762 - if use prefix ; then - append-cppflags \ - -DDEFAULT_PATH_VALUE=\'\"${EPREFIX}/usr/sbin:${EPREFIX}/usr/bin:${EPREFIX}/sbin:${EPREFIX}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\' \ - -DSTANDARD_UTILS_PATH=\'\"${EPREFIX}/bin:${EPREFIX}/usr/bin:${EPREFIX}/sbin:${EPREFIX}/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin\"\' \ - -DSYS_BASHRC=\'\"${EPREFIX}/etc/bash/bashrc\"\' \ - -DSYS_BASH_LOGOUT=\'\"${EPREFIX}/etc/bash/bash_logout\"\' \ - -DNON_INTERACTIVE_LOGIN_SHELLS \ - -DSSH_SOURCE_BASHRC \ - $($(tc-getPKG_CONFIG) --cflags libcircle) \ - $(use bashlogger && echo -DSYSLOG_HISTORY) - else - append-cppflags \ - -DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\' \ - -DSTANDARD_UTILS_PATH=\'\"/bin:/usr/bin:/sbin:/usr/sbin\"\' \ - -DSYS_BASHRC=\'\"/etc/bash/bashrc\"\' \ - -DSYS_BASH_LOGOUT=\'\"/etc/bash/bash_logout\"\' \ - -DNON_INTERACTIVE_LOGIN_SHELLS \ - -DSSH_SOURCE_BASHRC \ - $($(tc-getPKG_CONFIG) --cflags libcircle) \ - $(use bashlogger && echo -DSYSLOG_HISTORY) - fi - - # Don't even think about building this statically without - # reading Bug 7714 first. If you still build it statically, - # don't come crying to us with bugs ;). - #use static && export LDFLAGS="${LDFLAGS} -static" - use nls || myconf+=( --disable-nls ) - - # Historically, we always used the builtin readline, but since - # our handling of SONAME upgrades has gotten much more stable - # in the PM (and the readline ebuild itself preserves the old - # libs during upgrades), linking against the system copy should - # be safe. - # Exact cached version here doesn't really matter as long as it - # is at least what's in the DEPEND up above. - export ac_cv_rl_version=${READLINE_VER} - - # Force linking with system curses ... the bundled termcap lib - # sucks bad compared to ncurses. For the most part, ncurses - # is here because readline needs it. But bash itself calls - # ncurses in one or two small places :(. - - if [[ ${PV} != *_rc* ]] ; then - # Use system readline only with released versions. - myconf+=( --with-installed-readline=. ) - fi - - if use plugins; then - append-ldflags -Wl,-rpath,/usr/$(get_libdir)/bash - else - # Disable the plugins logic by hand since bash doesn't - # provide a way of doing it. - export ac_cv_func_dl{close,open,sym}=no \ - ac_cv_lib_dl_dlopen=no ac_cv_header_dlfcn_h=no - sed -i \ - -e '/LOCAL_LDFLAGS=/s:-rdynamic::' \ - configure || die - fi - tc-export AR #444070 - LIBS="-lcircle" CC=mpicc \ - econf \ - --docdir='$(datarootdir)'/doc/${PF} \ - --htmldir='$(docdir)/html' \ - --with-curses \ - $(use_with afs) \ - $(use_enable net net-redirections) \ - --disable-profiling \ - $(use_enable mem-scramble) \ - $(use_with mem-scramble bash-malloc) \ - $(use_enable readline) \ - $(use_enable readline history) \ - $(use_enable readline bang-history) \ - "${myconf[@]}" -} - -src_compile() { - emake - - if use plugins ; then - emake -C examples/loadables all others - fi -} - -src_install() { - emake install DESTDIR="${D}" - - find "${ED}" -name "bashbug*" -delete || die - rm -rf "${ED}"/usr/share/locale - mv "${ED}"/usr/share/man/man1/{,mpi}bash.1 || die - mv "${ED}"/usr/share/info/{,mpi}bash.info || die - return 0 - - local d f - - default - - dodir /bin - mv "${ED}"/usr/bin/bash "${ED}"/bin/ || die - dosym bash /bin/rbash - - insinto /etc/bash - doins "${FILESDIR}"/bash_logout - newins "${FILESDIR}"/bashrc-r1 bashrc - keepdir /etc/bash/bashrc.d - insinto /etc/skel - for f in bash{_logout,_profile,rc} ; do - newins "${FILESDIR}"/dot-${f} .${f} - done - - local sed_args=( - -e "s:#${USERLAND}#@::" - -e '/#@/d' - ) - if ! use readline ; then - sed_args+=( #432338 - -e '/^shopt -s histappend/s:^:#:' - -e 's:use_color=true:use_color=false:' - ) - fi - sed -i \ - "${sed_args[@]}" \ - "${ED}"/etc/skel/.bashrc \ - "${ED}"/etc/bash/bashrc || die - - if use plugins ; then - exeinto /usr/$(get_libdir)/bash - doexe $(echo examples/loadables/*.o | sed 's:\.o::g') - insinto /usr/include/bash-plugins - doins *.h builtins/*.h include/*.h lib/{glob/glob.h,tilde/tilde.h} - fi - - if use examples ; then - for d in examples/{functions,misc,scripts,startup-files} ; do - exeinto /usr/share/doc/${PF}/${d} - insinto /usr/share/doc/${PF}/${d} - for f in ${d}/* ; do - if [[ ${f##*/} != PERMISSION ]] && [[ ${f##*/} != *README ]] ; then - doexe ${f} - else - doins ${f} - fi - done - done - fi - - doman doc/*.1 - newdoc CWRU/changelog ChangeLog - dosym bash.info /usr/share/info/bashref.info -} - -pkg_preinst() { - return 0 - if [[ -e ${EROOT}/etc/bashrc ]] && [[ ! -d ${EROOT}/etc/bash ]] ; then - mkdir -p "${EROOT}"/etc/bash - mv -f "${EROOT}"/etc/bashrc "${EROOT}"/etc/bash/ - fi - - if [[ -L ${EROOT}/bin/sh ]] ; then - # rewrite the symlink to ensure that its mtime changes. having /bin/sh - # missing even temporarily causes a fatal error with paludis. - local target=$(readlink "${EROOT}"/bin/sh) - local tmp=$(emktemp "${EROOT}"/bin) - ln -sf "${target}" "${tmp}" - mv -f "${tmp}" "${EROOT}"/bin/sh - fi -} - -pkg_postinst() { - return 0 - # If /bin/sh does not exist, provide it - if [[ ! -e ${EROOT}/bin/sh ]] ; then - ln -sf bash "${EROOT}"/bin/sh - fi -} |