bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnulib-tool: support for subdirectories of lib/


From: Bruno Haible
Subject: gnulib-tool: support for subdirectories of lib/
Date: Mon, 6 Nov 2006 14:43:09 +0100
User-agent: KMail/1.9.1

Hi,

I've been experimenting with modules that have files in subdirectories of lib/.
gnulib-tool didn't handle this. With this patch, it nearly works - modulo
an automake bug.


2006-11-05  Bruno Haible  <address@hidden>

        * gnulib-tool (func_import, func_create_testdir): Create directories
        also for files in subdirectories of lib/.

*** gnulib-20061026-modified/gnulib-tool        2006-10-27 00:15:23.000000000 
+0200
--- gnulib-20061026/gnulib-tool 2006-11-05 23:16:01.000000000 +0100
***************
*** 1614,1665 ****
      func_append old_files " m4/gnulib-tool.m4"
    fi
  
    # Create directories.
!   if test ! -d "$destdir/$sourcebase"; then
!     if $doit; then
!       echo "Creating directory $destdir/$sourcebase"
!       mkdir "$destdir/$sourcebase" || func_fatal_error "failed"
!     else
!       echo "Create directory $destdir/$sourcebase"
!     fi
!   fi
!   if test ! -d "$destdir/$m4base"; then
!     if $doit; then
!       echo "Creating directory $destdir/$m4base"
!       mkdir "$destdir/$m4base" || func_fatal_error "failed"
!     else
!       echo "Create directory $destdir/$m4base"
!     fi
!   fi
!   docfiles=`echo "$files" | sed -n -e 's,^doc/,,p'`
!   if test -n "$docfiles"; then
!     if test ! -d "$destdir/$docbase"; then
!       if $doit; then
!         echo "Creating directory $destdir/$docbase"
!         mkdir "$destdir/$docbase" || func_fatal_error "failed"
!       else
!         echo "Create directory $destdir/$docbase"
!       fi
!     fi
!   fi
!   if test -n "$inctests"; then
!     if test ! -d "$destdir/$testsbase"; then
!       if $doit; then
!         echo "Creating directory $destdir/$testsbase"
!         mkdir "$destdir/$testsbase" || func_fatal_error "failed"
!       else
!         echo "Create directory $destdir/$testsbase"
        fi
!     fi
!   fi
!   if test ! -d "$destdir/$auxdir"; then
!     if $doit; then
!       echo "Creating directory $destdir/$auxdir"
!       mkdir "$destdir/$auxdir" || func_fatal_error "failed"
!     else
!       echo "Create directory $destdir/$auxdir"
!     fi
!   fi
  
    # func_dest_tmpfilename file
    # determines the name of a temporary file (file is relative to destdir).
--- 1614,1663 ----
      func_append old_files " m4/gnulib-tool.m4"
    fi
  
+   sed_rewrite_old_files="\
+     s,^build-aux/,$auxdir/,
+     s,^doc/,$cached_docbase/,
+     s,^lib/,$cached_sourcebase/,
+     s,^m4/,$cached_m4base/,
+     s,^tests/,$cached_testsbase/,"
+   sed_rewrite_new_files="\
+     s,^build-aux/,$auxdir/,
+     s,^doc/,$docbase/,
+     s,^lib/,$sourcebase/,
+     s,^m4/,$m4base/,
+     s,^tests/,$testsbase/,"
+ 
    # Create directories.
!   { echo "$sourcebase"
!     echo "$m4base"
!     docfiles=`echo "$files" | sed -n -e 's,^doc/,,p'`
!     if test -n "$docfiles"; then
!       echo "$docbase"
!     fi
!     if test -n "$inctests"; then
!       echo "$testsbase"
!     fi
!     echo "$auxdir"
!     for f in $files; do echo $f; done \
!       | sed -e "$sed_rewrite_new_files" \
!       | sed -n -e 's,^\(.*\)/[^/]*,\1,p' \
!       | LC_ALL=C sort -u
!   } > "$tmp"/dirs
!   { # Rearrange file descriptors. Needed because "while ... done < ..."
!     # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
!     exec 5<&0 < "$tmp"/dirs
!     while read d; do
!       if test ! -d "$destdir/$d"; then
!         if $doit; then
!           echo "Creating directory $destdir/$d"
!           mkdir -p "$destdir/$d" || func_fatal_error "failed"
!         else
!           echo "Create directory $destdir/$d"
!         fi
        fi
!     done
!     exec 0<&5 5<&-
!   }
  
    # func_dest_tmpfilename file
    # determines the name of a temporary file (file is relative to destdir).
***************
*** 1680,1697 ****
  
    # Copy files or make symbolic links. Remove obsolete files.
    delimiter=' '
-   sed_rewrite_old_files="\
-     s,^build-aux/,$auxdir/,
-     s,^doc/,$cached_docbase/,
-     s,^lib/,$cached_sourcebase/,
-     s,^m4/,$cached_m4base/,
-     s,^tests/,$cached_testsbase/,"
-   sed_rewrite_new_files="\
-     s,^build-aux/,$auxdir/,
-     s,^doc/,$docbase/,
-     s,^lib/,$sourcebase/,
-     s,^m4/,$m4base/,
-     s,^tests/,$testsbase/,"
    # Construct a table with 2 columns: rewritten-file-name original-file-name,
    # representing the files according to the last gnulib-tool invocation.
    for f in $old_files; do echo $f; done \
--- 1678,1683 ----
***************
*** 2185,2210 ****
    echo "File list:"
    echo "$files" | sed -e 's/^/  /'
  
-   # Create directories.
-   for d in `echo "$files" | sed -n -e 's,^\(.*\)/[^/]*,\1,p'`; do
-     case "$d" in
-       build-aux) mkdir -p "$testdir/$auxdir" ;;
-       doc)       mkdir -p "$testdir/$docbase" ;;
-       lib)       mkdir -p "$testdir/$sourcebase" ;;
-       m4)        mkdir -p "$testdir/$m4base" ;;
-       tests)     mkdir -p "$testdir/$testsbase" ;;
-       *)         mkdir -p "$testdir/$d" ;;
-     esac
-   done
- 
-   # Copy files or make symbolic links.
-   delimiter=' '
    sed_rewrite_files="\
      s,^build-aux/,$auxdir/,
      s,^doc/,$docbase/,
      s,^lib/,$sourcebase/,
      s,^m4/,$m4base/,
      s,^tests/,$testsbase/,"
    for f in $files; do echo $f; done \
      | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_files" \
      | LC_ALL=C sort \
--- 2185,2214 ----
    echo "File list:"
    echo "$files" | sed -e 's/^/  /'
  
    sed_rewrite_files="\
      s,^build-aux/,$auxdir/,
      s,^doc/,$docbase/,
      s,^lib/,$sourcebase/,
      s,^m4/,$m4base/,
      s,^tests/,$testsbase/,"
+ 
+   # Create directories.
+   for f in $files; do echo $f; done \
+     | sed -e "$sed_rewrite_files" \
+     | sed -n -e 's,^\(.*\)/[^/]*,\1,p' \
+     | LC_ALL=C sort -u \
+     > "$tmp"/dirs
+   { # Rearrange file descriptors. Needed because "while ... done < ..."
+     # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+     exec 5<&0 < "$tmp"/dirs
+     while read d; do
+       mkdir -p "$testdir/$d"
+     done
+     exec 0<&5 5<&-
+   }
+ 
+   # Copy files or make symbolic links.
+   delimiter=' '
    for f in $files; do echo $f; done \
      | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_files" \
      | LC_ALL=C sort \




reply via email to

[Prev in Thread] Current Thread [Next in Thread]