diff --git a/mysql-test/include/have_archive_plugin.inc b/mysql-test/include/have_archive_plugin.inc
new file mode 100644
index 0000000000000000000000000000000000000000..98e146ca20b7ef9a60f8d0cf92bfb21e523d9991
--- /dev/null
+++ b/mysql-test/include/have_archive_plugin.inc
@@ -0,0 +1,5 @@
+if (`select plugin_library IS NULL from information_schema.plugins where plugin_name LIKE '%archive%'`)
+{
+  --skip archive plugin not available
+}
+
diff --git a/mysql-test/r/archive_plugin.result b/mysql-test/r/archive_plugin.result
new file mode 100644
index 0000000000000000000000000000000000000000..221b343cca52d83d4dfeaf653f8da5566073fd76
--- /dev/null
+++ b/mysql-test/r/archive_plugin.result
@@ -0,0 +1,15 @@
+CREATE TABLE t1(a int) ENGINE=ARCHIVE;
+Warnings:
+Warning	1286	Unknown storage engine 'ARCHIVE'
+Warning	1266	Using storage engine MyISAM for table 't1'
+DROP TABLE t1;
+INSTALL PLUGIN archive SONAME 'ha_archive.so';
+INSTALL PLUGIN ARCHIVE SONAME 'ha_archive.so';
+ERROR HY000: Function 'ARCHIVE' already exists
+UNINSTALL PLUGIN archive;
+INSTALL PLUGIN archive SONAME 'ha_archive.so';
+CREATE TABLE t1(a int) ENGINE=ARCHIVE;
+DROP TABLE t1;
+UNINSTALL PLUGIN archive;
+UNINSTALL PLUGIN archive;
+ERROR 42000: PLUGIN archive does not exist
diff --git a/mysql-test/t/archive_plugin-master.opt b/mysql-test/t/archive_plugin-master.opt
new file mode 100644
index 0000000000000000000000000000000000000000..28e7a6a28316c46c0495450384da3669cc6442de
--- /dev/null
+++ b/mysql-test/t/archive_plugin-master.opt
@@ -0,0 +1 @@
+--plugin_dir=../storage/archive/.libs
diff --git a/mysql-test/t/archive_plugin.test b/mysql-test/t/archive_plugin.test
new file mode 100644
index 0000000000000000000000000000000000000000..18b7cddc7d3a14111d9b412be5446681336ade29
--- /dev/null
+++ b/mysql-test/t/archive_plugin.test
@@ -0,0 +1,23 @@
+--source include/not_windows.inc
+--source include/have_archive_plugin.inc
+
+CREATE TABLE t1(a int) ENGINE=ARCHIVE;
+DROP TABLE t1;
+
+INSTALL PLUGIN archive SONAME 'ha_archive.so';
+--error 1125
+INSTALL PLUGIN ARCHIVE SONAME 'ha_archive.so';
+
+UNINSTALL PLUGIN archive;
+
+INSTALL PLUGIN archive SONAME 'ha_archive.so';
+
+CREATE TABLE t1(a int) ENGINE=ARCHIVE;
+
+DROP TABLE t1;
+
+UNINSTALL PLUGIN archive;
+
+--error ER_SP_DOES_NOT_EXIST 
+UNINSTALL PLUGIN archive;
+
diff --git a/storage/archive/Makefile.am b/storage/archive/Makefile.am
index bb88ff2e8d1616720720651895f30522dc6b43fb..ca7942c082d783ef5e3aa21a12053f53cfa00d01 100644
--- a/storage/archive/Makefile.am
+++ b/storage/archive/Makefile.am
@@ -71,24 +71,23 @@ EXTRA_DIST =		CMakeLists.txt plug.in
 if HAVE_DTRACE_DASH_G
 # The object for static and dynamic linking of archive differ 
 # For static linkage of archive to mysqld 
+
 libarchive_a_LIBADD = probes_mysql.o
 libarchive_a_DEPENDENCIES = probes_mysql.o dtrace_files dtrace_providers
 # For archive as shared library 
 ha_archive_la_LIBADD = probes_sh_mysql.o
-ha_archive_la_DEPENDENCIES = probes_sh_mysql.o dtrace_shared_files dtrace_providers
-
-CLEANFILES = $(DTRACEPROVIDER) dtrace_files dtrace_providers dtrace_shared_files dtrace_sources
-DTRACEFILES = libarchive_a-ha_archive.o
-DTRACESHAREDFILES = .libs/ha_archive_la-ha_archive.o
 # Hack: We "depend" on ".libs/" but have no rule for it,
 # but it is created as a byproduct of the ".lo"
-DTRACESHAREDDEPEND = ha_archive_la-ha_archive.lo
+DTRACESHAREDDEPS = ha_archive_la-ha_archive.lo
+DTRACESHAREDFILES = ha_archive_la-ha_archive.o
 DTRACEPROVIDER = probes_mysql.d
+ha_archive_la_DEPENDENCIES = probes_sh_mysql.o $(DTRACESHAREDDEPS) dtrace_providers
+
+CLEANFILES = $(DTRACEPROVIDER) dtrace_files dtrace_providers $(DTRACESHAREDFILES)
+DTRACEFILES = libarchive_a-ha_archive.o
 
 dtrace_files:
 	echo $(DTRACEFILES) > $@
-dtrace_shared_files:
-	echo $(DTRACESHAREDFILES) > $@
 dtrace_providers: probes_mysql.d
 	echo $(DTRACEPROVIDER) > $@
 probes_mysql.d:
@@ -96,11 +95,12 @@ probes_mysql.d:
 	$(CP) $(top_srcdir)/include/probes_mysql.d.base probes_mysql.d
 	echo timestamp > dtrace_sources
 
-probes_sh_mysql.o: $(DTRACEPROVIDER) $(DTRACESHAREDDEPEND)
+probes_sh_mysql.o: $(DTRACEPROVIDER) $(DTRACESHAREDDEPS)
 	$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACESHAREDFILES) -o $@
-
+	$(CP) $(DTRACESHAREDFILES) .libs
 probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
 	$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
+
 endif
 
 # Don't update the files from bitkeeper