Blob Blame History Raw
%global namedreltag .CR1
%global namedversion %{version}%{?namedreltag}

%global cachedir %{_var}/cache/%{name}
%global libdir %{_var}/lib/%{name}
%global rundir %{_var}/run/%{name}
%global homedir %{_datadir}/%{name}
%global bindir %{homedir}/bin
%global logdir %{_var}/log/%{name}
%global confdir %{_sysconfdir}/%{name}

%global wfuid 185

# Enabled modules:
%global modules appclient cli cmp connector controller-client controller deployment-repository deployment-scanner domain-management domain-http-error-context domain-http-interface ee ejb3 embedded host-controller jacorb jaxr jaxrs jdr jpa jsf jmx jsr77 logging management-client-content mail messaging naming network patching platform-mbean pojo process-controller protocol remoting sar security server system-jmx threads transactions version web web-common weld xts

# New modules added in WildFly
%global wildflymodules jberet

Name:             wildfly
Version:          8.1.0
Release:          0.3%{namedreltag}%{?dist}
Summary:          WildFly Application Server
License:          LGPLv2+ and ASL 2.0 and GPLv2 with exceptions
URL:              http://wildfly.org/

# git clone git://github.com/wildfly/wildfly.git
# cd wildfly && git checkout 8.1.0.CR1 && git checkout-index -f -a --prefix=wildfly-8.1.0.CR1/
# find wildfly-8.1.0.CR1/ -name '*.jar' -type f -delete
# tar -cJf wildfly-8.1.0.CR1-CLEAN.tar.xz wildfly-8.1.0.CR1
Source0:          wildfly-%{namedversion}-CLEAN.tar.xz

# Makes possible to run WildFly AS in different directory by creating the structure and copying required configuration files
Source1:          wildfly-cp.sh

# The WildFly systemd service
Source2:          wildfly.service

# The WildFly systemd configuration file
Source3:          wildfly.conf

# A simple launch script
Source4:          launch.sh

Provides:         jboss-as = %{version}-%{release}
Obsoletes:        jboss-as < 7.1.1-22

Patch0:           0001-fedora-Add-jtype-dependency-to-hibernate-validator-t.patch
Patch1:           0002-fedora-Missing-module-dependencies-in-mime4j-com.sun.patch
Patch2:           0003-fedora-Use-old-relaxngDatatype.patch
Patch3:           0004-fedora-Remove-still-unavailable-in-Fedora-dependenci.patch
Patch4:           0005-fedora-Use-activation-classes-provided-by-the-JDK.patch
Patch5:           0006-fedora-Use-jws-classes-provided-by-the-JDK.patch
Patch6:           0007-fedora-Use-glassfish-el-and-jboss-el-3.0-api-togethe.patch
Patch7:           0008-fedora-Add-log4j-dependency-to-org.jboss.log4j.logma.patch
Patch8:           0009-fedora-Remove-hornetq-native-extraction-we-re-linkin.patch
Patch9:           0010-fedora-Disable-jipijapa-support-for-Hibernate-4.1-si.patch
Patch10:          0011-fedora-Use-Netty-4-only.patch

BuildArch:        noarch

# Please keep alphabetically
BuildRequires:    aesh
BuildRequires:    aether
BuildRequires:    aether-api
BuildRequires:    antlr-tool
BuildRequires:    ant-apache-bsf
BuildRequires:    apache-commons-beanutils
BuildRequires:    apache-commons-cli
BuildRequires:    apache-commons-codec
BuildRequires:    apache-commons-collections
BuildRequires:    apache-commons-configuration
BuildRequires:    apache-commons-io
BuildRequires:    apache-commons-lang
BuildRequires:    apache-commons-logging
BuildRequires:    apache-commons-pool
BuildRequires:    apache-james-project
BuildRequires:    apache-juddi
BuildRequires:    apache-mime4j
BuildRequires:    apache-scout
BuildRequires:    apacheds
BuildRequires:    atinject
BuildRequires:    bean-validation-api
BuildRequires:    bsf
BuildRequires:    cal10n
BuildRequires:    cdi-api
BuildRequires:    cssparser
BuildRequires:    cxf >= 2.7.5-3
BuildRequires:    cxf-api >= 2.7.5-3
BuildRequires:    cxf-rt >= 2.7.5-3
BuildRequires:    cxf-tools >= 2.7.5-3
BuildRequires:    dom4j
BuildRequires:    ecj
BuildRequires:    felix-configadmin
BuildRequires:    felix-osgi-core
BuildRequires:    fusesource-pom
BuildRequires:    guava
BuildRequires:    h2
BuildRequires:    hibernate
BuildRequires:    hibernate-entitymanager
BuildRequires:    hibernate-infinispan
BuildRequires:    hibernate-envers
BuildRequires:    hibernate3
BuildRequires:    hibernate3-entitymanager
BuildRequires:    hibernate3-infinispan
BuildRequires:    hibernate-commons-annotations
BuildRequires:    hibernate-jpa-2.1-api
BuildRequires:    hibernate-hql
BuildRequires:    hibernate-validator
BuildRequires:    hibernate-search >= 4.5.0-1
BuildRequires:    hornetq >= 2.4.1-1
BuildRequires:    httpcomponents-client
BuildRequires:    httpcomponents-core
BuildRequires:    git
BuildRequires:    glassfish-jaxb
BuildRequires:    glassfish-saaj
BuildRequires:    glassfish-annotation-api
BuildRequires:    glassfish-el
BuildRequires:    glassfish-enterprise-concurrent-api
BuildRequires:    glassfish-enterprise-concurrent
BuildRequires:    generic-jms-ra
BuildRequires:    jboss-servlet-3.1-api
BuildRequires:    gnu-getopt
BuildRequires:    istack-commons
BuildRequires:    infinispan >= 6.0.0-1
BuildRequires:    ironjacamar >= 1.1.2-1
BuildRequires:    jacorb
BuildRequires:    jberet >= 1.0.0-1
BuildRequires:    jackson
BuildRequires:    jandex
BuildRequires:    javacc-maven-plugin
BuildRequires:    javamail
BuildRequires:    javassist
BuildRequires:    jastow >= 1.0.0-1
BuildRequires:    jaxen
BuildRequires:    jaxws-jboss-httpserver-httpspi
BuildRequires:    jettison
BuildRequires:    jgroups
BuildRequires:    jbosgi-metadata
BuildRequires:    jbosgi-parent
BuildRequires:    jboss-annotations-1.2-api
BuildRequires:    jboss-annotations-1.1-api
BuildRequires:    jboss-classfilewriter
BuildRequires:    jboss-common-core
BuildRequires:    jboss-common-beans
BuildRequires:    jboss-connector-1.7-api >= 1.0.0-1
BuildRequires:    jboss-concurrency-1.0-api
BuildRequires:    jboss-dmr >= 1.2.0-1
BuildRequires:    jboss-ejb-3.1-api
BuildRequires:    jboss-ejb-3.2-api
BuildRequires:    jboss-ejb3-ext-api
BuildRequires:    jboss-ejb-client >= 2.0.0-0.4.Beta5
BuildRequires:    jboss-el-2.2-api
BuildRequires:    jboss-el-3.0-api
BuildRequires:    jboss-httpserver
BuildRequires:    jboss-iiop-client
BuildRequires:    jboss-invocation
BuildRequires:    jboss-interceptors-1.2-api
BuildRequires:    jboss-j2eemgmt-1.1-api
BuildRequires:    jboss-jacc-1.5-api
BuildRequires:    jboss-jad-1.2-api
BuildRequires:    jboss-jaxb-2.2-api
BuildRequires:    jboss-jaxb-intros
BuildRequires:    jboss-jaxr-1.0-api
BuildRequires:    jboss-jaxrpc-1.1-api
BuildRequires:    jboss-jaxrs-1.1-api
BuildRequires:    jboss-jaxws-2.2-api
BuildRequires:    jboss-jaspi-1.1-api
BuildRequires:    jboss-batch-1.0-api
BuildRequires:    jboss-jms-2.0-api
BuildRequires:    jboss-jsf-2.1-api
BuildRequires:    jboss-jsf-2.2-api
BuildRequires:    jboss-jsp-2.3-api
BuildRequires:    jboss-jstl-1.2-api
BuildRequires:    jboss-parent
BuildRequires:    jboss-logging
BuildRequires:    jboss-logging-tools
BuildRequires:    jboss-logmanager
BuildRequires:    jboss-logmanager-log4j
BuildRequires:    jboss-marshalling
BuildRequires:    jboss-metadata >= 8.0.0-1
BuildRequires:    jboss-modules
BuildRequires:    jboss-msc
BuildRequires:    jboss-negotiation
BuildRequires:    jboss-remoting >= 4.0.0-1
BuildRequires:    jboss-remoting-jmx
BuildRequires:    jboss-remote-naming
BuildRequires:    jboss-rmi-1.0-api
BuildRequires:    jboss-sasl
BuildRequires:    jboss-saaj-1.3-api
BuildRequires:    jboss-stdio
BuildRequires:    jboss-specs-parent
BuildRequires:    jboss-threads
BuildRequires:    jboss-transaction-1.2-api
BuildRequires:    jboss-transaction-spi >= 7.0.2-1
BuildRequires:    jboss-web
BuildRequires:    jboss-web-native
BuildRequires:    jboss-vfs
BuildRequires:    jbossws-parent
BuildRequires:    jbossws-api
BuildRequires:    jbossws-common >= 2.2.3-1
BuildRequires:    jbossws-common-tools
BuildRequires:    jbossws-cxf
BuildRequires:    jbossws-spi >= 2.2.2-1
BuildRequires:    jbossxb
BuildRequires:    jcip-annotations
BuildRequires:    jdom
BuildRequires:    jul-to-slf4j-stub
BuildRequires:    joda-time
BuildRequires:    jipijapa >= 1.0.0-0.5.CR1
BuildRequires:    jsonp
BuildRequires:    jsoup
BuildRequires:    jtype
BuildRequires:    jansi
BuildRequires:    log4j-jboss-logmanager

%if 0%{?fedora} >= 21
BuildRequires:    lucene3
BuildRequires:    lucene3-contrib
%else
BuildRequires:    lucene
BuildRequires:    lucene-contrib
%endif

BuildRequires:    maven-local
BuildRequires:    maven-jar-plugin
BuildRequires:    maven-checkstyle-plugin
BuildRequires:    maven-resources-plugin
BuildRequires:    maven-surefire-plugin
BuildRequires:    maven-dependency-plugin
BuildRequires:    maven-help-plugin
BuildRequires:    maven-shade-plugin
BuildRequires:    maven-enforcer-plugin
BuildRequires:    maven-ear-plugin
BuildRequires:    maven-eclipse-plugin
BuildRequires:    maven-install-plugin
BuildRequires:    maven-ejb-plugin
BuildRequires:    xml-maven-plugin
BuildRequires:    mojarra
BuildRequires:    mockito
BuildRequires:    mod_cluster-java
BuildRequires:    neethi
BuildRequires:    nekohtml
BuildRequires:    narayana >= 5.0.0-0.7
%if 0%{?fedora} >= 21
BuildRequires:    netty
%else
BuildRequires:    netty4
%endif
BuildRequires:    objectweb-asm
BuildRequires:    openjpa
BuildRequires:    opensaml-java
BuildRequires:    opensaml-java-openws
BuildRequires:    opensaml-java-xmltooling
BuildRequires:    opensaml-java-parent
BuildRequires:    picketbox >= 4.0.20-1
BuildRequires:    picketbox-commons
BuildRequires:    picketbox-xacml
BuildRequires:    powermock-junit4
BuildRequires:    powermock-api-mockito
BuildRequires:    resteasy >= 3.0.6-1
BuildRequires:    relaxngDatatype
BuildRequires:    rhq-plugin-annotations
BuildRequires:    scannotation
BuildRequires:    sac
BuildRequires:    serp
BuildRequires:    shrinkwrap
#BuildRequires:    shrinkwrap-resolver
BuildRequires:    slf4j
%if 0%{?fedora} >= 21
BuildRequires:    slf4j-ext
%endif
BuildRequires:    slf4j-jboss-logmanager
BuildRequires:    snakeyaml
BuildRequires:    staxmapper
BuildRequires:    stax2-api
BuildRequires:    systemd-units
BuildRequires:    undertow >= 1:1.0.5-1
BuildRequires:    velocity
BuildRequires:    weld-api >= 2.1-0.1
BuildRequires:    weld-core >= 2.1.0-0.1
BuildRequires:    weld-parent
BuildRequires:    woodstox-core
BuildRequires:    wsdl4j
BuildRequires:    wss4j
BuildRequires:    wildfly-security-manager >= 1.0.0-1
BuildRequires:    ws-xmlschema
BuildRequires:    xalan-j2
BuildRequires:    xerces-j2
BuildRequires:    xml-security
BuildRequires:    xml-commons-apis
BuildRequires:    xml-commons-resolver
BuildRequires:    xnio >= 3.2.0-1
BuildRequires:    netty-xnio-transport
BuildRequires:    xom

BuildRequires:    mvn(org.hibernate:hibernate-validator-cdi)

# Missing requires not provided by xmvn
Requires:         cal10n
Requires:         glassfish-el
Requires:         glassfish-saaj
Requires:         hibernate-envers
Requires:         hibernate-infinispan
Requires:         jandex
Requires:         jboss-concurrency-1.0-api
Requires:         jboss-jaxrs-1.1-api
Requires:         jbossws-cxf
Requires:         jsonp
Requires:         jtype
Requires:         slf4j-jboss-logmanager
Requires:         slf4j-ext
Requires:         tomcat-native
Requires:         woodstox-core

# Required for compiling JSP for example
Requires:         java-devel >= 1:1.7

Requires(pre):    shadow-utils
Requires(post):   systemd-units
Requires(preun):  systemd-units
Requires(postun): systemd-units

%description
WildFly Application Server (formerly known as JBoss Application Server) is the
latest release in a series of WildFly offerings. WildFly Application Server, is
a fast, powerful, implementation of the Java Enterprise Edition 6
specification.  The state-of-the-art architecture built on the Modular Service
Container enables services on-demand when your application requires them.

%package javadoc
Summary:          Javadocs for %{name}
Group:            Documentation

%description javadoc
This package contains the API documentation for %{name}.

%package doc
Summary:          Documentation for %{name}
Group:            Documentation

%description doc
This package contains the documentation for %{name}.

%prep
%setup -q -n wildfly-%{namedversion}

git init
git config user.email "wildfly-owner@fedoraproject.org"
git config user.name "WildFly package owner"
git add .
git commit -a -q -m "%{version} baseline."

git am %{patches}

# Remove wagon extension
%pom_xpath_remove "pom:build/pom:extensions" build-config/pom.xml

# Make the javax.inject dep available at build time too
%pom_xpath_remove "pom:dependencies/pom:dependency[pom:artifactId = 'javax.inject']/pom:scope" arquillian/container-remote/pom.xml

# Disable checkstyle plugin
%pom_remove_plugin "org.apache.maven.plugins:maven-checkstyle-plugin"

# Disable enforcer plugin - doesn't make sens on Fedora
%pom_remove_plugin "org.apache.maven.plugins:maven-enforcer-plugin"

%pom_disable_module subsystem-test
%pom_disable_module model-test
%pom_disable_module core-model-test
%pom_disable_module arquillian
%pom_disable_module testsuite
%pom_disable_module testsuite/shared

%pom_disable_module multi-jsf-installer jsf/pom.xml

%pom_remove_dep "org.wildfly:wildfly-core-model-test-framework" build/pom.xml

# No myfaces avaialble
rm -rf jsf/injection/src/main/java/org/jboss/as/jsf/injection/MyFaces*
%pom_remove_dep "org.apache.myfaces.core:myfaces-impl" jsf/injection/pom.xml

%pom_remove_dep "sun.jdk:jconsole" cli/pom.xml
%pom_add_dep "sun.jdk:jconsole" cli/pom.xml

sed -i "s|lucene>3.6.2<|lucene>3<|" pom.xml

%build
export MAVEN_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=384m"

# We don't have packaged all test dependencies (jboss-test for example)
%mvn_build -f -- -Dskip-enforce

%install
%mvn_install

install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}
install -d -m 755 $RPM_BUILD_ROOT%{homedir}
install -d -m 755 $RPM_BUILD_ROOT%{confdir}
install -d -m 755 $RPM_BUILD_ROOT%{rundir}
install -d -m 770 $RPM_BUILD_ROOT%{cachedir}/auth
install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir}
install -d -m 755 $RPM_BUILD_ROOT%{_unitdir}
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
install -d -m 755 $RPM_BUILD_ROOT%{_docdir}/%{name}

for mode in standalone domain; do
  install -d -m 755 $RPM_BUILD_ROOT%{homedir}/${mode}
  install -d -m 775 $RPM_BUILD_ROOT%{libdir}/${mode}/data
  install -d -m 755 $RPM_BUILD_ROOT%{cachedir}/${mode}
  install -d -m 775 $RPM_BUILD_ROOT%{logdir}/${mode}
done

install -d -m 775 $RPM_BUILD_ROOT%{libdir}/domain/servers

pushd build/target/wildfly-%{namedversion}
  # We don't need Windows files
  find bin/ -type f -name "*.bat" -delete
  find bin/ -type f -name "*.exe" -delete

  # Install systemd files
  install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service
  install -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{confdir}/%{name}.conf

  # We don't need legacy init scripts
  rm -rf bin/init.d
  # TMP - investigate
  rm -rf bin/client

  # Prepare directory for properties files
  install -d -m 755 docs/examples/properties

  # Copy logging.properties and mgmt-users.properties so we can reuse it later in wildfly-cp script
  cp standalone/configuration/logging.properties docs/examples/properties/
  cp standalone/configuration/mgmt-users.properties docs/examples/properties/
  # Lower a bit the permissions, so ordinary user can copy it. It's an example file!
  chmod 644 docs/examples/properties/mgmt-users.properties

  # standalone
  mv standalone/configuration $RPM_BUILD_ROOT%{confdir}/standalone
  mv standalone/deployments $RPM_BUILD_ROOT%{libdir}/standalone/deployments
  mv standalone/lib $RPM_BUILD_ROOT%{libdir}/standalone/lib
  mv standalone/tmp $RPM_BUILD_ROOT%{cachedir}/standalone/tmp

  # domain
  mv domain/configuration $RPM_BUILD_ROOT%{confdir}/domain
  mv domain/tmp $RPM_BUILD_ROOT%{cachedir}/domain/tmp

  # appclient
  mv appclient/configuration $RPM_BUILD_ROOT%{confdir}/appclient

  mv bin/jboss-cli.xml $RPM_BUILD_ROOT%{confdir}

  # docs
  # fix the encoding
  for f in $(find docs -name "*.dtd" -o -name "*.xsd"); do
    sed -i 's/\r$//' $f
  done

  mv docs/* $RPM_BUILD_ROOT%{_docdir}/%{name}

  mv copyright.txt README.txt LICENSE.txt welcome-content docs bin appclient modules $RPM_BUILD_ROOT%{homedir}

  # Install the launch script
  install -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{bindir}/launch.sh
popd

chmod 775 $RPM_BUILD_ROOT%{libdir}/standalone/deployments

pushd $RPM_BUILD_ROOT%{homedir}

  # Standalone
  ln -s %{confdir}/standalone standalone/configuration
  ln -s %{libdir}/standalone/deployments standalone/deployments
  ln -s %{libdir}/standalone/data standalone/data
  ln -s %{libdir}/standalone/lib standalone/lib
  ln -s %{logdir}/standalone standalone/log
  ln -s %{cachedir}/standalone/tmp standalone/tmp

  # Domain
  ln -s %{confdir}/domain domain/configuration
  ln -s %{libdir}/domain/data domain/data
  ln -s %{libdir}/domain/servers domain/servers
  ln -s %{logdir}/domain domain/log
  ln -s %{cachedir}/domain/tmp domain/tmp

  ln -s %{confdir}/appclient appclient

  # Auth dir
  ln -s %{cachedir}/auth auth

  xmvn-subst .

  # Still missing symlinks
  ln -s $(build-classpath jboss-modules/jboss-modules) jboss-modules.jar
  
  # Remove all jars from modules directory - we need to symlink them
  find . -type f -name "*.jar" -exec rm -rvf {} \;

  # Create symlinks to jars
  pushd modules/system/layers/base
    # Definition of submodules
    # If a submodule contains hyphen in the name, just skip it, e.g. domain-http => domainhttp
    multimodules="core-security mod_cluster clustering"
    modules_coresecurity="api implementation"
    modules_mod_cluster="web undertow"
    modules_clustering="api ejb-spi common jgroups infinispan registry server singleton web-api web-catalina web-spi web-infinispan web-undertow ejb-infinispan"

    for m in %{modules}; do
      ln -s %{_javadir}/%{name}/%{name}-${m}.jar org/jboss/as/${m}/main/%{name}-${m}-%{namedversion}.jar
    done

    for m in %{wildflymodules}; do
      ln -s %{_javadir}/%{name}/%{name}-${m}.jar org/wildfly/${m}/main/%{name}-${m}-%{namedversion}.jar
    done

    for m in ${multimodules}; do
      eval submodules=\$"modules_${m//-/}"

      for sm in $submodules; do
        for p in "org/wildfly/${m}/${sm/-//}/main" "org/jboss/as/${m}/${sm/-//}/main"; do
          if [ -d "${p}" ]; then
            ln -v -s %{_javadir}/%{name}/%{name}-${m}-${sm}.jar ${p}/%{name}-${m}-${sm}-%{namedversion}.jar
          fi
        done
      done
    done

    # WildFly extensions 
    for m in batch io undertow rts; do
      if [ -d "org/wildfly/extension/${m}/main/" ]; then
        ln -v -s %{_javadir}/%{name}/%{name}-${m}.jar org/wildfly/extension/${m}/main/%{name}-${m}-%{namedversion}.jar
      fi
    done

    # Special cases of wildfly jars
    ln -s %{_javadir}/%{name}/%{name}-mod_cluster-extension.jar org/wildfly/extension/mod_cluster/main/wildfly-mod_cluster-extension-%{namedversion}.jar
    ln -s %{_javadir}/%{name}/%{name}-security-manager.jar org/wildfly/extension/security/manager/main/wildfly-security-manager-%{namedversion}.jar
    ln -s %{_javadir}/%{name}/%{name}-webservices-server-integration.jar org/jboss/as/webservices/main/%{name}-webservices-server-integration-%{namedversion}.jar
    ln -s %{_javadir}/%{name}/%{name}-jsf-injection.jar org/jboss/as/jsf-injection/main/%{name}-jsf-injection-%{namedversion}.jar

    # Remove native libs that are shipped with the source distribution...
    rm -rf org/hornetq/main/lib/*

    # Prepare directories for native libs
    install -d -m 755 org/hornetq/main/lib/linux-{x86_64,i686,arm}

    # Jandex index for cxf-rt-ws-security
    ln -s $(build-classpath cxf/cxf-rt-ws-security-jandex) org/apache/cxf/impl/main/cxf-rt-ws-security-jandex.jar

    # Jandex indexes for resteasy
    for m in atom-provider crypto cdi jackson-provider jackson2-provider jaxb-provider jaxrs jettison-provider jsapi multipart-provider yaml-provider validator-provider-11; do
      ln -s $(build-classpath resteasy/resteasy-${m}-jandex) org/jboss/resteasy/resteasy-${m}/main/resteasy-${m}-jandex.jar
    done

    # RestEasy Spring integration special case
    install -d -m 755 org/jboss/resteasy/resteasy-spring/main/bundled/
    ln -s %{_javadir}/resteasy/resteasy-spring.jar org/jboss/resteasy/resteasy-spring/main/bundled/resteasy-spring.jar

    # Not caught by xmvn-subst
    ln -s $(build-classpath txw2) com/sun/xml/bind/main/txw2.jar
    ln -s $(build-classpath istack-commons-runtime) com/sun/xml/bind/main/istack-commons-runtime.jar
    ln -s $(build-classpath xml-commons-apis) org/apache/xerces/main/xml-commons-apis.jar
    ln -s $(build-classpath jbossws-cxf/jbossws-cxf-resources) org/jboss/as/webservices/main/jbossws-cxf-resources.jar

    # Incorrect symlinks made by xmvn
    # https://bugzilla.redhat.com/show_bug.cgi?id=1007687
    ln -sf $(build-classpath narayana/narayana-jts-jacorb) org/jboss/jts/main/narayana-jts-jacorb.jar
  popd

  # Makes sure we replaced all jars and no jar files are left
  missed_jars=`find -type f -name "*.jar"`

  if [ -n "$missed_jars" ]; then
    echo "Not all jars were replaced, failing the build!"
    echo $missed_jars
    exit 1
  fi
popd


pushd $RPM_BUILD_ROOT%{_bindir}
  # jboss-cli
  ln -s %{bindir}/jboss-cli.sh jboss-cli

  install -m 755 %{SOURCE1} %{name}-cp
popd

%pre
# Add wildfly user and group
getent group %{name} >/dev/null || groupadd -f -g %{wfuid} -r %{name}
if ! getent passwd %{name} >/dev/null ; then
  if ! getent passwd %{wfuid} >/dev/null ; then
    useradd -r -u %{wfuid} -g %{name} -d %{homedir} -s /sbin/nologin -c "The WildFly Application Server user" %{name}
  else
    useradd -r -g %{name} -d %{homedir} -s /sbin/nologin -c "The WildFly Application Server user" %{name}
  fi
fi
exit 0

%post
%systemd_post %{name}.service

# WildFly relies on some arch specific binary modules, let's link them.
# We don't want to do this at build time because it should be still noarch package.
arch=`uname -m`

if [ "${arch}" = "x86_64" ]; then
  libdir="/usr/lib64"
else
  libdir="/usr/lib"
fi

if [[ $arch == arm* ]]; then
  validarch="arm"
else
  validarch=${arch}
fi

pushd %{homedir}/modules/system/layers/base/org/hornetq/main/lib/linux-${validarch} > /dev/null
  ln -sf ${libdir}/libHornetQAIO.so libHornetQAIO.so
popd > /dev/null

%preun
%systemd_preun %{name}.service

# Let's clean up the arch-specific symlinks
for l in $(find %{homedir}/modules/system/layers/base/org/hornetq/main/lib -name "*.so"); do
  [ -L ${l} ] && rm -f ${l}
done

%postun
%systemd_postun_with_restart %{name}.service

%files -f .mfiles
%{homedir}/appclient
%dir %{bindir}
%{bindir}/*.conf
%{bindir}/*.sh
%{bindir}/*.properties
%{bindir}/.jbossclirc
%{_bindir}/*
%dir %{homedir}
%{homedir}/auth
%{homedir}/domain
%{homedir}/standalone
%{homedir}/modules
%{homedir}/welcome-content
%{homedir}/jboss-modules.jar
%attr(-,root,wildfly) %dir %{libdir}
%attr(-,root,wildfly) %{libdir}/standalone
%attr(-,root,wildfly) %{libdir}/domain
%attr(0775,root,wildfly) %dir %{rundir}
%attr(0775,root,wildfly) %dir %{cachedir}
%attr(0775,root,wildfly) %dir %{cachedir}/standalone
%attr(0775,root,wildfly) %dir %{cachedir}/standalone/tmp
%attr(0775,root,wildfly) %dir %{cachedir}/domain
%attr(0775,root,wildfly) %dir %{cachedir}/domain/tmp
%attr(0770,root,wildfly) %dir %{logdir}
%attr(0770,root,wildfly) %dir %{logdir}/standalone
%attr(0770,root,wildfly) %dir %{logdir}/domain
%attr(0775,root,wildfly) %dir %{confdir}
%attr(0775,root,wildfly) %dir %{confdir}/appclient
%attr(0775,root,wildfly) %dir %{confdir}/standalone
%attr(0775,root,wildfly) %dir %{confdir}/domain
%attr(0700,wildfly,wildfly) %dir %{cachedir}/auth
%attr(0600,wildfly,wildfly) %config(noreplace) %{confdir}/appclient/*.properties
%attr(0664,wildfly,wildfly) %config(noreplace) %{confdir}/appclient/*.xml
%attr(0600,wildfly,wildfly) %config(noreplace) %{confdir}/standalone/*.properties
%attr(0664,wildfly,wildfly) %config(noreplace) %{confdir}/standalone/*.xml
%attr(0600,wildfly,wildfly) %config(noreplace) %{confdir}/domain/*.properties
%attr(0664,wildfly,wildfly) %config(noreplace) %{confdir}/domain/*.xml
%config(noreplace) %{confdir}/%{name}.conf
%config(noreplace) %{confdir}/jboss-cli.xml
%{_unitdir}/%{name}.service
%doc %{homedir}/README.txt
%doc %{homedir}/copyright.txt
%doc %{homedir}/LICENSE.txt
%doc tools/maven/NOTICE
%doc tools/maven/LICENSE
%doc README.md
%dir %{_javadir}/%{name}

%files javadoc -f .mfiles-javadoc
%doc tools/maven/LICENSE

%files doc
%{_docdir}/%{name}
%doc tools/maven/LICENSE

%changelog
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 8.1.0-0.3.CR1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Thu Apr 24 2014 Marek Goldmann <mgoldman@redhat.com> - 8.1.0-0.2.CR1
- Modules adjustments for 8.1.0.CR1

* Wed Apr 23 2014 Marek Goldmann <mgoldman@redhat.com> - 8.1.0-0.1.CR1
- Upstream release 8.1.0.CR1

* Fri Apr 18 2014 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-2
- Use lucene3 compat package if available

* Thu Feb 13 2014 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-1
- Upstream release 8.0.0.Final

* Sat Feb 08 2014 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.17.CR1
- Fixed missing wildfly-clustering-ejb-spi.jar link, RHBZ#1062877

* Wed Jan 22 2014 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.16.CR1
- Upstream release 8.0.0.CR1

* Thu Dec 12 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.15.20131212gitd637807
- Release based on commit d6378078ea61fc4eea7db208a7624fa2f27da2f2

* Tue Nov 12 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.14.Beta1
- Hibernate 4.3 support added
- Hibernate 4.1 support dropped

* Wed Oct 30 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.13.Beta1
- Removed jline BR, RHBZ#1023006

* Mon Oct 07 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.12.Beta1
- Upstream release 8.0.0.Beta1
- wildfly: Upgrade to 8.0.0.Beta1, RHBZ#1016622

* Thu Oct 03 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.11.Alpha4
- Rebased patches
- Added some missing R/BR ater xmvn update
- Added jsf-injection module

* Thu Sep 19 2013 Michal Srb <msrb@redhat.com> - 8.0.0-0.10.Alpha4
- Fix jboss-modules symlink (Resolves: rhbz#1009769)

* Tue Sep 17 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.9.Alpha4
- wildfly: incorrect symlink, RHBZ#1007687
- Missing .jar files in the org.jboss.jts module, RHBZ#1008605
- Missing javax.activation.api module, RHBZ#1008612
- Missing javax.enterprise.concurrent.api module, RHBZ#1008614
- Broken link to jandex.jar in modules directory, RHBZ#1008578

* Mon Sep 16 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.8.Alpha4
- Upstream release 8.0.0.Alpha4
- Updated Obsoletes
- Removed the standalone-web.xml config, since we are now able to run the default standalone.xml

* Wed Sep 11 2013 Michal Srb <msrb@redhat.com> - 8.0.0-0.7.Alpha3
- Fix a typo in systemd service file (Resolves: rhbz#1006666)

* Mon Sep 09 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.6.Alpha3
- Fixed licensing
- Fixed directory ownership

* Wed Sep 04 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.5.Alpha3
- Removed jbossweb-native BR
- Added a check if all jars were replaced by symlinks
- Fixed EOL in the docs

* Wed Aug 14 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.4.Alpha3
- Use the wildfly user instead of jboss-as
- Created doc subpackage
- Fixed the way we remove the arch specific symlinks while uninstalling the package
- Fixed some config file locations

* Tue Aug 13 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.3.Alpha3
- Using xmvn-subst instead of manual symlinks where possible

* Fri Aug 09 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.2.Alpha3
- Added provides and obsoletes for jboss-as
- Fixed requires
- Fixed symlinks
- Cleaned up the spec file

* Thu Aug 08 2013 Marek Goldmann <mgoldman@redhat.com> - 8.0.0-0.1.Alpha3
- Package rename to wildfly
- Upstream release 8.0.0.Alpha3
- New guidelines (xmvn)

* Thu May 23 2013 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-19
- Fix the jar symlinks
- Make it possible to launch the domain mode using systemd service
- Cleanup

* Wed May 22 2013 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-18
- Fixed BR/R
- Preparations for domain mode enablement

* Sat Mar 23 2013 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-17
- Fixed apache-scout jar name

* Tue Feb 19 2013 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-16
- Remove wagon extension

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.1.1-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Wed Feb 06 2013 Java SIG <java-devel@lists.fedoraproject.org> - 7.1.1-14
- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild
- Replace maven BuildRequires with maven-local

* Tue Dec 04 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-13
- Rebasing patches

* Wed Nov 28 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-12
- Fixing many missing symlinks
- Make standalone.xml the default configuration instead standalone-web.xml
- Add an easy way to override the default bind address for systemd service

* Tue Nov 20 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-11
- Add webservices support based on CXF 2.6.3
- The jackson modules don't have symlinks to .jar files, RHBZ#879008
- The jettison modules doesn't have symlinks to .jar, RHBZ#879009
- The mime4j module doesn't have symlinks to .jar files, RHBZ#879014
- The snakeyaml modules doesn't have symlinks to .jar, RHBZ#879017
- The com.sun.xml.bind needs to include the istack-commons-runtime.jar file, RHBZ#879020

* Tue Nov 06 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-10
- Added Hibernate 4 (default persistence provider) support
- Preparations for webservice-related modules from CXF
- Use static GID, RHBZ#873897

* Tue Sep 18 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-9
- Introduce new systemd-rpm macros in jboss-as spec file, RHBZ#856680
- Added org.jboss.as.xts module

* Thu Aug 30 2012 Marek Goldmann <mgoldman@redhat.com> - 7.1.1-8
- Added org.jboss.as.jpa.jacorb module

* Thu Aug 23 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-7
- Added org.jboss.as.jpa.openjpa module
- Added org.jboss.as.jpa.hibernate3 module
- Added jtype dependency to hibernate-validator to fix NoClassDefFoundError exception
- Regenerated patches with git format-patch --no-numbered --no-signature
- Added ExampleDS to the standalone-web.xml config

* Wed Aug 01 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-6
- /usr/bin conflict between jboss-as-7.1.1-4 and filesystem-3.1-1, RHBZ#839419
- Missing symlinks RHBZ#842997, RHBZ#842996
- Fixed BR
- Fixed empty version requirement for org.eclipse.jdt:core

* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.1.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

* Wed Jul 04 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-4
- jboss-as-cp script is missing argument placeholder for c optarg, RHBZ#827571
- Create a startup script when creating a new user instance (jboss-as-cp), RHBZ#827588
- The user instance create script (jboss-as-cp) should allow a port offset to be specified, RHBZ#827589
- Added org.jboss.as.modcluster module
- Added org.jboss.as.jsr77 module
- Added org.jboss.as.arquillian module
- Added org.jboss.as.osgi module
- Added org.jboss.as.configadmin module
- Added org.jboss.as.spec-api module
- Add ExampleDS based on H2 database, RHBZ#81252

* Fri May 11 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-3
- Changed the way we apply patches at build time
- Added org.jboss.as.sar module
- Added org.jboss.as.host-controller module
- Added org.jboss.as.jaxr module
- Added org.jboss.as.messaging module

* Wed May 02 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-2
- Link to native  modules in post section to avoid arch-specific Requires

* Fri Apr 20 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-1
- Upstream release 7.1.1.Final
- Added jboss-as-cmp module
- Added jboss-as-mail module
- Added jboss-as-jaxrs module
- Added jboss-as-pojo module
- Spec file cleanup from versions

* Mon Apr 16 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.0-3
- Simplified systemd files
- Added jboss-as-cli module
- Make it possible to run as different user in different direcotry by changing JBOSS_BASE_DIR
- Fixed issues with using add-user.sh script
- Changed validation API jar to bean-validation
- Added jboss-as-cp script to be able to use JBoss AS from different dir as different user
- Removed activation AS7 module - it's already in JDK
- Make it possible to add a user also when JBoss AS is run from different directory

* Wed Apr 04 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.0-2
- Fixed rpmlint issues
- Fixed license
- Added LICENSE.txt file to javadoc subpackage
- Use standalone-web.xml config from docs as default

* Mon Apr 02 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.0-1
- Initial packaging