ksh/ksh.spec

374 lines
13 KiB
RPMSpec
Raw Normal View History

#
# spec file for package ksh (Version 93s)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: ksh
BuildRequires: bind-libs bind-utils bison flex gdbm-devel glibc-devel libbz2-devel ncurses-devel procps psmisc pwdutils zlib-devel
URL: http://www.research.att.com/~gsf/download/
License: Other License(s), see package
Group: System/Shells
PreReq: /bin/ln /etc/bash.bashrc /bin/true
Autoreqprov: on
Version: 93s
Release: 15
Summary: Korn Shell
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: INIT.2007-03-28.tar.bz2
Source1: ast-ksh.2007-03-28.tar.bz2
Source2: Agreement
Source3: Warning
Source30: rpmlintrc
Patch: ksh93.dif
Patch1: workaround-stupid-build-system.diff
Patch2: ksh-qemu.patch
Patch3: ksh93-shift_ijs.dif
Patch4: ksh93-gmt2utc.dif
Patch5: ksh93-uname.dif
Patch6: ksh93-vi.dif
Patch7: ksh93-profile.dif
Patch8: ksh93-test.dif
Patch9: ksh93-compat.dif
Patch10: ksh93-suid_exec.dif
%description
The original Korn Shell. The ksh is an sh-compatible command
interpreter that executes commands read from standard input or from a
file.
Authors:
--------
David Korn <dgk@research.att.com>
Glenn Fowler <gsf@research.att.com>
Phong Vo <kpv@research.att.com>
%package -n ksh-devel
Summary: Korn Shell development environment
Group: Development/Libraries/C and C++
Requires: ksh = %{version}-%{release}
Autoreqprov: on
%description -n ksh-devel
The package includes C header files and the static libraries together
with the shared libraries for linking with other projects. Please be
aware that the CPL licensed code can not be used within GPL licensed
project.
Authors:
--------
David Korn <dgk@research.att.com>
Glenn Fowler <gsf@research.att.com>
Phong Vo <kpv@research.att.com>
%prep
%setup -n ksh93 -c -a 0 -a 1
%patch
%patch1
%ifarch %arm
%patch2
%endif
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9
%patch10
%build
#
# If _you_ are knowing how to fix this in the autogenerated
# sources of ksh/ast without breaking them, then let me know.
#
IGNORE="-Wno-missing-braces -Wno-unknown-pragmas -Wno-parentheses"
IGNORE="$IGNORE -Wno-char-subscripts -Wno-uninitialized -Wno-implicit"
#
#
FEATURE="-DSHOPT_SYSRC=1 -DSHOPT_REMOTE=1 -DSHOPT_CMDLIB_BLTIN=1"
FEATURE="$FEATURE -DSH_CMDLIB_DIR=\\\"/%{_lib}/ast/bin\\\" -DDEFSHELL=\\\"/bin/ksh\\\""
FEATURE="$FEATURE -DTHISPROG=\\\"/%{_lib}/ast/bin/suid_exec\\\""
#
#
echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 -
if ./test64 ; then
LARGEFILE=""
else
LARGEFILE="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
fi
rm -f ./test64
CCFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE $LARGEFILE -fPIC"
CCFLAGS="$CCFLAGS -fno-strict-aliasing -g -pipe $IGNORE $FEATURE"
LDFLAGS="-lm"
HOSTTYPE=${RPM_ARCH%%*-linux*}
CC=gcc
mam_cc_L=use
UNIVERSE=att
export CCFLAGS LDFLAGS CC mam_cc_L UNIVERSE
bin/package make CC=$CC cc=$CC
root=$(echo ${PWD}/arch/linux*)
test -d $root || exit 1
log=${root}/lib/package/gen/make.out
test -s $log || exit 1
for lib in libast libcmd libdll libshell ; do
obj=$(grep -E "ar *cr *${lib}.a" $log | sed "s@+ *ar *cr *${lib}.a@@")
test $? -eq 0 || exit 1
case "$lib" in
libshell)
base=src/cmd/ksh93
vers=$(grep ^VERSION ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -ldll -lcmd -last -lm -ldl"
;;
libdll)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -ldl -last"
;;
libcmd)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -last"
;;
libast)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast"
;;
esac
soname="-Wl,-soname,${lib}.so.${vers%.*},-stats"
pushd ${root}/${base}
$CC -shared $soname -o ${root}/lib/${lib}.so.${vers} ${obj} $link
ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so.${vers%.*}
ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so
popd
done
base=src/cmd/ksh93
test=${PWD}/${base}/tests
pushd ${root}/${base}
rm -f libshell.a
rm -f ${root}/bin/ksh
rm -f ${root}/bin/shcomp
ksh=$(grep -e '-o ksh' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o ksh@-o ${root}/bin/ksh@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
shcomp=$(grep -e '-o shcomp' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o shcomp@-o ${root}/bin/shcomp@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
suidex=$(grep -e '-o suid_exec' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o shcomp@-o ${root}/bin/suid_exec@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
${ksh} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${shcomp} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${suidex} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
pushd ${test}
sleep 5
LD_LIBRARY_PATH=${root}/lib SHELL=${root}/bin/ksh ${root}/bin/ksh shtests
popd
pushd ${root}/bin
set -- $(LD_LIBRARY_PATH=${root}/lib PATH=$PATH:. shcomp --version 2>&1)
eval version=\${$#}
LD_LIBRARY_PATH=${root}/lib PATH=$PATH:. shcomp --nroff 2>&1 | \
sed 's/\(\.TH .*\)/\1 "2003-03-02" "" "Korn shell utilities"/' > ../man/man1/shcomp.1
popd
popd
%install
root=$(echo ${PWD}/arch/linux*)
test -d $root || exit 1
pushd $root || exit 1
mkdir -p %{buildroot}/bin
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}/%{_lib}/ast/bin
mkdir -p %{buildroot}%{_includedir}/ast
mkdir -p %{buildroot}%{_libdir}/ast
mkdir -p %{buildroot}%{_mandir}
mkdir %{buildroot}%{_mandir}/man1
mkdir %{buildroot}%{_mandir}/man3
mkdir -p %{buildroot}%{_sysconfdir}/permissions.d
install bin/ksh %{buildroot}/%{_lib}/ast/bin/
install bin/shcomp %{buildroot}/%{_lib}/ast/bin/
# install bin/suid_exec %{buildroot}/%{_lib}/ast/bin/
ln -sf /bin/true %{buildroot}/bin/ksh
ln -sf /bin/true %{buildroot}%{_bindir}/ksh
ln -sf /%{_lib}/ast/bin/ksh %{buildroot}%{_bindir}/rksh
ln -sf /%{_lib}/ast/bin/shcomp %{buildroot}%{_bindir}/shcomp
cp -a lib/*.so.* %{buildroot}/%{_lib}/ast/
for so in %{buildroot}/%{_lib}/ast/*.so.*.* ; do
so=${so##*/}
ln -sf /%{_lib}/ast/$so %{buildroot}%{_libdir}/ast/${so%%%%.*}.so
done
rm -f %{buildroot}%{_libdir}/ast/*.so.*
install -m 0644 lib/*.a %{buildroot}%{_libdir}/ast/
install -m 0644 man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1
install -m 0644 man/man1/shcomp.1 %{buildroot}%{_mandir}/man1/shcomp.1
for man in man/man3/*.3 ; do
man=${man##*/}
ast=${man}ast
install -m 0644 man/man3/${man} %{buildroot}%{_mandir}/man3/${ast}
done
install -m 0644 include/ast/* %{buildroot}%{_includedir}/ast/
popd
cp lib/package/LICENSES/ast LICENSE
mv src/cmd/ksh93/OBSOLETE src/cmd/ksh93/OBSOLETE.mm
cat src/cmd/ksh93/builtins.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > Builtins
cat src/cmd/ksh93/PROMO.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > PROMO
cat src/cmd/ksh93/OBSOLETE.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > OBSOLETE
cat src/cmd/ksh93/sh.memo | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > MEMORANDUM
cp %{SOURCE3} .
#
# (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh) <<-EOF
# /%{_lib}/ast/bin/suid_exec root:root 4711
# EOF
# (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh.paranoid) <<-EOF
# /%{_lib}/ast/bin/suid_exec root:root 0711
# EOF
%post
test -e etc/bash.bashrc && ln -sf bash.bashrc etc/ksh.kshrc || true
if test -x %{_lib}/ast/bin/ksh ; then
rm -f bin/ksh
ln -sf /%{_lib}/ast/bin/ksh bin/ksh
rm -f usr/bin/ksh
ln -sf /%{_lib}/ast/bin/ksh usr/bin/ksh
fi
%postun
if test ! -x %{_lib}/ast/ksh ; then
if test ! -x bin/pdksh ; then
rm -f etc/ksh.kshrc
fi
if test ! -e bin/ksh ; then
rm -f bin/ksh usr/bin/ksh
fi
fi
%files
%defattr(-,root,root)
#%{_sysconfdir}/permissions.d/ksh
#%{_sysconfdir}/permissions.d/ksh.paranoid
%doc LICENSE src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE*
%doc Builtins PROMO OBSOLETE MEMORANDUM
%doc %{_mandir}/man1/*.1.gz
%ghost %verify(not link) /bin/ksh
%ghost %verify(not link) %{_bindir}/ksh
%{_bindir}/rksh
%{_bindir}/shcomp
%dir /%{_lib}/ast
%dir /%{_lib}/ast/bin
/%{_lib}/ast/bin/ksh
/%{_lib}/ast/bin/shcomp
#%attr(4711,root,root) /%{_lib}/ast/bin/suid_exec
/%{_lib}/ast/*.so.*
%files -n ksh-devel
%defattr(-,root,root)
%doc LICENSE Warning
%dir %{_libdir}/ast/
%{_libdir}/ast/*.so
%{_libdir}/ast/*.a
%doc %{_mandir}/man3/*
%{_includedir}/ast/
%changelog
* Fri May 25 2007 - werner@suse.de
- Minor issuse like file permissions
* Wed Apr 04 2007 - werner@suse.de
- Minor correction for builtin uname -i
* Mon Apr 02 2007 - werner@suse.de
- Update to ksh93s+ (bug #239215)
- Be sure that iffe can handle option -n even if bash is used
* Wed Mar 28 2007 - werner@suse.de
- Reset exit status in case of catching SIGCONT (bug #254649)
- Use the AT&T UNIVERSE for ksh as pdksh does (bug #249783)
* Fri Jan 12 2007 - werner@suse.de
- Do not use binary OR instead of a logic OR (#233299)
- Help the compile time and run time linker (#233299)
* Mon Nov 20 2006 - werner@suse.de
- Avoid that a sub shell close required file descriptors (#222411)
* Fri Nov 10 2006 - werner@suse.de
- On ia64 a cast of an integer to a character pointer and back to
an long integer may results into an unaligned access, fix this
in the SIGWINCH handler (bug #209643)
* Tue Nov 07 2006 - ro@suse.de
- fix permissions for manpages
* Mon Jul 10 2006 - werner@suse.de
- Don't trim backslash part of a multibyte character away (#189239)
* Tue Jul 04 2006 - werner@suse.de
- Builtin cut: allow last line without newline (#189231)
- Utility shcomp: fix segfault and install it (#189778)
* Tue Jun 27 2006 - werner@suse.de
- No segmentation fault if ksh uses shared command libray (#188404)
* Tue Jun 20 2006 - werner@suse.de
- Make it build even on new beta with new glibc headers
* Wed May 31 2006 - werner@suse.de
- Fix segmentation fault in vi command line mode (bug #179917)
* Mon May 29 2006 - werner@suse.de
- Make -i and -p option of uname builtin work (bug #178962)
* Tue May 09 2006 - werner@suse.de
- Change PreRequire /bin/bash to /etc/bash.bashrc (bug #172633)
* Mon May 08 2006 - werner@suse.de
- Correct order of souring order of the users profile and the
system kshrc files (bug #172708)
* Wed Apr 19 2006 - werner@suse.de
- Do not source system rc files if ksh is not interactive
- Correct string from GMT to UTC for Universal Time Coordinates
* Wed Apr 19 2006 - werner@suse.de
- Fix the patch for the multi byte characters (bug #163665)
* Tue Apr 18 2006 - werner@suse.de
- Fix multi byte handling even for command line mode emacs/vi
* Thu Apr 06 2006 - werner@suse.de
- Handle multi byte characters within macro expansion (bug #163665)
* Mon Mar 27 2006 - werner@suse.de
- Update to ksh 93r
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Tue Dec 20 2005 - werner@suse.de
- Move manual pages of libast to an own subsection 3ast (#140295)
* Fri Dec 16 2005 - werner@suse.de
- Make it build even with bash 3.1 and gcc 4.1.0
* Thu Nov 17 2005 - uli@suse.de
- disabled some tests on ARM (occasionally hang QEMU)
* Mon Oct 24 2005 - werner@suse.de
- PreReqire the bash to get the system wide bash.bashrc
* Mon Sep 19 2005 - werner@suse.de
- Make it compatible with parallel installed pdksh (bug #105126)
* Mon Sep 19 2005 - werner@suse.de
- Avoid useless gcc warning of autogenerated sources
* Tue Aug 16 2005 - werner@suse.de
- Move to group System/Shells (bug #104920)
* Wed Apr 13 2005 - werner@suse.de
- Make it compile with gcc4
* Thu Mar 24 2005 - werner@suse.de
- Correct initialization for got_sigwinch variable
* Wed Mar 23 2005 - werner@suse.de
- Update to release date 2005-02-02 (bug #18698, bug #74348)
* Wed Mar 09 2005 - werner@suse.de
- Fix dead link in documentation (bug #71733)
* Fri Feb 04 2005 - werner@suse.de
- More on winsize changes: now it works after a new prompt
just like in the pdksh.
* Fri Feb 04 2005 - schwab@suse.de
- Workaround broken build system and enable building shared libraries on
x86-64.
* Thu Feb 03 2005 - werner@suse.de
- Do not build shared version on x64_86 the ELF macro R_X64_86_32S
breaks that a local symbol
- Make it work on s390x
* Thu Feb 03 2005 - werner@suse.de
- Make winsize changes work
- Enable /etc/ksh.kshrc support
- lchmod is not implemented under Linux
- error_exit does never return
- Enable shared libraries instead of the static ones
- Add a warning about CPL versus GPL
* Wed Feb 02 2005 - werner@suse.de
- Initial version of the AT&T ksh now under CPL1.0 (bug #3698)