aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Junghans <ottxor@gentoo.org>2015-02-13 14:46:14 -0700
committerChristoph Junghans <ottxor@gentoo.org>2015-02-13 14:46:31 -0700
commit63895749c0448ecc12c36b3aeec0df367d91a1b4 (patch)
tree51bc19af8c2254107f50d8774322785dc952ff95 /app-shells/mpibash
parentfix Gentoo copyright header (diff)
downloadsci-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/ChangeLog11
-rw-r--r--app-shells/mpibash/Manifest32
-rw-r--r--app-shells/mpibash/files/bash-4.3-append-process-segfault.patch18
-rw-r--r--app-shells/mpibash/files/bash-4.3-compat-lvl.patch13
-rw-r--r--app-shells/mpibash/files/bash-4.3-parse-time-keyword.patch30
-rw-r--r--app-shells/mpibash/files/bash-4.3-term-cleanup.patch47
-rw-r--r--app-shells/mpibash/files/mpibash-4.3.patch1565
-rw-r--r--app-shells/mpibash/metadata.xml13
-rw-r--r--app-shells/mpibash/mpibash-1.1.ebuild28
-rw-r--r--app-shells/mpibash/mpibash-4.3_p30-r1.ebuild277
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
-}