Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1:Rings:1-MinimalX
ksh
ksh.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ksh.spec of Package ksh
# # spec file for package ksh # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: ksh %global date 2014-06-25 %global use_suid_exe 0 %if %suse_version > 1210 %global use_opt_bins 1 %else %global use_opt_bins 0 %endif %if !0%{?qemu_user_space_build:1} %bcond_without do_tests %else %bcond_with do_tests %endif %bcond_with use_locale %bcond_with vm_debug %bcond_without skip_signals BuildRequires: bind-utils BuildRequires: bison BuildRequires: flex BuildRequires: gdbm-devel BuildRequires: glibc-devel BuildRequires: groff BuildRequires: ncurses-devel BuildRequires: procps BuildRequires: psmisc BuildRequires: pwdutils BuildRequires: zlib-devel %if %suse_version > 1020 BuildRequires: bind-libs BuildRequires: libbz2-devel %endif %if %suse_version > 1120 BuildRequires: update-alternatives %endif %if %{with vm_debug} BuildRequires: ccache BuildRequires: gdb BuildRequires: less BuildRequires: procps BuildRequires: strace BuildRequires: valgrind BuildRequires: vim %endif # /bin/ex and /bin/ed required for build BuildRequires: awk BuildRequires: ed BuildRequires: strace BuildRequires: vim Url: http://www.research.att.com/~gsf/download/ Requires(post): /bin/ln /bin/rm /etc/bash.bashrc /bin/true Requires(postun): /bin/ln /bin/rm /etc/bash.bashrc /bin/true %if %suse_version > 1120 Requires(post): update-alternatives Requires(preun): update-alternatives %endif %if %use_suid_exe PreReq: permissions %endif Version: 93v Release: 0 Summary: Korn Shell License: CPL-1.0 and EPL-1.0 Group: System/Shells BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: INIT.%{date}.tar.bz2 Source1: ast-base.%{date}.tar.bz2 Source3: EPL Source4: CPL Source10: leak1.sh Source11: leak2.sh Source12: ifs-crash.sh Source13: ulimit.sh Source14: leak3.sh Source20: Agreement Source21: Warning Source30: rpmlintrc Source31: vmbalance Source42: sigexec.c 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 Patch11: ksh93-signals.dif Patch12: ksh93-limits.dif Patch13: ksh93-unset-f.dif Patch14: ksh93-ia64.dif Patch15: ksh93-s390.dif Patch16: ksh93-gcc.dif Patch17: ksh93-heredoc.dif Patch19: ksh93-reg.dif Patch20: ksh93-aso.dif Patch21: ksh93-vm.dif Patch22: ksh93-limit-name-len.dif Patch23: ksh93-foreground-prgrp.dif Patch24: ksh93-builtin.dif # PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266, bnc#803613] Patch28: ksh93-env.dif # PATCH-FIX-SUSE ksh93-typedef.dif Patch29: ksh93-typedef.dif # PATCH-EXTEND-UPSTREAM ksh93-pathtemp.dif [bnc#786134] # the fix is part of ksh93u+ 2012-06-28 # nevertheless the /dev/shm extension is useful Patch30: ksh93-pathtemp.dif # PATCH-FIX-UPSTREAM ksh93-alias-k.dif [bnc#824187] Patch34: ksh93-alias-k.dif # PATCH-FIX-SUSE Do not use mount(2) system call instead of fs3d_mount(3ast) Patch36: ksh93-fs3d.dif # PATCH-FIX-SUSE Various crashes fixed for bnc#844071 Patch37: ksh93-crashes.dif Patch42: ksh-locale.patch %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 License: CPL-1.0 Group: Development/Libraries/C and C++ Requires: ksh = %{version}-%{release} %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 chmod +x %{S:31} %setup -q -n ksh93 -T -c -a 0 tar --use-compress-program=bzcat -xf %{S:1} \ lib/package/ \ src/cmd/ksh93/ src/lib/libast/ src/lib/libcmd/ src/lib/libcoshell/ src/lib/libdll/ src/lib/libsum/ \ src/cmd/builtin/ src/cmd/msggen/ src/cmd/msgcc/ src/lib/libpp/ src/lib/libuu/ if test -d share ; then find share/ \( -name chef -o -name fudd -o -name piglatin -o -name valley \) -a -type d |\ xargs -r rm -vrf find share/ ! \( -name libast -o -name libcmd -o -name libdll -o -name libshell \) -a -type f |\ xargs -r rm -vf find share/ -type d -a -empty | xargs -r rm -vrf find share/ -type d -a -empty | xargs -r rm -vrf fi %patch %patch1 %ifarch %arm %patch2 %endif %patch3 %patch4 %patch5 %patch6 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 %patch13 %ifarch ia64 %patch14 %endif %patch15 %patch16 %patch17 %patch19 %patch20 %patch21 %patch22 %patch23 %patch24 %patch28 %patch29 %patch30 %patch34 %patch36 %patch37 %patch42 %build PATH=$(getconf PATH) export PATH unset MALLOC_CHECK_ if test "$USESIGEXEC" != 0 ; then # # The environment variable USESIGEXEC is set by the sigexec # helper program which provides a real pty/tty pair as well # as a clean signal environment. # ${CC:-gcc} ${RPM_OPT_FLAGS} -D_GNU_SOURCE -o sigexec %{S:42} -lutil for fd in /proc/$$/fd/*; do test -s $fd -a ! -c $fd && break || true done set -- $(readlink $fd) exec ./sigexec $SHELL ${1+"$@"} fi AR="ar" CC=gcc PATH=${PWD}:$PATH LANG=POSIX TMPDIR=$(mktemp -d /tmp/ksh-build.XXXXXX) || exit 1 SUSE_ASNEEDED=0 export AR CC PATH LANG TMPDIR SUSE_ASNEEDED # # Remove optimizer which cause runtime leaks in ksh # RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-funwind-tables/}" RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-fasynchronous-unwind-tables/}" # This package failed when testing with -Wl,-as-needed being default. # So we disable it here, if you want to retest, just delete this # comment and the line below. RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-as-needed/-no-as-needed/}" # Use POSIX as environment test -n "${!LC_*}" && unset "${!LC_*}" cflags () { set +x local flag=$1; shift local var=$1; shift test -n "${flag}" -a -n "${var}" || return case "${!var}" in *${flag}*) return esac set -o noclobber case "$flag" in -Wl,*) if echo 'int main () { return 0; }' | \ ${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then eval $var=\${$var:+\$$var\ }$flag fi ;; *) if ${CC:-gcc} -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then eval $var=\${$var:+\$$var\ }$flag fi esac set +o noclobber set -x } relink () { set +x local search=$1; shift local target=$1; shift test -n "${search}" -a -n "${target}" || exit 1 local object=$(find ${root:-/tmp}/src/cmd/ -name ${search}.o) local cmd=$( grep -e "-o $search" ${log:-/dev/null} | tail -n 1 | \ sed -r -e "s@\+ g?cc@${CC:-gcc}@" \ -e "s@-o $search@-o ${root:-/tmp}$target@" \ -e "s@[[:blank:]]${search}.o[[:blank:]]@ $object @" \ -e "s@[[:blank:]](/[^[:blank:]]*)?lib([[:alnum:]]+)\.a@ -l\2@g" \ -e "s@'@@g") set -x $cmd ${1+"$@"} } # # If _you_ are knowing how to fix this in the autogenerated # sources of ksh/ast without breaking them, then let me know. # cflags -Wno-missing-braces IGNORE cflags -Wno-unknown-pragmas IGNORE cflags -Wno-parentheses IGNORE cflags -Wno-char-subscripts IGNORE cflags -Wno-uninitialized IGNORE cflags -Wno-implicit IGNORE cflags -Wno-unused-value IGNORE cflags -Wno-type-limits IGNORE cflags -Wclobbered RPM_OPT_FLAGS # # Do not use -DSHOPT_SPAWN=1 and/or -DSHOPT_AMP=1 this would cause # errors due race conditions while executing the test suite. # feature=${PWD}/.feature.h set -C (cat > $feature)<<-'EOF' #define SHOPT_FS_3D 0 #define SHOPT_SYSRC 1 #define SHOPT_REMOTE 1 #define SHOPT_CMDLIB_BLTIN 1 #define SHOPT_CMDLIB_HDR <cmdlist.h> #define SHOPT_CMDLIB_DIR "/opt/ast/bin" #define SH_CMDLIB_DIR "/opt/ast/bin" #define THISPROG "/%{_lib}/ast/bin/suid_exec" %if %{with vm_debug} #define _AST_std_malloc 1 %else #define _AST_std_malloc 0 %endif #define _map_malloc 1 EOF set +C FEATURE="-include $feature" cat $feature # # LARGEFILE="$(getconf LFS_CFLAGS)" case "$RPM_ARCH" in i[3456]86) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O2}" cflags -m32 RPM_OPT_FLAGS HOSTTYPE=linux.i386 ;; x86_64) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O2}" cflags -m64 RPM_OPT_FLAGS HOSTTYPE=linux.i386-64 ;; ia64) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" cflags -mlp64 RPM_OPT_FLAGS cflags -mno-volatile-asm-stop RPM_OPT_FLAGS HOSTTYPE=linux.ia64 ;; s390) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" cflags -m31 RPM_OPT_FLAGS HOSTTYPE=linux.s390 ;; s390*) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" cflags -m64 RPM_OPT_FLAGS HOSTTYPE=linux.s390-64 ;; ppc|powerpc) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" cflags -mno-powerpc64 RPM_OPT_FLAGS HOSTTYPE=linux.powerpc _PACKAGE_HOSTTYPE_=linux.powerpc export _PACKAGE_HOSTTYPE_ ;; ppc64le|powerpc64le) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" # -mpowerpc64 is correct, the compiler defaults to # little endian anyway cflags -mpowerpc64 RPM_OPT_FLAGS HOSTTYPE=linux.powerpc64le ;; ppc64|powerpc64) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" cflags -mpowerpc64 RPM_OPT_FLAGS HOSTTYPE=linux.powerpc64 ;; *) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" HOSTTYPE=linux.$RPM_ARCH ;; esac MEMORY=execve for mm in mmap mmap2 mmap64 munmap munmap2 munmap64 ; do if strace -e $mm /bin/true > /dev/null 2>&1 ; then MEMORY="${MEMORY:+${MEMORY},}$mm" fi done MEMORY="-s 128 ${MEMORY:+-e ${MEMORY}}" RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}"|sed -r 's/([[:blank:]]+)-g[[:digit:]]+/\1-g2/g;s/([[:blank:]]+)-g([[:blank:]]+|$)/\1-g2\2/g') UNIVERSE=att LDFLAGS="-lm" LDSOFLG="" cflags -std=gnu99 RPM_OPT_FLAGS cflags -fPIC RPM_OPT_FLAGS cflags -fno-strict-aliasing RPM_OPT_FLAGS cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS cflags -fno-delete-null-pointer-checks RPM_OPT_FLAGS cflags -fno-unsafe-loop-optimizations RPM_OPT_FLAGS cflags -fsigned-bitfields RPM_OPT_FLAGS cflags -fsigned-chars RPM_OPT_FLAGS cflags -fsigned-zeros RPM_OPT_FLAGS %if %{with vm_debug} cflags -fno-omit-frame-pointer RPM_OPT_FLAGS %endif case "$(gcc --version | head -n 1)" in *4.[012345].*) cflags -fno-tree-sink RPM_OPT_FLAGS ;; *) cflags -ftree-loop-linear RPM_OPT_FLAGS ;; esac cflags -g2 RPM_OPT_FLAGS cflags -pipe RPM_OPT_FLAGS cflags -D_GNU_SOURCE RPM_OPT_FLAGS cflags -D_REENTRANT RPM_OPT_FLAGS cflags -Wl,-O2 LDFLAGS cflags -Wl,--hash-size=16699 LDFLAGS cflags -Wl,-O2 LDSOFLG cflags -Wl,-warn-common LDSOFLG cflags -Wl,--as-needed LDSOFLG cflags -Wl,--hash-size=8599 LDSOFLG cflags -Wl,-Bsymbolic-functions LDSOFLG cflags -Wl,-rpath,/%{_lib}/ast LDSOFLG RPM_OPT_FLAGS="$RPM_OPT_FLAGS $LARGEFILE" RPM_OPT_FLAGS="$RPM_OPT_FLAGS $IGNORE $FEATURE" mam_cc_L=use mam_cc_OPTIMIZE=-pipe export mam_cc_L mam_cc_OPTIMIZE HOSTTYPE LDFLAGS RPM_OPT_FLAGS UNIVERSE printenv getconf PAGESIZE # # Build libast first and then determine the library functions used # by this library simply to avoid that gcc will overwrites those with # its own builtin functions. # bin/package view root=$(echo ${PWD}/arch/linux*) bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin -I${root}/include" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" test -d $root || exit 1 log=${root}/lib/package/gen/make.out test -s $log || exit 1 for lib in libast ; do test -s ${root}/lib/${lib}.a || exit 1 obj=$(ar t ${root}/lib/${lib}.a) test $? -eq 0 || exit 1 case "$lib" in 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 $LDSOFLG" ;; 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 nobuiltin=${PWD}/.nobuiltin nm -D ${root}/lib/libast.so | \ grep -E 'T[[:blank:]](_ast_)?(str|mem|(get|put|set)env|free|(c|m|re|v|vm)alloc)' | \ sed -r 's/[[:xdigit:]]+[[:blank:]]+T[[:blank:]]+(_ast_)?([^[:blank:]]*)/-fno-builtin-\2/' | \ sort -u > $nobuiltin rm -rf $root case "$(gcc --version | head -n 1)" in *4.[01].*) set +x for opt in $(cat $nobuiltin) ; do cflags $opt RPM_OPT_FLAGS done set -x ;; *) cflags @$nobuiltin RPM_OPT_FLAGS esac export | grep -vE 'PROFILEREAD|PWD|MAIL|HOME|HOST|HIST|LESS' > .env bin/package make CCFLAGS="$RPM_OPT_FLAGS -I${root}/include" HOSTTYPE="$HOSTTYPE" AR="$AR" 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 test -s ${root}/lib/${lib}.a || exit 1 obj=$(ar t ${root}/lib/${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 $LDSOFLG $LDFLAGS -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 $LDSOFLG -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 $LDSOFLG -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 $LDSOFLG" ;; 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 %if %{with do_tests} pushd ${root}/bin mkdir ${TMPDIR}/bin for bin in * ; do test -e "$bin" || continue test "$bin" = ".paths" && continue test "${bin#*.}" = "old" && continue install -m 0755 $bin ${TMPDIR}/bin/ done popd test=${PWD}/${base}/tests OPATH=$PATH OSHELL=$SHELL PATH=${TMPDIR}/bin:$PATH SHELL=${TMPDIR}/bin/ksh SHCOMP=${TMPDIR}/bin/shcomp export PATH SHCOMP SHELL pushd ${test} %if %{with skip_signals} echo "Skip signal.sh test as this is broken due used malloc() in signal handlers" rm -vf signal.sh %endif typeset -i failed=0 ln -sf ${root}/lib ${test}/../ unset ${!LESS*} printf '\033[1m' grep -E '^(model name|flags)[[:blank:]]*:' /proc/cpuinfo | sort -ur | fold -s printf '\033(B\033[m' ${SHELL} shtests result=$(${SHELL} -k -c 'd=`/bin/echo x y=z`; echo $d x y=z') test "$result" = 'x x' || exit 1 result=$(${SHELL} -c 'echo | echo "x`/bin/echo y`"') test "$result" = xy || exit 1 result=$(${SHELL} -c 'echo | echo "x$(/bin/echo y)"') test "$result" = xy || exit 1 ${SHELL} -c 'trap "exit 0" EXIT; typeset -T X=(typeset x; function x.get { :; }); X -a xs=((x=yo) (x=jo))' cat > eso_boot.mod.sh <<-'EOF' . ./environ.mod EOF cat > environ.mod <<-'EOF' f() { : } unset -f f msg=`echo OK` echo $msg EOF ${SHELL} ./eso_boot.mod.sh exec 3> ${TMPDIR:-/tmp}/log LANG=POSIX strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 4 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 40 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 4000 if test $((IGNORED & SIGPIPE)) -eq 0 ; then ${SHELL} -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10 fi LANG=en_US.UTF-8 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 4 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 40 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 4000 if test $((IGNORED & SIGPIPE)) -eq 0 ; then ${SHELL} -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10 fi LANG=POSIX exec 3>&- printf '\033[1m' uniq -c ${TMPDIR:-/tmp}/log printf '\033(B\033[m' killall -q -s 9 ${SHELL} || true popd %endif pushd ${root}/${base} rm -f libshell.a rm -f ${root}/bin/ksh rm -f ${root}/bin/shcomp for bin in ksh shcomp pty what mime asa dlls suid_exec ; do relink $bin /bin/$bin -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast done popd LD_LIBRARY_PATH=${root}/lib export LD_LIBRARY_PATH mkdir -p share/locale/C/LC_MESSAGES includes="-I$(cpp -print-search-dirs | sed -rn 's@^install:[[:blank:]]@@p')include" includes="$includes $(find $root -name FEATURE -printf ' -I%h')" includes="$includes -I/usr/include/linux" sed -rn "\@mamake -C cmd/ksh93@,\@mamake -C@ { s@^\+ g?cc@$SHELL msgcc -M-set=ast $includes@ s@[[:blank:]]-c[[:blank:]]([^[:blank:]\.]+/([^[:blank:]\.\/]+))\.c@ -c \1\.c -o msgs/\2\.mso@p }" ${root}/lib/package/gen/make.out > src/cmd/ksh93/doit %if %{with use_locale} pushd src/cmd/ksh93 mkdir msgs ${root}/lib/probe/C/pp/probe $(type -p gcc) > pp_default.h $SHELL ./doit $SHELL msgcc -o libshell.msg msgs/*.mso rm -rf msgs/ popd msggen share/locale/C/LC_MESSAGES/libshell src/cmd/ksh93/libshell.msg %endif pushd ${root}/bin PATH=$PATH:. set -- $(shcomp --version 2>&1) eval version=\${$#} for bin in shcomp pty what mime asa dlls ; do $bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell utilities"/' > ../man/man1/$bin.1ast done popd test -d /tmp -a /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR} SHELL=$OSHELL PATH=$OPATH %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 %if %{with use_locale} mkdir -p %{buildroot}%{_datadir}/locale %endif mkdir -p %{buildroot}%{_datadir}/ksh/fun mkdir -p %{buildroot}%{_sysconfdir}/permissions.d install bin/ksh %{buildroot}/bin/ksh93 install bin/shcomp %{buildroot}%{_bindir}/shcomp %if %use_opt_bins for bin in pty what mime asa dlls ; do install bin/$bin %{buildroot}/%{_bindir}/$bin done %endif %if %use_suid_exe install bin/suid_exec %{buildroot}/%{_lib}/ast/bin/ %endif %if %suse_version > 1120 # create update-alternatives symlinks mkdir -p %{buildroot}%{_sysconfdir}/alternatives/ touch %{buildroot}/%{_sysconfdir}/alternatives/ksh touch %{buildroot}/%{_sysconfdir}/alternatives/usr-bin-ksh touch %{buildroot}/%{_sysconfdir}/alternatives/ksh.1.gz touch %{buildroot}/%{_sysconfdir}/alternatives/rksh.1.gz ln -sf %{_sysconfdir}/alternatives/ksh %{buildroot}/bin/ksh ln -sf %{_sysconfdir}/alternatives/usr-bin-ksh %{buildroot}%{_bindir}/ksh ln -sf %{_sysconfdir}/alternatives/ksh.1.gz %{buildroot}/%{_mandir}/man1/ksh.1.gz ln -sf %{_sysconfdir}/alternatives/rksh.1.gz %{buildroot}/%{_mandir}/man1/rksh.1.gz %else # create ghost files ln -sf /bin/true %{buildroot}/bin/ksh ln -sf /bin/true %{buildroot}%{_bindir}/ksh %endif ln -sf /bin/ksh93 %{buildroot}%{_bindir}/rksh ln -sf /bin/ksh93 %{buildroot}/%{_lib}/ast/ksh ln -sf ast %{buildroot}/%{_lib}/ksh cp -a lib/*.so* %{buildroot}/%{_lib}/ast/ cp -a fun/* %{buildroot}%{_datadir}/ksh/fun/ if cmp -s %{buildroot}%{_datadir}/ksh/fun/pushd %{buildroot}%{_datadir}/ksh/fun/popd ; then ln -sf pushd %{buildroot}%{_datadir}/ksh/fun/popd fi 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.* %if %suse_version >= 1320 ln -s %{_sysconfdir}/bash.bashrc %{buildroot}%{_sysconfdir}/ksh.kshrc %endif sed -rn '/^\.de Af/,/^\.\./p;/^\.de aF/,/^\.\./p' man/man3/int.3 > af.man for man in $(grep -l '\.}S' man/man[138]/*.[138]); do sed -ri '1r af.man' $man done for man in man/man[138]/*.[138] ; do sed -ri 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g;s/\.}S/\.aF/;s/^\.LI/\.LR/;s/\\\(le/\\\(<=/' $man done install -m 0644 lib/*.a %{buildroot}%{_libdir}/ast/ %if %suse_version > 1120 install -m 0644 man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh93.1ast ln -sf ../man1/ksh93.1ast.gz %{buildroot}/%{_mandir}/man1/ksh.1ast.gz ln -sf ../man1/ksh93.1ast.gz %{buildroot}/%{_mandir}/man1/rksh.1ast.gz %else install -m 0644 man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1ast ln -sf ../man1/ksh.1ast.gz %{buildroot}/%{_mandir}/man1/rksh.1ast.gz %endif install -m 0644 man/man1/shcomp.1ast %{buildroot}%{_mandir}/man1/shcomp.1ast %if %use_opt_bins for bin in pty what mime asa dlls ; do install -m 0644 man/man1/$bin.1ast %{buildroot}%{_mandir}/man1/$bin.1ast done %endif for man in man/man3/*.3 ; do man=${man##*/} ast=${man}ast install -m 0644 man/man3/${man} %{buildroot}%{_mandir}/man3/${ast} done if test -d include/ast/sys/ ; then for head in include/ast/* ; do test -e "$head" || continue if test -d $head ; then install -d %{buildroot}%{_includedir}/ast/${head##*/} install -m 0644 ${head}/* %{buildroot}%{_includedir}/ast/${head##*/}/ else install -m 0644 $head %{buildroot}%{_includedir}/ast/ fi done else install -m 0644 include/ast/* %{buildroot}%{_includedir}/ast/ fi if cmp -s %{buildroot}%{_includedir}/ast/namval.h %{buildroot}%{_includedir}/ast/ast_namval.h ; then ln -sf ast_namval.h %{buildroot}%{_includedir}/ast/namval.h fi popd %if %{with use_locale} for msg in share/locale/* ; do test -d $msg || continue mkdir -p %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES cp -vp ${msg}/LC_MESSAGES/* %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES/ done echo %%dir %{_datadir}/locale/C > ksh.lang echo %%dir %{_datadir}/locale/C/LC_MESSAGES >> ksh.lang %endif find %{buildroot}/ -type f -o -type l | sed -r ' s:%{buildroot}:: s:(%{_datadir}/locale/)([^/_]+)(.*$):%%lang\(\2\) \1\2\3: s:^([^%%].*):: s:%%lang\(C\) :: /^ *$/d' >> ksh.lang if test -s lib/package/LICENSES/ast ; then cp lib/package/LICENSES/ast LICENSE else cp %{S:3} EPL-1.0 cp %{S:4} CPL-1.0 ln -sf EPL-1.0 LICENSE fi mv src/cmd/ksh93/OBSOLETE src/cmd/ksh93/OBSOLETE.mm echo '.VERBON 22' > grep.mm sed -rn '/function grep/,/^}/p' src/cmd/ksh93/tests/grep.sh >> grep.mm echo '.VERBOFF' >> grep.mm tdevice=ascii8 troff -Tascii8 < /dev/null > /dev/null 2>&1 || tdevice=utf8 cat src/cmd/ksh93/builtins.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -T$tdevice -t -mm | grotty -bou > Builtins cat src/cmd/ksh93/PROMO.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -T$tdevice -t -mm | grotty -bou > PROMO cat src/cmd/ksh93/OBSOLETE.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -T$tdevice -t -mm | grotty -bou > OBSOLETE cat src/cmd/ksh93/sh.memo | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -T$tdevice -t -mm | grotty -bou > MEMORANDUM cp %{S:21} . %if %use_suid_exe set -C (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh) <<-EOF /%{_lib}/ast/bin/suid_exec root:root 4755 EOF (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh.paranoid) <<-EOF /%{_lib}/ast/bin/suid_exec root:root 0755 EOF set +C %endif %if %use_suid_exe %if %{defined verify_permissions} %verifyscript %verify_permissions -e /%{_lib}/ast/bin/suid_exec %endif %endif %post %if %suse_version < 1320 test -e etc/bash.bashrc && ln -sf bash.bashrc etc/ksh.kshrc || true %endif %if %use_suid_exe %if %{defined set_permissions} %set_permissions /%{_lib}/ast/bin/suid_exec %endif %endif %if %suse_version > 1120 if test -x /%{_lib}/ast/bin/ksh ; then %{_sbindir}/update-alternatives \ --quiet \ %if %suse_version > 1210 --force \ %endif --remove ksh /%{_lib}/ast/bin/ksh rm -f /%{_lib}/ast/bin/ksh rm -f /%{_lib}/ast/bin/shcomp fi %{_sbindir}/update-alternatives \ --quiet \ %if %suse_version > 1210 --force \ %endif --install /bin/ksh ksh /bin/ksh93 20 \ --slave %{_bindir}/ksh usr-bin-ksh /bin/ksh93 \ --slave %{_mandir}/man1/ksh.1ast.gz ksh.1.gz %{_mandir}/man1/ksh93.1ast.gz \ --slave %{_mandir}/man1/rksh.1ast.gz rksh.1.gz %{_mandir}/man1/ksh93.1ast.gz %else if test -x /%{_lib}/ast/bin/ksh ; then rm -f /%{_lib}/ast/bin/ksh rm -f /%{_lib}/ast/bin/shcomp fi if test -x /bin/ksh93 ; then rm -f bin/ksh ln -sf /bin/ksh93 bin/ksh rm -f %{_exec_prefix}/bin/ksh ln -sf /bin/ksh93 %{_exec_prefix}/bin/ksh fi %endif %if %suse_version > 1120 %preun if test $1 -eq 0 ; then %{_sbindir}/update-alternatives --quiet --remove ksh /bin/ksh93 fi %endif %if %suse_version < 1320 %postun if test $1 -eq 0 -a ! -x bin/ksh ; then if test ! -x bin/pdksh ; then rm -f etc/ksh.kshrc fi %if %suse_version <= 1120 rm -f bin/ksh %{_exec_prefix}/bin/ksh %endif fi %endif %if %suse_version < 1320 %posttrans if test -x bin/ksh -o -x bin/pdksh ; then test -e etc/bash.bashrc && ln -sf bash.bashrc etc/ksh.kshrc || true fi %endif %files -f ksh.lang %defattr(-,root,root) %if %use_suid_exe %config %attr(0644,root,root) %{_sysconfdir}/permissions.d/ksh %config %attr(0644,root,root) %{_sysconfdir}/permissions.d/ksh.paranoid %endif %doc LICENSE EPL-1.0 CPL-1.0 src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE* %doc Builtins PROMO OBSOLETE MEMORANDUM /bin/ksh93 %if %suse_version > 1120 /bin/ksh %{_bindir}/ksh %doc %{_mandir}/man1/ksh.1.gz %doc %{_mandir}/man1/rksh.1.gz %ghost %{_sysconfdir}/alternatives/ksh %ghost %{_sysconfdir}/alternatives/usr-bin-ksh %ghost %{_sysconfdir}/alternatives/ksh.1.gz %ghost %{_sysconfdir}/alternatives/rksh.1.gz %else %ghost %verify(not link) /bin/ksh %ghost %verify(not link) %{_bindir}/ksh %endif %if %suse_version > 1120 %ghost %verify(not link) %{_mandir}/man1/ksh.1ast.gz %ghost %verify(not link) %{_mandir}/man1/rksh.1ast.gz %doc %{_mandir}/man1/ksh93.1ast.gz %else %doc %{_mandir}/man1/ksh.1ast.gz %doc %{_mandir}/man1/rksh.1ast.gz %endif %doc %{_mandir}/man1/shcomp.1ast.gz %if %use_opt_bins %doc %{_mandir}/man1/pty.1ast.gz %doc %{_mandir}/man1/what.1ast.gz %doc %{_mandir}/man1/mime.1ast.gz %doc %{_mandir}/man1/asa.1ast.gz %doc %{_mandir}/man1/dlls.1ast.gz %endif %{_bindir}/* %dir /%{_lib}/ast %dir /%{_lib}/ast/bin %if %use_suid_exe %attr(4755,root,root) /%{_lib}/ast/bin/suid_exec %endif /%{_lib}/ast/*.so* /%{_lib}/ast/ksh /%{_lib}/ksh %dir %{_datadir}/ksh %dir %{_datadir}/ksh/fun %{_datadir}/ksh/fun/* %if %suse_version >= 1320 %{_sysconfdir}/ksh.kshrc %endif %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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor