Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
shells
mksh
mksh.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mksh.spec of Package mksh
# # spec file for package mksh # # Copyright (c) 2021 SUSE LLC # Copyright (c) 2013 Guido Berhoerster. # Copyright (c) 2013, 2014, 2019 Thorsten Glaser. # # 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 https://bugs.opensuse.org/ # # Please see OBS home:mirabile/mksh for a package for other distributions. Name: mksh Version: 59c Release: 0 Summary: MirBSD Korn Shell License: MirOS AND ISC Group: System/Shells URL: http://www.mirbsd.org/mksh.htm Source: https://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.tgz # PATCH-FEATURE-OPENSUSE mksh-vendor-mkshrc.patch gber@opensuse.org -- Add support for a vendor-supplied kshrc which is read by interactive shells before $ENV or $HOME/.mkshrc are processed Patch0: mksh-vendor-mkshrc.patch BuildRequires: ed # for %%check BuildRequires: perl BuildRequires: screen BuildRequires: sed BuildRequires: update-alternatives Provides: pdksh = %{version} Obsoletes: pdksh < %{version} %if !0%{?is_opensuse} Provides: ksh = %{version} Obsoletes: ksh < %{version} %endif Provides: /bin/ksh Requires(post): update-alternatives Requires(postun): update-alternatives %description The MirBSD Korn Shell is an actively developed free implementation of the Korn Shell programming language and a successor to the Public Domain Korn Shell (pdksh). %prep %autosetup -p1 -n %{name} ed -s mksh.1 <<-'EOF' /insert-your-name-here/s/^\.\\" // s/insert-your-name-here/SUSE/ w EOF # " Stupid double quote for vi ln -s . examples %build %define _lto_cflags %{nil} # # sys_errlist and sys_siglist *are* deprecated # Be aware of the _SYS_SIGLIST and _SYS_ERRLIST macros as well # HAVE_SYS_SIGLIST=0 HAVE_SYS_ERRLIST=0 HAVE__SYS_SIGLIST=0 HAVE__SYS_ERRLIST=0 export HAVE_SYS_SIGLIST HAVE_SYS_ERRLIST HAVE__SYS_SIGLIST HAVE__SYS_ERRLIST # # -ftree-loop-linear # Perform loop nest optimizations. Same as -floop-nest-optimize. # To use this code transformation, GCC has to be configured with # --with-isl to enable the Graphite loop transformation infrastructure. # export CC=gcc if $CC -Werror -ftree-loop-linear -S -o /dev/null -xc /dev/null > /dev/null 2>&1 then export CFLAGS='%{optflags} -Wuninitialized -Wall -Wextra -ftree-loop-linear -pipe' else export CFLAGS='%{optflags} -Wuninitialized -Wall -Wextra -pipe' fi case "%{_target_arch}" in ppc64) CFLAGS="$CFLAGS -mbig-endian -mcpu=power4" ;; ppc64le) CFLAGS="$CFLAGS -mtune=power8 -mcpu=power8" ;; esac export CPPFLAGS='-DMKSH_VENDOR_MKSHRC_PATH=\"/etc/mkshrc\" -DMKSH_EARLY_LOCALE_TRACKING -DMKSH_ASSUME_UTF8' export LDFLAGS='-Wl,--as-needed -Wl,-O2' vendor=OpenBuildService %if 0%{?suse_version} > 0 %if !0%{?is_opensuse} vendor=SLES %else vendor=openSUSE %endif %endif CPPFLAGS="$CPPFLAGS -DKSH_VERSIONNAME_VENDOR_EXT=\\\"\ +$vendor\\\"" if grep -q _DEFAULT_SOURCE /usr/include/features.h; then CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE" fi # filter compiler warnings and errors from configuration tests { sh Build.sh -r || touch build.failed mv test.sh test-mksh.sh # build lksh to automatically enable -o posix if called as sh CPPFLAGS="$CPPFLAGS -DMKSH_BINSHPOSIX" sh Build.sh -L -r || touch build.failed mv test.sh test-lksh.sh } 2>&1 | sed -r \ -e 's!conftest.c:([0-9]*(:[0-9]*)*): error:!cE(\1) -!g' \ -e 's!conftest.c:([0-9]*(:[0-9]*)*): warning:!cW(\1) -!g' \ -e 's!conftest.c:([0-9]*(:[0-9]*)*): note:!cN(\1) -!g' test ! -e build.failed %install install -d %{buildroot}/bin for shell in mksh lksh; do install -D -p -m 755 ${shell} %{buildroot}%{_bindir}/${shell} install -D -p -m 644 ${shell}.1 %{buildroot}%{_mandir}/man1/${shell}.1 %if 0%{?suse_version} < 1550 ln -s %{_bindir}/${shell} %{buildroot}/bin/${shell} %endif done install -d -m 755 %{buildroot}%{_sysconfdir}/alternatives ln -s %{_sysconfdir}/bash.bashrc %{buildroot}%{_sysconfdir}/mkshrc # compatibility symlinks for pdksh, lksh replaces pdksh in openSUSE >= 13.2 %if 0%{?suse_version} < 1550 ln -s /bin/lksh %{buildroot}/bin/pdksh %endif ln -s %{_bindir}/lksh %{buildroot}%{_bindir}/pdksh ln -s %{_mandir}/man1/lksh.1%{ext_man} \ %{buildroot}%{_mandir}/man1/pdksh.1%{ext_man} # symlinks for update-alternatives touch %{buildroot}%{_sysconfdir}/alternatives/ksh \ %if 0%{?suse_version} < 1550 %{buildroot}%{_sysconfdir}/alternatives/usr-bin-ksh \ %endif %{buildroot}%{_sysconfdir}/alternatives/ksh.1%{ext_man} %if 0%{?suse_version} >= 1550 ln -sf %{_sysconfdir}/alternatives/ksh %{buildroot}/%{_bindir}/ksh %else ln -sf %{_sysconfdir}/alternatives/ksh %{buildroot}/bin/ksh ln -sf %{_sysconfdir}/alternatives/usr-bin-ksh %{buildroot}/%{_bindir}/ksh %endif ln -sf %{_sysconfdir}/alternatives/ksh.1%{ext_man} \ %{buildroot}/%{_mandir}/man1/ksh.1%{ext_man} %check # should always run in a clean environment as otherwise # tests might fail due wrong line numbering SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXX) || exit 1 trap 'rm -rf $SCREENDIR' EXIT SCREENRC=${SCREENDIR}/mksh export SCREENRC SCREENDIR export HOME=${SCREENDIR} exec 0< /dev/null SCREENLOG=${SCREENDIR}/log cat > $SCREENRC<<-EOF deflogin off deflog on logfile $SCREENLOG logfile flush 1 logtstamp off log on setsid on scrollback 0 silence on utf8 on EOF > $SCREENLOG tail -q -s 0.5 -f $SCREENLOG & pid=$! for shell in mksh lksh; do screen -D -m sh -c "./test-${shell}.sh -v -f || > failed" done kill -TERM $pid if test -e failed then sed -rn '/FAIL /,/^pass /p' $SCREENLOG exit 1 fi %post %{_sbindir}/update-alternatives \ %if 0%{?suse_version} >= 1550 --install %{_bindir}/ksh ksh %{_bindir}/lksh 15 \ %else --install /bin/ksh ksh %{_bindir}/lksh 15 \ --slave %{_bindir}/ksh usr-bin-ksh %{_bindir}/lksh \ %endif --slave %{_mandir}/man1/ksh.1%{?ext_man} ksh.1%{?ext_man} %{_mandir}/man1/lksh.1%{?ext_man} %postun %if 0%{?suse_version} >= 1550 if [ ! -f %{_bindir}/lksh ] ; then %{_sbindir}/update-alternatives --remove ksh %{_bindir}/lksh fi %else if [ ! -f /bin/lksh ] ; then %{_sbindir}/update-alternatives --remove ksh /bin/lksh fi %endif %files %doc examples/dot.mkshrc %{_sysconfdir}/mkshrc %{_bindir}/mksh %{_bindir}/lksh %{_mandir}/man1/mksh.1%{?ext_man} %{_mandir}/man1/lksh.1%{?ext_man} %{_bindir}/pdksh %{_mandir}/man1/pdksh.1%{?ext_man} %{_bindir}/ksh %{_mandir}/man1/ksh.1%{?ext_man} %ghost %{_sysconfdir}/alternatives/ksh %ghost %{_sysconfdir}/alternatives/ksh.1%{?ext_man} %if 0%{?suse_version} < 1550 /bin/mksh /bin/lksh /bin/ksh /bin/pdksh %ghost %{_sysconfdir}/alternatives/usr-bin-ksh %endif %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