summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew T Hoare2017-12-17 22:57:03 +0000
committerMatthew T Hoare2017-12-17 22:57:03 +0000
commitade4d1a8bf93d8df62bc76ff81c81d2466efaca0 (patch)
tree215cd904cee8c25ebb7c7ddd7aba53c25f6cb59f
downloadaur-ade4d1a8bf93d8df62bc76ff81c81d2466efaca0.tar.gz
ksh93-git: first commit
-rw-r--r--.SRCINFO28
-rw-r--r--LICENSE203
-rw-r--r--PKGBUILD68
-rw-r--r--ksh93.install34
-rw-r--r--sample.kshrc91
5 files changed, 424 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..c5cd9949ca16
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,28 @@
+# Generated by mksrcinfo v8
+# Sun Dec 17 22:56:07 UTC 2017
+pkgbase = ksh93-git
+ pkgdesc = AT&T's KornShell (ksh93) from ast-base, Meson Build
+ pkgver = r271.6aa47e0
+ pkgrel = 1
+ url = http://kornshell.org/
+ install = ksh93.install
+ arch = x86_64
+ license = EPL
+ license = CPL
+ makedepends = binutils
+ makedepends = gcc
+ makedepends = git
+ makedepends = meson
+ depends = glibc
+ provides = ksh
+ conflicts = ksh
+ conflicts = ksh93
+ source = ksh93::git+http://github.com/att/ast#branch=master
+ source = sample.kshrc
+ source = LICENSE
+ sha512sums = SKIP
+ sha512sums = aeb54cb5ec944628ab64a692d364cab14bbc312c1a892b3692058f7f7b1cf72c95a6bfb4a95ffc3c4ddfb8f8ca4d17707023108d5504f912cb3ceb9e8d4da6b3
+ sha512sums = 917ae643f241741919eb7f4633ec7b3cd58fb0d19150a017773562c36b15812bcf5f680024994d546ef18d771ab25aefc4bfe57ebd0c08043c9ad17e9cd7e076
+
+pkgname = ksh93-git
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000000..f735bee0e8d1
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,203 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+ distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+ i) changes to the Program, and
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and are
+ distributed by that particular Contributor. A Contribution 'originates'
+ from a Contributor if it was added to the Program by such Contributor
+ itself or anyone acting on such Contributor's behalf. Contributions do not
+ include additions to the Program which: (i) are separate modules of
+ software distributed in conjunction with the Program under their own
+ license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free copyright license to
+ reproduce, prepare derivative works of, publicly display, publicly
+ perform, distribute and sublicense the Contribution of such Contributor,
+ if any, and such derivative works, in source code and object code form.
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free patent license under
+ Licensed Patents to make, use, sell, offer to sell, import and otherwise
+ transfer the Contribution of such Contributor, if any, in source code and
+ object code form. This patent license shall apply to the combination of
+ the Contribution and the Program if, at the time the Contribution is
+ added by the Contributor, such addition of the Contribution causes such
+ combination to be covered by the Licensed Patents. The patent license
+ shall not apply to any other combinations which include the Contribution.
+ No hardware per se is licensed hereunder.
+ c) Recipient understands that although each Contributor grants the licenses
+ to its Contributions set forth herein, no assurances are provided by any
+ Contributor that the Program does not infringe the patent or other
+ intellectual property rights of any other entity. Each Contributor
+ disclaims any liability to Recipient for claims brought by any other
+ entity based on infringement of intellectual property rights or
+ otherwise. As a condition to exercising the rights and licenses granted
+ hereunder, each Recipient hereby assumes sole responsibility to secure
+ any other intellectual property rights needed, if any. For example, if a
+ third party patent license is required to allow Recipient to distribute
+ the Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+ d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+ b) its license agreement:
+ i) effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or
+ conditions of title and non-infringement, and implied warranties or
+ conditions of merchantability and fitness for a particular purpose;
+ ii) effectively excludes on behalf of all Contributors all liability for
+ damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits;
+ iii) states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party; and
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+ b) a copy of this Agreement must be included with each copy of the Program.
+ Contributors may not remove or alter any copyright notices contained
+ within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore,
+if a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits and
+other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such Commercial
+Contributor in connection with its distribution of the Program in a commercial
+product offering. The obligations in this section do not apply to any claims
+or Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such claim at
+its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties are
+such Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using
+and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage to
+or loss of data, programs or equipment, and unavailability or interruption of
+operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue
+and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as the Agreement
+Steward to a suitable separate entity. Each new version of the Agreement will
+be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..f2c2b5035759
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,68 @@
+# Maintainer: Head_on_a_Stick <matthew.t.hoare dot gmail at com>
+
+_pkgname='ksh93'
+pkgname="${_pkgname}-git"
+pkgver=r271.6aa47e0
+pkgrel=1
+pkgdesc="AT&T's KornShell (${_pkgname}) from ast-base, Meson Build"
+arch=('x86_64')
+url='http://kornshell.org/'
+license=('EPL' 'CPL')
+depends=('glibc')
+makedepends=('binutils' 'gcc' 'git' 'meson')
+conflicts=('ksh' 'ksh93')
+provides=('ksh')
+install='ksh93.install'
+source=("${_pkgname}::git+http://github.com/att/ast#branch=master"
+'sample.kshrc'
+'LICENSE')
+sha512sums=('SKIP'
+'aeb54cb5ec944628ab64a692d364cab14bbc312c1a892b3692058f7f7b1cf72c95a6bfb4a95ffc3c4ddfb8f8ca4d17707023108d5504f912cb3ceb9e8d4da6b3'
+'917ae643f241741919eb7f4633ec7b3cd58fb0d19150a017773562c36b15812bcf5f680024994d546ef18d771ab25aefc4bfe57ebd0c08043c9ad17e9cd7e076')
+
+pkgver() {
+ cd "${_pkgname}"
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
+build() {
+ cd "${srcdir}/${_pkgname}"
+ meson build
+ ninja -C build
+}
+
+package() {
+ cd "$srcdir"
+ install -dm 755 "${pkgdir}/usr/share/ksh"
+ install -dm 755 "${pkgdir}/usr/share/ksh/functions"
+ install -dm 755 "${pkgdir}/usr/share/doc/ksh"
+ install -dm 755 "${pkgdir}/usr/share/licenses/ksh"
+ install -Dm 644 LICENSE "${pkgdir}/usr/share/licenses/ksh/LICENCE"
+ install -Dm 644 sample.kshrc "${pkgdir}/etc/skel/.kshrc"
+ cd "${srcdir}/$_pkgname"
+ install -Dm 644 "src/cmd/${_pkgname}/nval.3" "${pkgdir}/usr/share/man/man3/nval.3"
+ install -Dm 644 "src/cmd/${_pkgname}/shell.3" "${pkgdir}/usr/share/man/man3/shell.3"
+ install -Dm 644 "src/cmd/${_pkgname}/ksh.1" "${pkgdir}/usr/share/man/man1/ksh.1"
+ local _man
+ for _man in 'ksh93' 'rksh' 'rksh93'; do
+ ln -sf 'ksh.1' "${pkgdir}/usr/share/man/man1/${_man}.1"
+ done
+ local _fun
+ for _fun in 'dirs' 'popd' 'pushd'; do
+ install -Dm 644 "src/cmd/${_pkgname}/fun/${_fun}" "${pkgdir}/usr/share/ksh/functions/${_fun}"
+ done
+ local _dox
+ for _dox in 'builtins.mm' 'COMPATIBILITY' 'DESIGN' 'OBSOLETE' 'PROMO.mm' 'README' 'RELEASE' 'RELEASE88' 'RELEASE93' 'TYPES'; do
+ install -Dm 644 "src/cmd/${_pkgname}/${_dox}" "${pkgdir}/usr/share/doc/ksh/${_dox}"
+ done
+ install -Dm 755 "build/src/cmd/${_pkgname}/ksh" "${pkgdir}/usr/bin/ksh"
+ local _exe
+ for _exe in 'ksh93' 'rksh' 'rksh93'; do
+ ln -sf 'ksh' "${pkgdir}/usr/bin/${_exe}"
+ done
+ install -Dm 755 "build/src/cmd/${_pkgname}/shcomp" "${pkgdir}/usr/bin/shcomp"
+ local _lib
+ for _lib in 'libast' 'libcmd' 'libcoshell'; do
+ install -Dm 755 "build/src/lib/${_lib}/${_lib}.so" "${pkgdir}/usr/lib/${_lib}.so"
+ done
+}
diff --git a/ksh93.install b/ksh93.install
new file mode 100644
index 000000000000..2f098b9162ef
--- /dev/null
+++ b/ksh93.install
@@ -0,0 +1,34 @@
+pre_install() {
+ :
+}
+
+post_install() {
+ grep -qle '/bin/ksh$' '/etc/shells' || echo $'/usr/bin/ksh\n/bin/ksh' >> '/etc/shells'
+}
+
+pre_upgrade() {
+ :
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ if getent passwd root | cut -d: -f7 | grep -qle '/bin/ksh'; then
+ echo '**************************************************'
+ echo '*** Warning: root has ksh as the login shell.'
+ echo '*** Shell changed to sh to prevent loss of access.'
+ echo '**************************************************'
+ chsh -s '/bin/sh'
+ fi
+ sed -i -e '/^\/bin\/ksh$/d' -e '/^\/usr\/bin\/ksh$/d' '/etc/shells'
+}
+
+post_remove() {
+ # /usr/bin/ksh is also detected
+ if getent passwd | cut -d: -f7 | grep -qle '/bin/ksh'; then
+ echo '*** Warning: Some users have ksh as their login shell.'
+ echo '*** Fix promptly to restore access.'
+ fi
+}
diff --git a/sample.kshrc b/sample.kshrc
new file mode 100644
index 000000000000..ae6834b370d9
--- /dev/null
+++ b/sample.kshrc
@@ -0,0 +1,91 @@
+# This file contains examples of some of the things you may want to
+# include in a user startup file.
+
+# skip this setup for non-interactive shells
+[[ -o interactive && -t 0 ]] || return
+
+# disable core dumps
+ulimit -c 0
+
+# Environment variables. These could go in .profile if you prefer
+export VISUAL=vi
+export EDITOR=$VISUAL
+export PAGER=less
+export GZIP=-9
+
+# set some shell options
+set -o emacs -o trackall -o globstar
+
+# specify search path for autoloadable functions
+FPATH=/usr/share/ksh/functions:~/.func
+
+# avoid certain file types in completion
+FIGNORE='@(*.o|~*)'
+
+# save more commands in history
+HISTSIZE=500
+HISTEDIT=$EDITOR
+
+# aliases for various command shortcuts
+alias ll='ls -lFb'
+alias la='ls -LaFb'
+alias pu='ps -fu $USER'
+alias md=mkdir
+alias rd=rmdir
+
+# avoid problems with long argument lists for some commands (like xargs)
+alias cp='command -x cp' mv='command -x mv' grep='command -x grep'
+
+# some short functions
+
+# empty line
+empty() { echo $'\e[3J'; }
+
+# man page viewer
+mere() { nroff -man -Tman $1 | ${MANPAGER:-less}; }
+
+# view/manipulate and export environment variables
+setenv() {
+ case $# in
+ 0) export ;;
+ 1) export "$1"= ;;
+ *) export "$1"="$2" ;;
+ esac
+ }
+
+# Use keyboard trap to map keys to other keys
+# note that escape sequences vary for different terminals so these
+# may not work for you
+trap '.sh.edchar=${keymap[${.sh.edchar}]:-${.sh.edchar}}' KEYBD
+keymap=(
+ [$'\eOD']=$'\eb' # Ctrl-Left -> move word left
+ [$'\eOC']=$'\ef' # Ctrl-Right -> move word right
+ [$'\e[3~']=$'\cd' # Delete -> delete to right
+ [$'\e[1~']=$'\ca' # Home -> move to beginning of line
+ [$'\e[4~']=$'\ce' # End -> move to end of line
+)
+
+# keep a shortened version of the current directory for the prompt
+function _cd {
+ typeset -n dir=HOME
+
+ "cd" "$@"
+
+ if [[ $PWD = $HOME* && $HOME != / ]]; then
+ _pwd=\~${PWD#$HOME}
+ return
+ fi
+
+ for dir in JAVA_HOME GNOMEDIR; do
+ if [[ -n $dir && $PWD = $dir* ]]; then
+ _pwd="\$${!dir}${PWD#$dir}"
+ return
+ fi
+ done
+ _pwd="$PWD"
+}
+alias cd=_cd
+_cd .
+
+# put the current directory and history number in the prompt
+PS1='$_pwd [!]\$ '