Blob Blame History Raw
%global namedreltag .Final
%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 jbuid 185

# Enabled modules:
%global modules cli cmp connector controller-client controller deployment-repository deployment-scanner domain-management ee ejb3 embedded host-controller jaxr jaxrs jmx logging management-client-content mail naming network platform-mbean pojo process-controller protocol remoting sar security server threads transactions web weld

# Additional modules enabled, but not listed above because of different structure:
# clustering

Name:             jboss-as
Version:          7.1.1
Release:          4%{?dist}
Summary:          JBoss Application Server
Group:            System Environment/Daemons
License:          LGPLv2 and ASL 2.0
URL:              http://www.jboss.org/jbossas

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

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

Patch0:           0001-AS7-3724-DO-NOT-UPSTREAM-an-ugly-patch-to-remove-IIO.patch
Patch1:           0002-Disable-checkstyle.patch
Patch2:           0003-Fix-initd-script.patch
Patch3:           0004-Build-additional-modules.patch
Patch4:           0005-Adding-javax.transaction-to-the-minimal-build.patch
Patch5:           0006-adding-javax.validation-to-build.xml.patch
Patch6:           0007-adding-org.jboss.metadata-to-minimal-build.patch
Patch7:           0008-adding-org.jboss.ejb3-module-to-minimal-build.patch
Patch8:           0009-adding-org.jboss.as.logging.patch
Patch9:           0010-adding-org.hibernate.validator.patch
Patch10:          0011-adding-org.jboss.remote-naming-to-minimal-build.patch
Patch11:          0012-Enable-org.jboss.as.transactions-module.patch
Patch12:          0013-Removing-use-of-HornetqJournalEnvironmentBean-in-Arj.patch
Patch13:          0014-adding-org.jboss.jboss-transaction-spi-to-minimal-bu.patch
Patch14:          0015-adding-jta-modules-to-minimal-build.patch
Patch15:          0016-adding-org.omg.api-to-minimal-build.patch
Patch16:          0017-Enable-org.jboss.as.security-module.patch
Patch17:          0018-Enable-part-of-org.jboss.as.clustering-module-infini.patch
Patch18:          0019-Add-jgroups-module.patch
Patch19:          0020-Add-infinispan-modules.patch
Patch20:          0021-Added-jboss-jacc-api-module.patch
Patch21:          0022-Added-javax.servlet.api-module.patch
Patch22:          0023-Added-org.jboss.security.negotiation-module.patch
Patch23:          0024-Added-org.picketbox-module.patch
Patch24:          0025-Added-sun.jdk-module.patch
Patch25:          0026-Added-jboss-as-connector-AS7-module.patch
Patch26:          0027-Added-jboss-as-web-jboss-as-clustering-api-jboss-as-.patch
Patch27:          0028-Added-net.jcip-org.jboss.ironjacamar-javax.resource..patch
Patch28:          0029-Make-some-modules-optional.patch
Patch29:          0030-Added-jboss-as-ejb3-jboss-as-weld-jboss-as-jpa-modul.patch
Patch30:          0031-Added-additional-modules-required-on-runtime.patch
Patch31:          0032-Enabled-rest-of-clustering-submodules.patch
Patch32:          0033-Fixed-remoting-jmx-gid-reverting-rmi-changes-adding-.patch
Patch33:          0034-Added-standalone-web.xml-example-configuration.-Use-.patch
Patch34:          0035-Add-systemd-files-re-arrange-directory-with-init-scr.patch
Patch35:          0036-Added-jboss-as-cli-module.patch
Patch36:          0037-Fix-JBOSS_HOME-when-jboss-cli.sh-is-executed-through.patch
Patch37:          0038-AS7-3800-JBOSS_BASE_DIR-is-checked-in-standalone.sh-.patch
Patch38:          0039-Added-domain-add-user-module.patch
Patch39:          0040-Remove-activation-module.patch
Patch40:          0041-Use-properties-in-add-user-AS7-module.patch
Patch41:          0042-added-support-for-overriding-the-user-and-roles-prop.patch
Patch42:          0043-AS7-4536-add-user.sh-mangles-permissions-of-mgmt-use.patch
Patch43:          0044-Removing-some-banned-deps-as-in-Fedora-those-are-jus.patch
Patch44:          0045-Add-org.jboss.as.config-assembly-module.patch
Patch45:          0046-Added-org.jboss.as.cmp-module.patch
Patch46:          0047-AS7-4286-Fix-JavaCC-grammars-for-version-5.patch
Patch47:          0048-Added-org.jboss.as.mail-module.patch
Patch48:          0049-Added-org.jboss.as.jaxrs-module.patch
Patch49:          0050-Added-org.jboss.as.pojo-module.patch
Patch50:          0051-Loose-banned-deps-on-javax.xml.stream-stax-api.patch
Patch51:          0052-Remove-jbossweb-native-dependency.-We-ll-have-unpack.patch
Patch52:          0053-Add-dependencies-to-minimal-for-missing-modules-to-r.patch
Patch53:          0054-Added-org.jboss.as.sar-module.patch
Patch54:          0055-Added-org.jboss.as.host-controller-module.patch
Patch55:          0056-Added-org.jboss.as.webservices.server.integration-an.patch
Patch56:          0057-Enable-jboss-as-ejb-client-bom.patch
Patch57:          0058-Enabled-org.jboss.spec.javax.ws.rs-module.patch
Patch58:          0059-Added-org.jboss.as.jaxr-module.patch
Patch59:          0060-Added-org.jboss.as.messaging-module.patch
Patch60:          0061-Runtime-dependencies.patch

BuildArch:        noarch

# Please keep alphabetically
BuildRequires:    ant-apache-bsf
BuildRequires:    apache-commons-collections
BuildRequires:    apache-commons-configuration
BuildRequires:    apache-commons-lang
BuildRequires:    apache-commons-logging
BuildRequires:    apache-james-project
BuildRequires:    apache-juddi
BuildRequires:    apache-scout
BuildRequires:    atinject
BuildRequires:    bean-validation-api
BuildRequires:    bsf
BuildRequires:    cal10n
BuildRequires:    cdi-api
BuildRequires:    dom4j
# TODO: ecj dependency tree is big and ugly...
BuildRequires:    ecj
BuildRequires:    guava
BuildRequires:    h2
BuildRequires:    hibernate-jpa-2.0-api
BuildRequires:    hibernate-validator
BuildRequires:    hornetq
BuildRequires:    git
BuildRequires:    infinispan
BuildRequires:    ironjacamar
BuildRequires:    jandex
BuildRequires:    java-devel >= 1:1.7.0
BuildRequires:    javamail
BuildRequires:    javassist
BuildRequires:    jgroups
BuildRequires:    jboss-annotations-1.1-api
BuildRequires:    jboss-classfilewriter
BuildRequires:    jboss-common-core
BuildRequires:    jboss-connector-1.6-api
BuildRequires:    jboss-dmr
BuildRequires:    jboss-ejb-3.1-api
BuildRequires:    jboss-ejb3-ext-api
BuildRequires:    jboss-ejb-client
BuildRequires:    jboss-el-2.2-api
BuildRequires:    jboss-httpserver
BuildRequires:    jboss-iiop-client
BuildRequires:    jboss-invocation
BuildRequires:    jboss-interceptor
BuildRequires:    jboss-interceptors-1.1-api
BuildRequires:    jboss-jacc-1.4-api
BuildRequires:    jboss-jad-1.2-api
BuildRequires:    jboss-jaxb-2.2-api
BuildRequires:    jboss-jaxr-1.0-api
BuildRequires:    jboss-jaxrpc-1.1-api
BuildRequires:    jboss-jaxrs-1.1-api
BuildRequires:    jboss-jaspi-1.0-api
BuildRequires:    jboss-jms-1.1-api
BuildRequires:    jboss-jts
BuildRequires:    jboss-jsf-2.1-api
BuildRequires:    jboss-jsp-2.2-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
BuildRequires:    jboss-modules
BuildRequires:    jboss-msc
BuildRequires:    jboss-negotiation
BuildRequires:    jboss-remoting
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-servlet-3.0-api
BuildRequires:    jboss-stdio
BuildRequires:    jboss-specs-parent
BuildRequires:    jboss-threads
BuildRequires:    jboss-transaction-1.1-api
BuildRequires:    jboss-transaction-spi
BuildRequires:    jboss-web
BuildRequires:    jboss-web-native
BuildRequires:    jboss-vfs
BuildRequires:    jbossws-api
BuildRequires:    jcip-annotations
BuildRequires:    jline
BuildRequires:    jul-to-slf4j-stub
BuildRequires:    joda-time
BuildRequires:    jpackage-utils
BuildRequires:    maven
BuildRequires:    maven-jar-plugin
BuildRequires:    maven-checkstyle-plugin
BuildRequires:    maven-resources-plugin
BuildRequires:    maven-surefire-plugin
BuildRequires:    maven-dependency-plugin
BuildRequires:    netty
BuildRequires:    javacc-maven-plugin
BuildRequires:    mojarra
BuildRequires:    picketbox
BuildRequires:    picketbox-commons
BuildRequires:    resteasy >= 2.3.2-7
BuildRequires:    rhq-plugin-annotations
BuildRequires:    slf4j
BuildRequires:    slf4j-jboss-logmanager
BuildRequires:    staxmapper
BuildRequires:    systemd-units
BuildRequires:    weld-api
BuildRequires:    weld-core
BuildRequires:    weld-parent
BuildRequires:    xalan-j2
BuildRequires:    xerces-j2
BuildRequires:    xnio

Requires:         atinject
Requires:         apache-commons-collections
Requires:         apache-commons-configuration
Requires:         apache-commons-lang
Requires:         apache-commons-logging
Requires:         apache-juddi
Requires:         apache-scout
Requires:         apr
Requires:         bean-validation-api
Requires:         cal10n
Requires:         cdi-api
Requires:         dom4j
# TODO: ecj dependency tree is big and ugly...
Requires:         ecj
Requires:         guava
Requires:         h2
Requires:         hibernate-jpa-2.0-api
Requires:         hibernate-validator
Requires:         hornetq
Requires:         infinispan
Requires:         ironjacamar
Requires:         jandex
Requires:         java >= 1:1.7.0
Requires:         javamail
Requires:         javassist
Requires:         jboss-annotations-1.1-api
Requires:         jboss-classfilewriter
Requires:         jboss-common-core
Requires:         jboss-connector-1.6-api
Requires:         jboss-dmr
Requires:         jboss-ejb-3.1-api
Requires:         jboss-ejb3-ext-api
Requires:         jboss-ejb-client
Requires:         jboss-el-2.2-api
Requires:         jboss-httpserver
Requires:         jboss-iiop-client
Requires:         jboss-interceptor
Requires:         jboss-interceptors-1.1-api
Requires:         jboss-invocation
Requires:         jboss-jacc-1.4-api
Requires:         jboss-jad-1.2-api
Requires:         jboss-jaxb-2.2-api
Requires:         jboss-jaxr-1.0-api
Requires:         jboss-jaxrpc-1.1-api
Requires:         jboss-jaxrs-1.1-api
Requires:         jboss-jaspi-1.0-api
Requires:         jboss-jms-1.1-api
Requires:         jboss-jsf-2.1-api
Requires:         jboss-jsp-2.2-api
Requires:         jboss-jstl-1.2-api
Requires:         jboss-jts
Requires:         jboss-logging
Requires:         jboss-logging-tools
Requires:         jboss-logmanager
Requires:         jboss-logmanager-log4j
Requires:         jboss-marshalling
Requires:         jboss-metadata
Requires:         jboss-modules
Requires:         jboss-msc
Requires:         jboss-negotiation
Requires:         jboss-remoting
Requires:         jboss-remoting-jmx
Requires:         jboss-remote-naming
Requires:         jboss-rmi-1.0-api
Requires:         jboss-sasl
Requires:         jboss-saaj-1.3-api
Requires:         jboss-servlet-3.0-api
Requires:         jboss-stdio
Requires:         jboss-threads
Requires:         jboss-transaction-1.1-api
Requires:         jboss-transaction-spi
Requires:         jboss-web
Requires:         jboss-web-native
Requires:         jboss-vfs
Requires:         jbossws-api
Requires:         jcip-annotations
Requires:         jgroups
Requires:         jline
Requires:         jul-to-slf4j-stub
Requires:         joda-time
Requires:         jpackage-utils
Requires:         mojarra
Requires:         netty
Requires:         openssl
Requires:         picketbox
Requires:         picketbox-commons
Requires:         resteasy >= 2.3.2-7
Requires:         rhq-plugin-annotations
Requires:         slf4j
Requires:         slf4j-jboss-logmanager
Requires:         staxmapper
Requires:         weld-api
Requires:         weld-core
Requires:         xalan-j2
Requires:         xerces-j2
Requires:         xnio
Requires(pre):    shadow-utils

%description
JBoss Application Server 7 is the latest release in a series of JBoss
Application Server offerings. JBoss Application Server 7, 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
Requires:         jpackage-utils

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

%prep
%setup -q -n jboss-as-%{namedversion}

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

git am %{patches}

%build
export MAVEN_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"

# We don't have packaged all test dependencies (jboss-test for example)
mvn-rpmbuild -Dmaven.test.skip=true -Dminimalistic -e install javadoc:aggregate

%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}

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

# build-config is not installed in the resulting package, but required to build it
# ee-deployment is a special case, it should be a submodule of ee, but it isn't...
for m in %{modules} build-config ee-deployment; do
  # JAR
  cp -a ${m}/target/jboss-as-${m}-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-${m}.jar
  # POM
  cp -a ${m}/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-${m}.pom
  # DEPMAP
  %add_maven_depmap JPP.%{name}-%{name}-${m}.pom %{name}/%{name}-${m}.jar
done

# Definition of submodules
multimodules="domain-http clustering jpa"
# If a submodule contains hyphen in the name, just skip it, e.g. domain-http => domainhttp
modules_clustering="api common impl jgroups infinispan registry service web-spi web-infinispan ejb3-infinispan"
modules_jpa="util spi"
modules_domainhttp="interface error-context"

for m in ${multimodules}; do

  eval submodules=\$"modules_${m//-/}"

  for sm in $submodules; do
    # JAR
    cp -a ${m}/${sm}/target/jboss-as-${m}-${sm}-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-${m}-${sm}.jar
    # POM
    cp -a ${m}/${sm}/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-${m}-${sm}.pom
    # DEPMAP
    %add_maven_depmap JPP.%{name}-%{name}-${m}-${sm}.pom %{name}/%{name}-${m}-${sm}.jar
  done
done

# Exceptions START

# JAR
cp -a jpa/core/target/jboss-as-jpa-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-jpa.jar
# POM
cp -a jpa/core/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-jpa.pom
# DEPMAP
%add_maven_depmap JPP.%{name}-%{name}-jpa.pom %{name}/%{name}-jpa.jar

# Exceptions END

# Parent POM
cp -a pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-parent.pom

# Depmap fo parent POM
%add_maven_depmap JPP.%{name}-%{name}-parent.pom

# Apidocs
cp -a target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}

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

  # Install systemd files
  mv bin/initscripts/systemd/jboss-as.conf $RPM_BUILD_ROOT%{confdir}/%{name}.conf
  mv bin/initscripts/systemd/jboss-as.service $RPM_BUILD_ROOT%{_unitdir}/%{name}.service

  # We don't need legacy init scripts
  rm -rf bin/initscripts

  # 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 jboss-as-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

  # Install standalone-web.xml
  cp docs/examples/configs/standalone-web.xml $RPM_BUILD_ROOT%{confdir}/standalone/standalone-web.xml

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

  # Remove all jars from modules directory - we need to symlink them
  # TODO temporary with verbose, use -delete afterwards
  find . -type f -name "*.jar" -exec rm -rvf {} \;

  # TMP - investigate
  rm -rf bin/client

  mv copyright.txt README.txt LICENSE.txt welcome-content docs bin appclient modules $RPM_BUILD_ROOT%{homedir}
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 %{logdir}/domain domain/log
  ln -s %{cachedir}/domain/tmp domain/tmp

  # Symlink jboss-modules
  ln -s $(build-classpath jboss-modules) jboss-modules.jar
  
  # auth dir
  ln -s %{cachedir}/auth auth
  
  # Create symlinks to jars
  pushd modules
    # JBoss AS modules
    # Symlinks all main AS7 modules + some addtiional modules that have different naming scheme
    for m in %{modules} domain-http-error-context domain-http-interface; do
      ln -s %{_javadir}/jboss-as/jboss-as-${m}.jar org/jboss/as/${m}/main/jboss-as-${m}-%{namedversion}.jar
    done

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

      for sm in $submodules; do
        if [ -d "org/jboss/as/${m}/${sm}/main/" ]; then
          ln -s %{_javadir}/jboss-as/jboss-as-${m}-${sm}.jar org/jboss/as/${m}/${sm}/main/jboss-as-${m}-${sm}-%{namedversion}.jar
        else
          echo "SKIPPING symlinking 'jboss-as-${m}-${sm}.jar'. This may be a special case handled elsewhere."
        fi
      done
    done

    # And don't forget this module which should be a submodule...
    ln -s %{_javadir}/jboss-as/jboss-as-ee-deployment.jar org/jboss/as/ee/deployment/main/jboss-as-ee-deployment-%{namedversion}.jar
    ln -s %{_javadir}/jboss-as/jboss-as-clustering-web-spi.jar org/jboss/as/clustering/web/spi/main/jboss-as-clustering-web-spi-%{namedversion}.jar
    ln -s %{_javadir}/jboss-as/jboss-as-clustering-web-infinispan.jar org/jboss/as/clustering/web/infinispan/main/jboss-as-clustering-web-infinispan-%{namedversion}.jar
    ln -s %{_javadir}/jboss-as/jboss-as-clustering-ejb3-infinispan.jar org/jboss/as/clustering/ejb3/infinispan/main/jboss-as-clustering-ejb3-infinispan-%{namedversion}.jar

    # And some other expcetions...
    ln -s %{_javadir}/jboss-as/jboss-as-jpa.jar org/jboss/as/jpa/main/jboss-as-jpa-%{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/jboss/as/web/main/lib/linux-{x86_64,i686}
    install -d -m 755 org/hornetq/main/lib/linux-{x86_64,i686}

    # Please keep alphabetic by jar name

    for m in collections configuration lang logging; do
      ln -s $(build-classpath apache-commons-${m}) org/apache/commons/${m}/main/commons-${m}.jar
    done

    ln -s $(build-classpath apache-juddi/juddi-client) org/apache/juddi/juddi-client/main/juddi-client.jar
    ln -s $(build-classpath apache-juddi/uddi-ws) org/apache/juddi/uddi-ws/main/uddi-ws.jar
    ln -s $(build-classpath apache-scout) org/apache/juddi/scout/main/scout.jar
    ln -s $(build-classpath atinject) javax/inject/api/main/atinject.jar
    ln -s $(build-classpath cal10n/cal10n-api) ch/qos/cal10n/main/cal10n-api.jar
    ln -s $(build-classpath cdi-api) javax/enterprise/api/main/cdi-api.jar
    ln -s $(build-classpath ecj) org/jboss/as/web/main/ecj.jar
    ln -s $(build-classpath guava) com/google/guava/main/guava.jar
    # TODO this is an UGLY hack, think about removing it at some point!
    ln -s $(build-classpath bean-validation-api) javax/validation/api/main/geronimo-validation.jar
    ln -s $(build-classpath hibernate-validator) org/hibernate/validator/main/hibernate-validator.jar
    ln -s $(build-classpath hibernate-jpa-2.0-api) javax/persistence/api/main/hibernate-jpa-2.0-api.jar

    ln -s $(build-classpath infinispan/infinispan-cachestore-jdbc) org/infinispan/cachestore/jdbc/main/infinispan-cachestore-jdbc.jar
    ln -s $(build-classpath infinispan/infinispan-cachestore-remote) org/infinispan/cachestore/remote/main/infinispan-cachestore-remote.jar
    ln -s $(build-classpath infinispan/infinispan-client-hotrod) org/infinispan/client/hotrod/main/infinispan-client-hotrod.jar
    ln -s $(build-classpath infinispan/infinispan-core) org/infinispan/main/infinispan-core.jar

    ln -s $(build-classpath ironjacamar/ironjacamar-common-api) org/jboss/ironjacamar/api/main/ironjacamar-common-api.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-common-spi) org/jboss/ironjacamar/api/main/ironjacamar-common-spi.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-core-api) org/jboss/ironjacamar/api/main/ironjacamar-core-api.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-common-impl) org/jboss/ironjacamar/impl/main/ironjacamar-common-impl.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-core-impl) org/jboss/ironjacamar/impl/main/ironjacamar-core-impl.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-deployers-common) org/jboss/ironjacamar/impl/main/ironjacamar-deployers-common.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-validator) org/jboss/ironjacamar/impl/main/ironjacamar-validator.jar
    ln -s $(build-classpath ironjacamar/ironjacamar-jdbc) org/jboss/ironjacamar/jdbcadapters/main/ironjacamar-jdbc.jar

    ln -s $(build-classpath javamail/mail) javax/mail/api/main/mail.jar
    ln -s $(build-classpath javassist) org/javassist/main/javassist.jar
    ln -s $(build-classpath jcip-annotations) net/jcip/main/jcip-annotations.jar
    ln -s $(build-classpath jandex) org/jboss/jandex/main/jandex.jar
    ln -s $(build-classpath jboss-annotations-1.1-api) javax/annotation/api/main/jboss-annotations-1.1-api.jar
    ln -s $(build-classpath jboss-classfilewriter) org/jboss/classfilewriter/main/jboss-classfilewriter.jar
    ln -s $(build-classpath jboss-common-core) org/jboss/common-core/main/jboss-common-core.jar
    ln -s $(build-classpath jboss-connector-1.6-api) javax/resource/api/main/jboss-connector-1.6-api.jar
    ln -s $(build-classpath jboss-dmr) org/jboss/dmr/main/jboss-dmr.jar
    ln -s $(build-classpath jboss-ejb-3.1-api) javax/ejb/api/main/jboss-ejb-3.1-api.jar
    ln -s $(build-classpath jboss-ejb3-ext-api) org/jboss/ejb3/main/jboss-ejb3-ext-api.jar
    ln -s $(build-classpath jboss-ejb-client) org/jboss/ejb-client/main/jboss-ejb-client.jar
    ln -s $(build-classpath jboss-el-2.2-api) javax/el/api/main/jboss-el-2.2-api.jar
    ln -s $(build-classpath jboss-httpserver) org/jboss/com/sun/httpserver/main/jboss-httpserver.jar
    ln -s $(build-classpath jboss-iiop-client) org/jboss/iiop-client/main/jboss-iiop-client.jar
    ln -s $(build-classpath jboss-interceptor-core) org/jboss/interceptor/main/jboss-interceptor-core.jar
    ln -s $(build-classpath jboss-interceptor-spi) org/jboss/interceptor/spi/main/jboss-interceptor-spi.jar
    ln -s $(build-classpath jboss-interceptors-1.1-api) javax/interceptor/api/main/jboss-interceptors-1.1-api.jar
    ln -s $(build-classpath jboss-invocation) org/jboss/invocation/main/jboss-invocation.jar
    ln -s $(build-classpath jboss-jacc-1.4-api) javax/security/jacc/api/main/jboss-jacc-1.4-api.jar
    ln -s $(build-classpath jboss-jad-1.2-api) javax/enterprise/deploy/api/main/jboss-jad-1.2-api.jar
    ln -s $(build-classpath jboss-jaxb-2.2-api) javax/xml/bind/api/main/jboss-jaxb-2.2-api.jar
    ln -s $(build-classpath jboss-jaxrpc-1.1-api) javax/xml/rpc/api/main/jboss-jaxrpc-1.1-api.jar
    ln -s $(build-classpath jboss-jaxrs-1.1-api) javax/ws/rs/api/main/jboss-jaxrs-1.1-api.jar
    ln -s $(build-classpath jboss-jaspi-1.0-api) javax/security/auth/message/api/main/jboss-jaspi-1.0-api.jar
    ln -s $(build-classpath jboss-jms-1.1-api) javax/jms/api/main/jboss-jms-1.1-api.jar
    ln -s $(build-classpath jboss-jsf-2.1-api) javax/faces/api/main/jboss-jsf-2.1-api.jar
    ln -s $(build-classpath jboss-jsp-2.2-api) javax/servlet/jsp/api/main/jboss-jsp-2.2-api.jar
    ln -s $(build-classpath jboss-jstl-1.2-api) javax/servlet/jstl/api/main/jboss-jstl-1.2-api.jar
    ln -s $(build-classpath jboss-jts/jbossjta) org/jboss/jts/main/jbossjta.jar
    ln -s $(build-classpath jboss-jts/jbossjta-integration) org/jboss/jts/integration/main/jbossjta-integration.jar
    ln -s $(build-classpath jboss-logging) org/jboss/logging/main/jboss-logging.jar
    ln -s $(build-classpath jboss-logmanager) org/jboss/logmanager/main/jboss-logmanager.jar
    ln -s $(build-classpath jboss-logmanager-log4j) org/jboss/logmanager/log4j/main/jboss-logmanager-log4j.jar
    ln -s $(build-classpath jboss-marshalling) org/jboss/marshalling/main/jboss-marshalling.jar
    ln -s $(build-classpath jboss-marshalling-river) org/jboss/marshalling/river/main/jboss-marshalling-river.jar
    ln -s $(build-classpath jboss-metadata/jboss-metadata-appclient) org/jboss/metadata/main/jboss-metadata-appclient.jar
    ln -s $(build-classpath jboss-metadata/jboss-metadata-common) org/jboss/metadata/main/jboss-metadata-common.jar
    ln -s $(build-classpath jboss-metadata/jboss-metadata-ear) org/jboss/metadata/main/jboss-metadata-ear.jar
    ln -s $(build-classpath jboss-metadata/jboss-metadata-ejb) org/jboss/metadata/main/jboss-metadata-ejb.jar
    ln -s $(build-classpath jboss-metadata/jboss-metadata-web) org/jboss/metadata/main/jboss-metadata-web.jar
    ln -s $(build-classpath jboss-msc) org/jboss/msc/main/jboss-msc.jar
    ln -s $(build-classpath jboss-remoting) org/jboss/remoting3/main/jboss-remoting.jar
    ln -s $(build-classpath jboss-remote-naming) org/jboss/remote-naming/main/jboss-remote-naming.jar
    ln -s $(build-classpath jboss-remoting-jmx) org/jboss/remoting3/remoting-jmx/main/jboss-remoting-jmx.jar
    ln -s $(build-classpath jboss-rmi-1.0-api) javax/rmi/api/main/jboss-rmi-1.0-api.jar
    ln -s $(build-classpath jboss-saaj-1.3-api) javax/xml/soap/api/main/jboss-saaj-1.3-api.jar
    ln -s $(build-classpath jboss-sasl) org/jboss/sasl/main/jboss-sasl.jar

    ln -s $(build-classpath jboss-negotiation/jboss-negotiation-common) org/jboss/security/negotiation/main/jboss-negotiation-common.jar
    ln -s $(build-classpath jboss-negotiation/jboss-negotiation-extras) org/jboss/security/negotiation/main/jboss-negotiation-extras.jar
    ln -s $(build-classpath jboss-negotiation/jboss-negotiation-net) org/jboss/security/negotiation/main/jboss-negotiation-net.jar
    ln -s $(build-classpath jboss-negotiation/jboss-negotiation-ntlm) org/jboss/security/negotiation/main/jboss-negotiation-ntlm.jar
    ln -s $(build-classpath jboss-negotiation/jboss-negotiation-spnego) org/jboss/security/negotiation/main/jboss-negotiation-spnego.jar

    ln -s $(build-classpath jboss-servlet-3.0-api) javax/servlet/api/main/jboss-servlet-3.0-api.jar
    ln -s $(build-classpath jboss-stdio) org/jboss/stdio/main/jboss-stdio.jar
    ln -s $(build-classpath jboss-threads) org/jboss/threads/main/jboss-threads.jar
    ln -s $(build-classpath jboss-transaction-1.1-api) ./javax/transaction/api/main/jboss-transaction-1.1-api.jar
    ln -s $(build-classpath jboss-transaction-spi) org/jboss/jboss-transaction-spi/main/jboss-transaction-spi.jar
    ln -s $(build-classpath jboss-vfs) org/jboss/vfs/main/jboss-vfs.jar
    ln -s $(build-classpath jboss-web) org/jboss/as/web/main/jboss-web.jar
    ln -s $(build-classpath jgroups) org/jgroups/main/jgroups.jar
    ln -s $(build-classpath jline) jline/main/jline.jar
    ln -s $(build-classpath jul-to-slf4j-stub) org/jboss/logging/jul-to-slf4j-stub/main/jul-to-slf4j-stub.jar
    ln -s $(build-classpath joda-time) org/joda/time/main/joda-time.jar
    ln -s $(build-classpath log4j) org/apache/log4j/main/log4j.jar
    ln -s $(build-classpath mojarra/jsf-impl) com/sun/jsf-impl/main/jsf-impl.jar
    ln -s $(build-classpath netty) org/jboss/netty/main/netty.jar
    ln -s $(build-classpath picketbox/picketbox) org/picketbox/main/picketbox.jar
    ln -s $(build-classpath picketbox/infinispan) org/picketbox/main/infinispan.jar
    ln -s $(build-classpath picketbox-commons) org/picketbox/main/picketbox-commons.jar

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

    ln -s $(build-classpath slf4j/api) org/slf4j/main/api.jar
    ln -s $(build-classpath slf4j/ext) org/slf4j/ext/main/ext.jar
    ln -s $(build-classpath slf4j/jcl-over-slf4j) org/slf4j/jcl-over-slf4j/main/jcl-over-slf4j.jar
    ln -s $(build-classpath slf4j-jboss-logmanager) org/slf4j/impl/main/slf4j-jboss-logmanager.jar
    ln -s $(build-classpath staxmapper) org/jboss/staxmapper/main/staxmapper.jar
    ln -s $(build-classpath weld-api/weld-api) org/jboss/weld/api/main/weld-api.jar
    ln -s $(build-classpath weld-api/weld-spi) org/jboss/weld/spi/main/weld-spi.jar
    ln -s $(build-classpath weld-core) org/jboss/weld/core/main/weld-core.jar
    ln -s $(build-classpath xalan-j2) org/apache/xalan/main/xalan-j2.jar
    ln -s $(build-classpath xalan-j2-serializer) org/apache/xalan/main/xalan-j2-serializer.jar
    ln -s $(build-classpath xerces-j2) org/apache/xerces/main/xerces-j2.jar
    ln -s $(build-classpath xnio-api) org/jboss/xnio/main/xnio-api.jar
    ln -s $(build-classpath xnio-nio) org/jboss/xnio/nio/main/xnio-nio.jar
  popd
popd

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

  install -m 755 %{SOURCE1} jboss-as-cp
popd

%pre
# Add jboss-as user and group
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
    useradd -c "JBoss AS" -u %{jbuid} -g %{name} -s /bin/nologin -r -d %{homedir} %{name}
exit 0

%post
# AS7 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

pushd %{homedir}/modules/org/hornetq/main/lib/linux-${arch} > /dev/null
  ln -s ${libdir}/libHornetQAIO.so.0 libHornetQAIO.so
popd > /dev/null

pushd %{homedir}/modules/org/jboss/as/web/main/lib/linux-${arch} > /dev/null
  ln -s ${libdir}/libjbnative-1.so.0 libtcnative-1.so
  ln -s ${libdir}/libapr-1.so.0 libapr-1.so
  ln -s ${libdir}/libcrypto.so libcrypto.so
  ln -s ${libdir}/libssl.so libssl.so
popd > /dev/null

%preun
# Let's clean up the arch-specific symlinks
arch=`uname -m`

rm -rf %{homedir}/modules/org/jboss/as/web/main/lib/linux-${arch}/*
rm -rf %{homedir}/modules/org/hornetq/main/lib/linux-${arch}/*

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

%files javadoc
%{_javadocdir}/%{name}
%doc %{homedir}/LICENSE.txt

%changelog
* Mon Jun 04 2012 Marek Goldmann <mgoldman@redhat.com> 7.1.1-4
- jboss-as-cp script is missing argument placeholder for c optarg, RHBZ#827571

* 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