diff --git a/.cvsignore b/.cvsignore index 68f0275..d9ff4d6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,3 @@ -bash-2.05.tar.bz2 -bash-doc-2.05.tar.bz2 +bash-2.05a.tar.bz2 +bash-completion-20020220.tar.gz +bash-doc-2.05a.tar.bz2 diff --git a/bash-2.05a-interpreter.patch b/bash-2.05a-interpreter.patch new file mode 100644 index 0000000..d2377a9 --- /dev/null +++ b/bash-2.05a-interpreter.patch @@ -0,0 +1,223 @@ +--- bash-2.05a/config.h.in Mon Oct 22 06:58:13 2001 ++++ bash-2.05a-ud/config.h.in Thu Mar 7 17:33:03 2002 +@@ -541,6 +541,9 @@ + /* Define if you have the pathconf function. */ + #undef HAVE_PATHCONF + ++/* Define if you have the pread function. */ ++#undef HAVE_PREAD ++ + /* Define if you have the putenv function. */ + #undef HAVE_PUTENV + +@@ -675,6 +678,9 @@ + /* Define if you have the header file. */ + #undef HAVE_DLFCN_H + ++/* Define if you have the header file. */ ++#undef HAVE_ELF_H ++ + /* Define if you have the header file. */ + #undef HAVE_GRP_H + +--- bash-2.05a/configure.in Mon Nov 5 12:45:35 2001 ++++ bash-2.05a-ud/configure.in Thu Mar 7 17:28:32 2002 +@@ -484,7 +484,7 @@ BASH_HEADER_INTTYPES + + AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ + memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ +- stddef.h stdint.h netdb.h grp.h strings.h) ++ stddef.h stdint.h netdb.h grp.h strings.h elf.h) + AC_CHECK_HEADERS(sys/ptem.h sys/pte.h sys/stream.h sys/select.h sys/file.h \ + sys/resource.h sys/param.h sys/socket.h \ + sys/time.h sys/times.h sys/wait.h) +@@ -546,7 +546,7 @@ AC_CHECK_FUNCS(bcopy bzero confstr sysco + setlinebuf setvbuf setlocale strchr tcgetattr uname \ + ulimit tzset siginterrupt memmove ttyname times \ + getaddrinfo gethostbyname getservbyname inet_aton \ +- vsnprintf snprintf vasprintf asprintf fnmatch) ++ vsnprintf snprintf vasprintf asprintf fnmatch pread) + AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) + AC_REPLACE_FUNCS(getcwd strcasecmp strerror strpbrk strtod) + AC_REPLACE_FUNCS(strtol strtoul strtoll strtoull strtoimax strtoumax) +--- bash-2.05a/execute_cmd.c Mon Oct 29 11:03:18 2001 ++++ bash-2.05a-ud/execute_cmd.c Fri Mar 8 00:50:53 2002 +@@ -1,6 +1,6 @@ + /* execute_command.c -- Execute a COMMAND structure. */ + +-/* Copyright (C) 1987,1991 Free Software Foundation, Inc. ++/* Copyright (C) 1987,1991, 2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + +@@ -40,6 +40,10 @@ + # include + #endif + ++#ifdef HAVE_ELF_H ++# include ++#endif ++ + #include "posixtime.h" + + #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) +@@ -3499,12 +3503,21 @@ shell_execve (command, args, env) + internal_error ("%s: is a directory", command); + else + { ++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) ++ int fd = open (command, O_RDONLY); ++ ++ if (fd >= 0) ++ sample_len = read (fd, sample, sizeof (sample)); ++ else ++ sample_len = -1; ++#endif ++ + #if defined (HAVE_HASH_BANG_EXEC) +- READ_SAMPLE_BUF (command, sample, sample_len); + if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') + { + char *interp; + ++ close (fd); + interp = getinterp (sample, sample_len, (int *)NULL); + errno = i; + sys_error ("%s: %s: bad interpreter", command, interp ? interp : ""); +@@ -3512,6 +3525,136 @@ shell_execve (command, args, env) + return (EX_NOEXEC); + } + #endif ++#if defined (HAVE_ELF_H) ++ if (i == ENOENT ++ && sample_len > EI_NIDENT ++ && memcmp (sample, ELFMAG, SELFMAG) == 0) ++ { ++ off_t offset = -1; ++ ++ /* It is an ELF file. Now determine whether it is dynamically ++ linked and if yes, get the offset of the interpreter ++ string. */ ++ if (sample[EI_CLASS] == ELFCLASS32 ++ && sample_len > sizeof (Elf32_Ehdr)) ++ { ++ Elf32_Ehdr ehdr; ++ Elf32_Phdr *phdr; ++ int nphdr; ++ ++ /* We have to copy the data since the sample buffer ++ might not be aligned correctly to be accessed as ++ an Elf32_Ehdr struct. */ ++ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); ++ ++ nphdr = ehdr.e_phnum; ++ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ if (phdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ ehdr.e_phoff); ++#else ++ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) ++ sample_len = read (fd, phdr, ++ nphdr * ehdr.e_phentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nphdr * ehdr.e_phentsize) ++ while (nphdr-- > 0) ++ if (phdr[nphdr].p_type == PT_INTERP) ++ { ++ offset = phdr[nphdr].p_offset; ++ break; ++ } ++ free (phdr); ++ } ++ } ++ else if (sample[EI_CLASS] == ELFCLASS64 ++ && sample_len > sizeof (Elf64_Ehdr)) ++ { ++ Elf64_Ehdr ehdr; ++ Elf64_Phdr *phdr; ++ int nphdr; ++ ++ /* We have to copy the data since the sample buffer ++ might not be aligned correctly to be accessed as ++ an Elf64_Ehdr struct. */ ++ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); ++ ++ nphdr = ehdr.e_phnum; ++ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ if (phdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ ehdr.e_phoff); ++#else ++ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) ++ sample_len = read (fd, phdr, ++ nphdr * ehdr.e_phentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nphdr * ehdr.e_phentsize) ++ while (nphdr-- > 0) ++ if (phdr[nphdr].p_type == PT_INTERP) ++ { ++ offset = phdr[nphdr].p_offset; ++ break; ++ } ++ free (phdr); ++ } ++ } ++ ++ if (offset != -1) ++ { ++ size_t maxlen = 0; ++ size_t actlen = 0; ++ char *interp = NULL; ++ ++ do ++ { ++ if (actlen == maxlen) ++ { ++ char *newinterp = realloc (interp, maxlen += 200); ++ if (newinterp == NULL) ++ { ++ actlen = 0; ++ break; ++ } ++ interp = newinterp; ++ ++#ifdef HAVE_PREAD ++ actlen = pread (fd, interp, maxlen, offset); ++#else ++ if (lseek (fd, offset, SEEK_SET) != -1) ++ actlen = read (fd, interp, maxlen); ++ else ++ actlen = -1; ++#endif ++ } ++ } ++ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL); ++ ++ if (actlen > 0) ++ { ++ close (fd); ++ errno = i; ++ sys_error ("%s: %s: bad ELF interpreter", command, ++ interp); ++ free (interp); ++ return (EX_NOEXEC); ++ } ++ ++ free (interp); ++ } ++ } ++#endif ++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) ++ close (fd); ++#endif + errno = i; + file_error (command); + } diff --git a/bash.spec b/bash.spec index a4ba0a8..c1d5a4c 100644 --- a/bash.spec +++ b/bash.spec @@ -1,7 +1,7 @@ -Version: 2.05 +Version: 2.05a Name: bash Summary: The GNU Bourne Again shell (bash) version %{version}. -Release: 8 +Release: 12 Group: System Environment/Shells License: GPL Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{version}.tar.bz2 @@ -9,32 +9,26 @@ Source2: ftp://ftp.gnu.org/gnu/bash/bash-doc-%{version}.tar.bz2 Source3: dot-bashrc Source4: dot-bash_profile Source5: dot-bash_logout -# FIXME: Source6 and 7 MUST be removed at the next base version -# update! They're fixing a bug in the current version. -Source6: y.tab.c -Source7: y.tab.h +Source6: http://www.caliban.org/files/bash/bash-completion-20020220.tar.gz Patch0: bash-2.03-paths.patch Patch1: bash-2.02-security.patch Patch2: bash-2.04-arm.patch Patch3: bash-2.03-profile.patch Patch4: bash-2.05-readlinefixes.patch -Patch5: bash-2.04-requires.patch +Patch5: bash-2.05a-requires.patch Patch6: bash-2.04-compat.patch -Patch7: bash-2.04-shellfunc.patch +Patch7: bash-2.05a-shellfunc.patch Patch8: bash-2.05-ia64.patch -Patch9: bash-2.05-s390x-unwind.patch -Patch10: bash-2.05-ipv6-20010418.patch -Patch51: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-001 -Patch52: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-002 -Patch53: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-003 -Patch54: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-004 -Patch55: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-005 -Patch56: ftp://ftp.cwru.edu/pub/bash/bash-2.05-patches/bash205-006 +Patch9: bash-2.05a-mailcheck.patch +Patch10: bash-2.05a-service_completion.patch +Patch11: bash-2.05a-loadables.patch +Patch12: bash-2.05a-interpreter.patch +Patch13: bash-2.05a-killbuiltin.patch Prefix: %{_prefix} Requires: mktemp Provides: bash2 Obsoletes: bash2 etcskel -BuildRoot: /var/tmp/%{name}-root +BuildRoot: %{_tmppath}/%{name}-%{version}-root %description The GNU Bourne Again shell (Bash) is a shell or command language @@ -60,9 +54,7 @@ The bash-doc package contains documentation for the GNU Bourne Again shell version %{version}. %prep -%setup -q -a 2 -cp %{SOURCE6} . -cp %{SOURCE7} . +%setup -q -a 2 -a 6 %patch0 -p1 -b .paths %patch1 -p1 -b .security %patch2 -p1 -b .arm @@ -72,16 +64,11 @@ cp %{SOURCE7} . %patch6 -p1 -b .compat %patch7 -p1 -b .shellfunc %patch8 -p1 -b .ia64 -%ifarch s390x -%patch9 -p1 -b .s390x -%endif -%patch10 -p1 -b .ipv6 -%patch51 -p0 -b .pl1 -%patch52 -p0 -b .pl2 -%patch53 -p0 -b .pl3 -%patch54 -p0 -b .pl4 -%patch55 -p0 -b .pl5 -%patch56 -p0 -b .pl6 +%patch9 -p1 -b .mailcheck +%patch10 -p1 -b .servicecomp +%patch11 -p1 -b .loadables +%patch12 -p1 -b .interpreter +%patch13 -p1 -b .killbuiltin echo %{version} > _distribution echo %{release} > _patchlevel @@ -89,14 +76,29 @@ echo %{release} > _patchlevel #CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" \ # ./configure --prefix=$RPM_BUILD_ROOT/usr $RPM_ARCH-redhat-linux -autoreconf -%configure +if ! autoconf; then + # Yuck. We're using autoconf 2.1x. + ln -s /bin/true autoconf + export PATH=.:$PATH +fi +CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} --with-afs +make + +cd examples/loadables make %install rm -rf $RPM_BUILD_ROOT +if [ -e autoconf ]; then + # Yuck. We're using autoconf 2.1x. + export PATH=.:$PATH +fi + %makeinstall + +mkdir -p $RPM_BUILD_ROOT/etc + # make manpages for bash builtins as per suggestion in DOC/README cd doc sed -e ' @@ -118,15 +120,10 @@ install -c -m 644 builtins.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/builtins.1 for i in `cat man.pages` ; do echo .so man1/builtins.1 > ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1 + chmod 0644 ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1 done - -# now turn man.pages into a filelist for the man subpackage -cat man.pages | tr -s ' ' '\n' | sed ' -1i\ -%defattr(0644,root,root,0755) -s:^:%{_mandir}/man1/: -s/$/.1*/ -' > ../man.pages +# Not for printf (conflict with coreutils) +rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/printf.1 { cd $RPM_BUILD_ROOT mkdir ./bin @@ -137,14 +134,24 @@ s/$/.1*/ gzip -9nf .%{_infodir}/bash.info rm -f .%{_infodir}/dir } -mkdir -p $RPM_BUILD_ROOT/etc/skel +mkdir -p $RPM_BUILD_ROOT/etc/skel $RPM_BUILD_ROOT/etc/profile.d install -c -m644 $RPM_SOURCE_DIR/dot-bashrc $RPM_BUILD_ROOT/etc/skel/.bashrc install -c -m644 $RPM_SOURCE_DIR/dot-bash_profile \ $RPM_BUILD_ROOT/etc/skel/.bash_profile install -c -m644 $RPM_SOURCE_DIR/dot-bash_logout \ $RPM_BUILD_ROOT/etc/skel/.bash_logout - - +cat >>$RPM_BUILD_ROOT/etc/profile.d/bashopts.sh < 2.05a-12 +- Fix the fix for #62418 + +* Thu Apr 4 2002 Bernhard Rosenkraenzer 2.05a-11 +- Fix kill builtin (#62418) + +* Mon Mar 25 2002 Trond Eivind Glomsr�d 2.0.5a-10 +- Get rid of completion subpackage +- Use %%{_tmppath} + +* Mon Mar 11 2002 Bernhard Rosenkraenzer 2.05a-9 +- Add patch from Ulrich Drepper to get better error messages when trying + to launch an application with a bad ELF interpreter (e.g. libc5 ld.so) + (#60870) + +* Fri Feb 22 2002 Bernhard Rosenkraenzer 2.05a-8 +- Update completion + +* Wed Jan 30 2002 Bernhard Rosenkraenzer 2.05a-7 +- Update completion stuff and move it to a separate package + +* Sat Jan 26 2002 Bernhard Rosenkraenzer 2.05a-6 +- Add patches from Ian Macdonald + +* Wed Jan 23 2002 Bernhard Rosenkraenzer 2.05a-5 +- Add programmable completion (optional) + +* Thu Jan 17 2002 Bernhard Rosenkraenzer 2.05a-4 +- Fix mailcheck (#57792) + +* Tue Jan 15 2002 Bernhard Rosenkraenzer 2.05a-3 +- Fix autoconf mess +- Build --with-afs, some users may be using it + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Thu Nov 22 2001 Bernhard Rosenkraenzer 2.05a-2 +- Fix conflict with sh-utils (printf builtin manpage vs. printf binary manpage) + (#56590) + +* Tue Nov 20 2001 Bernhard Rosenkraenzer 2.05a-1 +- 2.05a + +* Wed Oct 10 2001 Florian La Roche +- disable s390x fix, not needed anymore + +* Mon Oct 1 2001 Bernhard Rosenkraenzer 2.05-9 +- Add patch from readline 4.2-3 to bash's internal libreadline + * Mon Jul 9 2001 Bernhard Rosenkraenzer 2.05-8 - Merge Pekka Savola's patch (RFE#47762) diff --git a/sources b/sources index c64a6fb..8a49461 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ -2d2e4b9a20ea673ee00925dfa5c31d24 bash-2.05.tar.bz2 -6be0a817ada25a0552cb17975acad0f7 bash-doc-2.05.tar.bz2 +c29b50db808003e39558a0f6354f4cad bash-2.05a.tar.bz2 +1fb7158868b3d0486fc4611a838c2662 bash-completion-20020220.tar.gz +33d9704a812dd43c2e9fad44d74dc569 bash-doc-2.05a.tar.bz2