wok annotate bash/receipt @ rev 19699

bash: patches in SOURCES_REPOSITORY
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 14 09:37:31 2017 +0100 (2017-02-14)
parents db28d30f3f7e
children 45195b132e80
rev   line source
pankso@14 1 # SliTaz package receipt.
pankso@14 2
pankso@14 3 PACKAGE="bash"
devl547@19593 4 VERSION="4.4.5"
pascal@17197 5 BASEVERSION="${VERSION%.*}"
pankso@202 6 CATEGORY="system-tools"
pankso@14 7 SHORT_DESC="The GNU bourne SHell."
pankso@14 8 MAINTAINER="pankso@slitaz.org"
pascal@15201 9 LICENSE="GPL3"
pascal@17197 10 TARBALL="$PACKAGE-$BASEVERSION.tar.gz"
pankso@14 11 WEB_SITE="http://www.gnu.org/software/bash/"
pankso@14 12 WGET_URL="$GNU_MIRROR/$PACKAGE/$TARBALL"
pascal@17195 13 BASHCHECKURL="https://raw.githubusercontent.com/hannob/bashcheck/master/bashcheck"
pascal@17195 14 BASHCHECK="$(basename $BASHCHECKURL)"
pascal@17197 15 BASHPATCHES="$(for i in $(seq 1 ${VERSION##*.}); do printf "bash${BASEVERSION/./}-%03d " $i; done)"
pascal@17195 16 EXTRA_SOURCE_FILES="$BASHCHECK $BASHPATCHES"
al@18466 17 TAGS="shell"
pankso@14 18
al@19556 19 DEPENDS="libtinfo" # readline
pascal@17195 20 BUILD_DEPENDS="readline bison wget texinfo"
al@19556 21 #configure: WARNING: installed readline library is too old to be linked with bash
al@19556 22 #configure: WARNING: using private bash version
pascal@17195 23
pascal@17195 24 patch_bash()
pascal@17195 25 {
pascal@17195 26 for i in $BASHPATCHES ; do
pascal@19699 27 if [ ! -s "$SOURCES_REPOSITORY/$i" ]; then
devl547@19593 28 echo "Downloading $i"
devl547@19593 29 busybox wget -O "$SOURCES_REPOSITORY/$i" \
pascal@17197 30 http://ftp.gnu.org/gnu/bash/bash-$BASEVERSION-patches/$i
pascal@19699 31 fi
pascal@17195 32 echo "Apply $i ..."
pascal@17195 33 patch -p0 < $SOURCES_REPOSITORY/$i
pascal@17195 34 done
pascal@17195 35 }
slaxemulator@10407 36
gokhlayeh@8171 37 # Rules to compile & install the temporary toolchain.
gokhlayeh@8171 38 cook_tmp_toolchain()
gokhlayeh@8171 39 {
gokhlayeh@8171 40 cd $src
pascal@17195 41 patch_bash
gokhlayeh@8171 42 ./configure --without-bash-malloc &&
gokhlayeh@8171 43 make && make install
gokhlayeh@8171 44 }
gokhlayeh@8171 45
pankso@14 46 # Rules to configure and make the package.
pankso@14 47 compile_rules()
pankso@14 48 {
pankso@14 49 # Patch and then build.
pankso@14 50 cd $src
pascal@17195 51 patch_bash
pankso@10352 52 # Skip tests that can not run while cross-compiling.
pankso@10352 53 cat > config.cache << "EOF"
pankso@10352 54 ac_cv_func_mmap_fixed_mapped=yes
pankso@10352 55 ac_cv_func_strcoll_works=yes
pankso@10352 56 ac_cv_func_working_mktime=yes
pankso@10352 57 bash_cv_func_sigsetjmp=present
pankso@10352 58 bash_cv_getcwd_malloc=yes
pankso@10352 59 bash_cv_job_control_missing=present
pankso@10352 60 bash_cv_printf_a_format=yes
pankso@10352 61 bash_cv_sys_named_pipes=present
pankso@10352 62 bash_cv_ulimit_maxfds=yes
pankso@10352 63 bash_cv_under_sys_siglist=yes
pankso@10352 64 bash_cv_unusable_rtsigs=no
pankso@10352 65 gt_cv_int_divbyzero_sigfpe=yes
pankso@10352 66 EOF
pankso@10344 67 ./configure \
pankso@10352 68 $CONFIGURE_ARGS \
pankso@10352 69 --cache-file=config.cache \
pankso@10344 70 --bindir=/bin \
gokhlayeh@8171 71 --enable-history --enable-alias \
gokhlayeh@8171 72 --disable-nls --without-bash-malloc \
pankso@10344 73 --disable-help-builtin \
pankso@10344 74 --with-installed-readline &&
pascal@1553 75 make &&
gokhlayeh@8171 76 # Bash doesn't care about DESTDIR in environnment variable.
gokhlayeh@8171 77 make DESTDIR=$DESTDIR install
pascal@17195 78 [ -s "$SOURCES_REPOSITORY/$BASHCHECK" ] ||
devl547@19593 79 busybox wget --no-check-certificate -O "$SOURCES_REPOSITORY/$BASHCHECK" $BASHCHECKURL
pascal@17196 80 $DESTDIR/bin/bash $SOURCES_REPOSITORY/$BASHCHECK $DESTDIR/bin/bash | tee bashcheck.log
pascal@17195 81 grep Vulnerable bashcheck.log && echo "ERROR: Vulnerable"
pankso@14 82 }
pankso@14 83
pankso@14 84 # Rules to gen a SliTaz package suitable for Tazpkg.
pankso@14 85 genpkg_rules()
pankso@14 86 {
pascal@14999 87 cp -a $install/bin $fs
pankso@14 88 # Config files.
pankso@14 89 #
pankso@14 90 mkdir $fs/etc
pankso@9697 91 cp $stuff/example.bashrc $fs/etc/bashrc
pankso@14 92 }
pankso@14 93
xfred222@13689 94
pankso@14 95 post_install()
pankso@14 96 {
al@18467 97 mkdir -p "$1/etc/skel"; cp -a "$1/etc/bashrc" "$1/etc/skel/.bashrc"
al@18466 98
al@18466 99 # Exit function in non-interactive mode (when user can't answer question)
al@18968 100 ! tty -s && return
al@18466 101
al@18466 102 echo -n 'Do you want to set Bash to default (y/N) ? : '
al@18466 103 read -t 30 answer
al@18481 104 [ "$answer" != 'y' ] && return
al@18466 105
al@18466 106 echo
al@18466 107 echo 'Setting bash as default shell for all users'
al@18466 108 sed -i 's|:/bin/[ckz]*sh$|:/bin/bash|' "$1/etc/passwd"
al@18466 109
al@18466 110 echo 'Creating ~/.bashrc file for all users'
al@18466 111 for i in $(awk -F: '$7=="/bin/bash"{print $6}' "$1/etc/passwd"); do
al@18466 112 [ -e "$1$i/.bashrc" ] && continue
al@18466 113 cp "$1/etc/bashrc" "$1$i/.bashrc"
al@18466 114 chown $(stat -c%U:%G "$1$i") "$1$i/.bashrc"
al@18466 115 done
pankso@14 116 }
pankso@2156 117
xfred222@13689 118
pankso@2156 119 pre_remove()
pankso@2156 120 {
al@18466 121 echo
al@18466 122 echo 'Setting sh as default shell for all users'
al@18466 123 sed -i 's|:/bin/bash$|:/bin/sh|' "$1/etc/passwd"
al@18466 124 [ -f "$1/etc/skel/.bashrc" ] && rm "$1/etc/skel/.bashrc"
pankso@2156 125 }