cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ahu...@apache.org
Subject [9/50] [abbrv] git commit: Fix RPM build using waf (oss only) and maven. With the exception of awsapi most of the rpms are build. Not the neatest way to do it, but a good base for improvement.
Date Tue, 04 Sep 2012 22:12:51 GMT
Fix RPM build using waf (oss only) and maven. With the exception of awsapi most of the rpms
are build. Not the neatest way to do it, but a good base for improvement.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/79004fc7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/79004fc7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/79004fc7

Branch: refs/heads/4.0
Commit: 79004fc7bc5f24f8bf9c75f7a0b0fef01042db13
Parents: dd07d15
Author: Hugo Trippaers <htrippaers@schubergphilis.com>
Authored: Tue Sep 4 11:05:55 2012 +0200
Committer: Hugo Trippaers <htrippaers@schubergphilis.com>
Committed: Tue Sep 4 15:16:18 2012 +0200

----------------------------------------------------------------------
 awsapi/pom.xml |   55 ++++++++++++++
 cloud.spec     |  196 +++++++++++++++++++++++++++++++++++---------------
 wscript_build  |   16 ++++-
 3 files changed, 206 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79004fc7/awsapi/pom.xml
----------------------------------------------------------------------
diff --git a/awsapi/pom.xml b/awsapi/pom.xml
index cf91033..2909376 100644
--- a/awsapi/pom.xml
+++ b/awsapi/pom.xml
@@ -22,6 +22,7 @@
   <artifactId>cloud-awsapi</artifactId>
   <version>4.0.0-SNAPSHOT</version>
   <name>Apache CloudStack AWS API Bridge</name>
+  <packaging>war</packaging>
   <parent>
     <groupId>org.apache.cloudstack</groupId>
     <artifactId>cloudstack</artifactId>
@@ -106,6 +107,60 @@
         </excludes>
       </resource>
     </resources>
+    <plugins>
+<plugin>
+  <groupId>org.apache.maven.plugins</groupId>
+  <artifactId>maven-dependency-plugin</artifactId>
+  <executions>
+    <execution>
+      <id>unpack-my-lib</id>
+      <phase>process-resources</phase>
+      <goals>
+        <goal>unpack</goal>
+      </goals>
+      <configuration>
+        <artifactItems>
+          <artifactItem>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-webapp</artifactId>
+            <version>${cs.axis2.version}</version>
+            <type>war</type>
+            <overWrite>false</overWrite>
+          </artifactItem>
+        </artifactItems>
+        <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}</outputDirectory>
+        <overWriteReleases>false</overWriteReleases>
+      </configuration>
+    </execution>
+  </executions>
+</plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>2.2</version>
+        <configuration>
+          <webXml>web/web.xml</webXml>
+          <excludes>**/client/*.class</excludes>
+          <webResources>
+            <resource>
+              <directory>conf</directory>
+            </resource>
+            <resource>
+              <directory>resource/Axis2</directory>
+              <targetPath>WEB-INF/conf</targetPath>
+            </resource>
+            <resource>
+              <directory>resource/AmazonEC2</directory>
+              <targetPath>WEB-INF/classes</targetPath>
+              <includes>
+                <include>crypto.properties</include>
+                <include>xes.keystore</include>
+              </includes>
+            </resource>
+          </webResources>
+        </configuration>
+      </plugin>
+    </plugins>
     <!--
         <testSourceDirectory>test</testSourceDirectory>
         <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79004fc7/cloud.spec
----------------------------------------------------------------------
diff --git a/cloud.spec b/cloud.spec
index 23c9483..0a1de44 100644
--- a/cloud.spec
+++ b/cloud.spec
@@ -27,8 +27,10 @@ Version:   %{_ver}
 #http://fedoraproject.org/wiki/PackageNamingGuidelines#Pre-Release_packages
 %if "%{?_prerelease}" != ""
 Release:   0.%{_build_number}%{dist}.%{_prerelease}
+%define _maven_ver %{_ver}-SNAPSHOT
 %else
 Release:   %{_rel}%{dist}
+%define _maven_ver %{_ver}
 %endif
 License:   Apache License 2.0
 Vendor:    CloudStack <engineering@cloud.com>
@@ -311,7 +313,84 @@ echo Doing CloudStack build
 rm $RPM_BUILD_ROOT/etc/rc.d/init.d/cloud-console-proxy
 rm $RPM_BUILD_ROOT/usr/bin/cloud-setup-console-proxy
 rm $RPM_BUILD_ROOT/usr/libexec/console-proxy-runner
-./tools/ant/apache-ant-1.7.1/bin/ant deploy-rpm-install -Drpm.install.dir=$RPM_BUILD_ROOT
+#
+# Remove a lot of deps that maven pulled in, dirty fix
+#
+rm $RPM_BUILD_ROOT/usr/share/java/XmlSchema-1.4.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/activation-1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/annogen-0.1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/ant-1.7.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/ant-launcher-1.7.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/antlr-2.7.6.jar
+rm $RPM_BUILD_ROOT/usr/share/java/asm-3.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axiom-api-1.2.8.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axiom-dom-1.2.7.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axiom-impl-1.2.7.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis-jaxrpc-1.4.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-1.5.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-adb-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-adb-codegen-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-ant-plugin-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-codegen-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-java2wsdl-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/axis2-kernel-1.4.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cglib-nodep-2.2.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-agent-4.0.0-SNAPSHOT-tests.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-com.thoughtworks.selenium-1.0.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-console-proxy-4.0.0-SNAPSHOT.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-iControl.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-manageontap.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-netscaler-sdx.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-netscaler.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-patches-4.0.0-SNAPSHOT.jar
+rm $RPM_BUILD_ROOT/usr/share/java/cloud-utils-4.0.0-SNAPSHOT-tests.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-collections-3.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-collections-3.2.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-fileupload-1.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-io-1.4.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-logging-1.0.4.jar
+rm $RPM_BUILD_ROOT/usr/share/java/commons-logging-1.1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/dom4j-1.6.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/geronimo-activation_1.1_spec-1.0.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/geronimo-javamail_1.4_spec-1.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/geronimo-jms_1.1_spec-1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/geronimo-stax-api_1.0_spec-1.0.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/hamcrest-core-1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/hibernate-annotations-3.5.1-Final.jar
+rm $RPM_BUILD_ROOT/usr/share/java/hibernate-commons-annotations-3.2.0.Final.jar
+rm $RPM_BUILD_ROOT/usr/share/java/hibernate-core-3.5.1-Final.jar
+rm $RPM_BUILD_ROOT/usr/share/java/hibernate-entitymanager-3.5.1-Final.jar
+rm $RPM_BUILD_ROOT/usr/share/java/httpcore-nio-4.0-beta1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/icontrol-1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/javassist-3.9.0.GA.jar
+rm $RPM_BUILD_ROOT/usr/share/java/jaxen-1.1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/json-simple-1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/jsr107cache-1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/jta-1.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/manageontap-1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/mysql-connector-java-5.1.21.jar
+rm $RPM_BUILD_ROOT/usr/share/java/neethi-2.0.4.jar
+rm $RPM_BUILD_ROOT/usr/share/java/netscaler-1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/netscaler-sdx-1.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/selenium-server-1.0.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/servlet-api-2.3.jar
+rm $RPM_BUILD_ROOT/usr/share/java/servlet-api-2.5-20081211.jar
+rm $RPM_BUILD_ROOT/usr/share/java/slf4j-api-1.5.8.jar
+rm $RPM_BUILD_ROOT/usr/share/java/stax-api-1.0.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/woden-api-1.0M8.jar
+rm $RPM_BUILD_ROOT/usr/share/java/woden-impl-dom-1.0M8.jar
+rm $RPM_BUILD_ROOT/usr/share/java/ws-commons-util-1.0.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/wstx-asl-3.2.4.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xalan-2.7.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xercesImpl-2.6.2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xercesImpl-2.8.1.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xml-apis-1.0.b2.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xml-apis-1.3.04.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xmlParserAPIs-2.6.0.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xpp3_min-1.1.4c.jar
+rm $RPM_BUILD_ROOT/usr/share/java/xstream-1.3.1.jar
+# TODO: This is for awsapi, need to think about this
+#./tools/ant/apache-ant-1.7.1/bin/ant deploy-rpm-install -Drpm.install.dir=$RPM_BUILD_ROOT
 
 %clean
 
@@ -415,8 +494,8 @@ fi
 
 %files utils
 %defattr(0644,root,root,0755)
-%{_javadir}/%{name}-utils.jar
-%{_javadir}/%{name}-api.jar
+%{_javadir}/%{name}-utils-%{_maven_ver}.jar
+%{_javadir}/%{name}-api-%{_maven_ver}.jar
 %attr(0755,root,root) %{_bindir}/cloud-sccs
 %attr(0755,root,root) %{_bindir}/cloud-gitrevs
 %doc %{_docdir}/%{name}-%{version}/version-info
@@ -431,26 +510,27 @@ fi
 
 %files server
 %defattr(0644,root,root,0755)
-%{_javadir}/%{name}-server.jar
-%{_javadir}/%{name}-vmware-base.jar
-%{_javadir}/%{name}-ovm.jar
-%{_javadir}/%{name}-dp-user-concentrated-pod.jar
-%{_javadir}/%{name}-dp-user-dispersing.jar
-%{_javadir}/%{name}-host-allocator-random.jar
-%{_javadir}/%{name}-plugin-f5.jar
-%{_javadir}/%{name}-plugin-netscaler.jar
-%{_javadir}/%{name}-plugin-ovs.jar
-%{_javadir}/%{name}-plugin-srx.jar
-%{_javadir}/%{name}-storage-allocator-random.jar
-%{_javadir}/%{name}-user-authenticator-ldap.jar
-%{_javadir}/%{name}-user-authenticator-md5.jar
-%{_javadir}/%{name}-user-authenticator-plaintext.jar
-%{_javadir}/%{name}-vmware.jar
-%{_javadir}/%{name}-xen.jar
-%{_javadir}/%{name}-plugin-nicira-nvp.jar
-%{_javadir}/%{name}-plugin-elb.jar
-%{_javadir}/%{name}-plugin-netapp.jar
+%{_javadir}/%{name}-server-%{_maven_ver}.jar
+%{_javadir}/%{name}-vmware-base-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-hypervisor-ovm-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-hypervisor-xen-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-planner-user-concentrated-pod-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-planner-user-dispersing-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-host-allocator-random-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-network-ovs-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-network-nvp-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-network-elb-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-storage-allocator-random-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-user-authenticator-ldap-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-user-authenticator-md5-%{_maven_ver}.jar
+%{_javadir}/%{name}-plugin-user-authenticator-plaintext-%{_maven_ver}.jar
 %config(noreplace) %{_sysconfdir}/%{name}/server/*
+#%{_javadir}/%{name}-plugin-f5-%{_maven_ver}.jar
+#%{_javadir}/%{name}-plugin-netscaler-%{_maven_ver}.jar
+#%{_javadir}/%{name}-plugin-srx-%{_maven_ver}.jar
+#%{_javadir}/%{name}-vmware-%{_maven_ver}.jar
+#%{_javadir}/%{name}-plugin-netapp-%{_maven_ver}.jar
+#%{_javadir}/%{name}-plugin-hypervisor-kvm-%{_maven_ver}.jar
 
 %files agent-scripts
 %defattr(-,root,root,-)
@@ -462,49 +542,47 @@ fi
 
 %files deps
 %defattr(0644,root,root,0755)
-%{_javadir}/%{name}-commons-codec-1.5.jar
-%{_javadir}/%{name}-commons-dbcp-1.4.jar
-%{_javadir}/%{name}-commons-pool-1.5.6.jar
-%{_javadir}/%{name}-commons-httpclient-3.1.jar
-%{_javadir}/%{name}-google-gson-1.7.1.jar
-%{_javadir}/%{name}-netscaler.jar
-%{_javadir}/%{name}-netscaler-sdx.jar
-%{_javadir}/%{name}-log4j-extras.jar
-%{_javadir}/%{name}-backport-util-concurrent-3.0.jar
-%{_javadir}/%{name}-plugin-hypervisor-kvm.jar
-%{_javadir}/%{name}-ehcache.jar
-%{_javadir}/%{name}-email.jar
-%{_javadir}/%{name}-httpcore-4.0.jar
+%{_javadir}/commons-codec-1.6.jar
+%{_javadir}/commons-dbcp-1.4.jar
+%{_javadir}/commons-pool-1.6.jar
+%{_javadir}/commons-httpclient-3.1.jar
+%{_javadir}/gson-1.7.1.jar
+%{_javadir}/apache-log4j-extras-1.1.jar
+%{_javadir}/backport-util-concurrent-3.1.jar
+%{_javadir}/ehcache-1.5.0.jar
+%{_javadir}/mail-1.4.jar
+%{_javadir}/httpcore-4.0.jar
 %{_javadir}/libvirt-0.4.8.jar
-%{_javadir}/%{name}-log4j.jar
-%{_javadir}/%{name}-trilead-ssh2-build213.jar
-%{_javadir}/%{name}-cglib.jar
-%{_javadir}/%{name}-xenserver-5.6.100-1.jar
-%{_javadir}/%{name}-xmlrpc-common-3.*.jar
-%{_javadir}/%{name}-xmlrpc-client-3.*.jar
-%{_javadir}/%{name}-jstl-1.2.jar
+%{_javadir}/log4j-1.2.16.jar
+%{_javadir}/trilead-ssh2-build213-svnkit-1.3-patch.jar
+%{_javadir}/cglib-2.2.jar
+%{_javadir}/xapi-5.6.100-1-SNAPSHOT.jar
+%{_javadir}/xmlrpc-common-3.*.jar
+%{_javadir}/xmlrpc-client-3.*.jar
+%{_javadir}/jstl-1.2.jar
 %{_javadir}/jetty-6.1.26.jar
 %{_javadir}/jetty-util-6.1.26.jar
-%{_javadir}/%{name}-axis.jar
-%{_javadir}/%{name}-commons-discovery.jar
-%{_javadir}/%{name}-wsdl4j-1.6.2.jar
-%{_javadir}/%{name}-bcprov-jdk16-1.45.jar
-%{_javadir}/%{name}-jsch-0.1.42.jar
-%{_javadir}/%{name}-iControl.jar
-%{_javadir}/%{name}-manageontap.jar
+%{_javadir}/axis-1.4.jar
+%{_javadir}/commons-discovery-0.5.jar
+%{_javadir}/wsdl4j-1.6.2.jar
+%{_javadir}/bcprov-jdk16-1.46.jar
+%{_javadir}/jsch-0.1.42.jar
 %{_javadir}/vmware*.jar
-%{_javadir}/%{name}-jnetpcap.jar
-%{_javadir}/%{name}-junit.jar
-%{_javadir}/%{name}-jasypt-1.8.jar
-%{_javadir}/%{name}-commons-configuration-1.8.jar
-%{_javadir}/%{name}-commons-lang-2.6.jar
-%{_javadir}/%{name}-ejb-api-3.0.jar
-%{_javadir}/%{name}-javax.persistence-2.0.0.jar
+%{_javadir}/junit-4.10.jar
+%{_javadir}/jasypt-1.9.0.jar
+%{_javadir}/commons-configuration-1.8.jar
+%{_javadir}/commons-lang-2.6.jar
+%{_javadir}/ejb-api-3.0.jar
+%{_javadir}/hibernate-jpa-2.0-api-1.0.0.Final.jar
+#%{_javadir}/%{name}-netscaler.jar
+#%{_javadir}/%{name}-netscaler-sdx.jar
+#%{_javadir}/%{name}-iControl.jar
+#%{_javadir}/%{name}-manageontap.jar
 
 
 %files core
 %defattr(0644,root,root,0755)
-%{_javadir}/%{name}-core.jar
+%{_javadir}/%{name}-core-%{_maven_ver}.jar
 
 %files python
 %defattr(0644,root,root,0755)
@@ -551,7 +629,7 @@ fi
 
 %files agent-libs
 %defattr(0644,root,root,0755)
-%{_javadir}/%{name}-agent.jar
+%{_javadir}/%{name}-agent-%{_maven_ver}.jar
 
 %files agent
 %defattr(0644,root,root,0755)
@@ -578,7 +656,7 @@ fi
 
 %files usage
 %defattr(0644,root,root,0775)
-%{_javadir}/%{name}-usage.jar
+%{_javadir}/%{name}-usage-%{_maven_ver}.jar
 %attr(0755,root,root) %{_initrddir}/%{name}-usage
 %dir %attr(0770,root,%{name}) %{_localstatedir}/log/%{name}/usage
 %config(noreplace) %{_sysconfdir}/%{name}/usage/usage-components.xml

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79004fc7/wscript_build
----------------------------------------------------------------------
diff --git a/wscript_build b/wscript_build
index 4abc031..b182097 100644
--- a/wscript_build
+++ b/wscript_build
@@ -135,7 +135,8 @@ def build_jars ():
 			"cloud-servlet-api.jar", "cloud-commons-logging-1.1.1.jar",
 			"cloud-ws-commons-util-1.0.2.jar",
 			"cloud-commons-collections-3.2.1.jar", "vmware*.jar", "cloud-secstorage-extras.jar",
-			"cloud-agent-simulator.jar", "cloud-awsapi.jar", "cloud-test.jar", "cloud-wsdl4j.jar",
"cloud-console-proxy.jar"]
+			"cloud-agent-simulator.jar", "cloud-awsapi.jar", "cloud-test.jar", "cloud-wsdl4j.jar",
"cloud-console-proxy.jar",
+                        "cloud-*tests.jar" ]
 
 	for a in jars_str:
 		if _basename (a).startswith ("cloud-") \
@@ -428,7 +429,17 @@ def build_usage_dir ():
 			Utils.subst_vars("${MSCONF}/db.properties",bld.env))
 	Utils.pprint ("GREEN", "Installed files of usage/")
 
-
+def build_awsapi():
+	start_path = bld.path.find_dir ("awsapi")
+	bld.install_files_filtered("${DATADIR}/cloud/bridge/conf","conf/*", cwd = start_path)
+	bld.install_files_filtered("${DATADIR}/cloud/bridge/lib","target/cloud-awsapi-*/WEB-INF/lib/*jar",
cwd = start_path)
+	bld.install_files_filtered("${DATADIR}/cloud/bridge/webapps7080/WEB-INF","web/*", cwd =
start_path)
+	start_path = bld.path.find_dir ("awsapi-setup")
+	bld.install_files_filtered("${DATADIR}/cloud/setup/bridge/db","db/mysql/*.sql", cwd = start_path)
+	bld.install_files_filtered("${DATADIR}/cloud/setup/bridge/db","db/mysql/*.sh", cwd = start_path)
+	bld.install_files_filtered("${BINDIR}","setup/*", cwd = start_path)
+	Utils.pprint ("GREEN", "Installed files of awsapi/")
+     
 
 # Get started to execute here
 build_utils_docs ()
@@ -451,6 +462,7 @@ build_xml_api_description ()
 build_ovm ()
 #build_test()
 build_usage_dir()
+build_awsapi()
 
 # ====================== Magic! =========================================
 bld.use_the_magic()


Mime
View raw message