emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#9578: closed (make uninstall fails after make inst


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#9578: closed (make uninstall fails after make install-data in empty prefix.)
Date: Mon, 26 Sep 2011 19:57:02 +0000

Your message dated Mon, 26 Sep 2011 21:55:30 +0200
with message-id <address@hidden>
and subject line Re: bug#9578: make uninstall fails after make install-data in 
empty prefix.
has caused the debbugs.gnu.org bug report #9578,
regarding make uninstall fails after make install-data in empty prefix.
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
9578: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9578
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: make uninstall fails after make install-data in empty prefix. Date: Thu, 22 Sep 2011 14:42:59 -0400 User-agent: Mutt/1.5.21 (2010-09-15)
Hello,

I noticed a problem testing the uninstall target of my
automake-generated Makefiles.  If the install prefix does not exist
before installation, automake will create the necessary directories.
But if you run a plain "make install-data" (without make install-exec),
the directories for executables are (unsurprisingly) not created.  The
problem is that "make uninstall" fails in this case:

  % ./configure --prefix=/tmp/does_not_exist
  % make install-data
  % make uninstall
   ( cd '/tmp/does_not_exist/bin' && rm -f foo )
  /bin/sh: line 6: cd: /tmp/does_not_exist/bin: No such file or directory
  make: *** [uninstall-binPROGRAMS] Error 1

and the installed data files are not deleted.  For reference, here's the
generated uninstall-binPROGRAMS target:

  uninstall-binPROGRAMS:
        @$(NORMAL_UNINSTALL)
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
        files=`for p in $$list; do echo "$$p"; done | \
          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
              -e 's/$$/$(EXEEXT)/' `; \
        test -n "$$list" || exit 0; \
        echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(bindir)" && rm -f $$files

Manually adding a - before the second command corrects the issue and the
data is successfully uninstalled.

A similar problem occurs with "make install-exec" followed by "make
uninstall", although this is somewhat less severe because GNU make will
successfully uninstall the executables before failing when it gets to
the data.  I'm using autoconf-2.68 and automake-1.11.1; the problem also
occurs with latest git automake at the time of writing.  The above was
reproduced with the following:

% cat >Makefile.am <<'EOF'
bin_PROGRAMS = foo
data_DATA = bar
EOF

% cat >configure.ac <<'EOF'
AC_INIT([test], [1.0])

AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC

AC_CONFIG_FILES([Makefile])
AC_OUTPUT
EOF

% cat >foo.c <<'EOF'
int main(void) { return 0; }
EOF

% cat >bar <<'EOF'
baz
EOF

Cheers,
-- 
Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/)



--- End Message ---
--- Begin Message --- Subject: Re: bug#9578: make uninstall fails after make install-data in empty prefix. Date: Mon, 26 Sep 2011 21:55:30 +0200 User-agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; )
On Saturday 24 September 2011, Stefano Lattarini wrote:
> On Thursday 22 September 2011, Nick Bowler wrote:
> > Hello,
> >
> Hi Nick, thanks for the report.
> 
> > I noticed a problem testing the uninstall target of my
> > automake-generated Makefiles.  If the install prefix does not exist
> > before installation, automake will create the necessary directories.
> > But if you run a plain "make install-data" (without make install-exec),
> > the directories for executables are (unsurprisingly) not created.  The
> > problem is that "make uninstall" fails in this case:
> >
> I'm not yet sure whether this should be considered a bug or a feature...
> I'm inclined to agree with you that it's more of a bug though, so I'll
> push the attached patch to maint in a few days if nobody objects.  This
> change is not completely obvious, so any review would be appreciated.
> 
> Notice that the test coverage added by the patch is far from perfect, but
> I'd rather improve it in the `testsuite-work' branch only, so that I'll
> be able to use TAP and won't be forced to write 10 or so new "sister
> tests" instead.
>
> Thanks,
>    Stefano
> 

I've squashed in the following, and pushed.  I'm thus closing the bug
report.

Regards,
  Stefano

-*-*-*-

diff --git a/tests/uninstall-fail.test b/tests/uninstall-fail.test
index 6ba0eba..a3e7a7a 100755
--- a/tests/uninstall-fail.test
+++ b/tests/uninstall-fail.test
@@ -16,7 +16,7 @@
 
 # "make uninstall" complains and errors out on failures.
 
-# FIXME: this test only dealt with DATA primary; maybe we need sister
+# FIXME: this test only deal with DATA primary; maybe we need sister
 # tests for other primaries too?  E.g., SCRIPTS, PROGRAMS, LISP, PYTHON,
 # etc...
 
diff --git a/tests/uninstall-pr9578.test b/tests/uninstall-pr9578.test
index 3f67203..9aea52d 100755
--- a/tests/uninstall-pr9578.test
+++ b/tests/uninstall-pr9578.test
@@ -17,6 +17,10 @@
 # Check against automake bug#9578: "make uninstall" issued before
 # "make install" or after a mere "make install-data" or a mere
 # "make install-exec" failed spuriously.
+#
+# FIXME: this test only deal with DATA and script primaries; maybe we
+# need sister tests for other primaries too?  E.g., PROGRAMS, LISP,
+# PYTHON, etc...
 
 . ./defs || Exit 1


--- End Message ---

reply via email to

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