# Copyright (c) 2000-2007, JPackage Project # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the # distribution. # 3. Neither the name of the JPackage Project nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # %global jtuid 110 %global username %{name} %global confdir %{_sysconfdir}/%{name} %global logdir %{_localstatedir}/log/%{name} %global homedir %{_datadir}/%{name} %global jettycachedir %{_localstatedir}/cache/%{name} %global tempdir %{jettycachedir}/temp %global rundir %{_localstatedir}/run/%{name} %global jettylibdir %{_localstatedir}/lib/%{name} %global appdir %{jettylibdir}/webapps %global addver .v20210413 # minimal version required to build eclipse and thermostat # eclipse needs: util, server, http, continuation, io, security, servlet # thermostat needs: server, jaas, webapp # above modules need: jmx, xml %bcond_without jp_minimal Name: jetty Version: 9.4.40 Release: 7%{?dist} Summary: Java Webserver and Servlet Container # Jetty is dual licensed under both ASL 2.0 and EPL 1.0, see NOTICE.txt License: ASL 2.0 or EPL-1.0 URL: http://www.eclipse.org/jetty/ Source0: https://github.com/eclipse/%{name}.project/archive/%{name}-%{version}%{addver}.tar.gz Source1: jetty.sh Source3: jetty.logrotate Source5: %{name}.service # MIT license text taken from Utf8Appendable.java Source6: LICENSE-MIT Patch1: 0001-Distro-jetty.home.patch Patch2: 0002-Port-to-servlet-api-4-5.patch BuildRequires: maven-local BuildRequires: mvn(javax.servlet:javax.servlet-api) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-shade-plugin) BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) BuildRequires: mvn(org.slf4j:slf4j-api) %if %{without jp_minimal} BuildRequires: maven-local BuildRequires: mvn(com.github.jnr:jnr-unixsocket) BuildRequires: mvn(javax.annotation:javax.annotation-api) BuildRequires: mvn(javax.enterprise:cdi-api) BuildRequires: mvn(javax.servlet:javax.servlet-api) BuildRequires: mvn(javax.servlet.jsp:javax.servlet.jsp-api) BuildRequires: mvn(javax.servlet:jstl) BuildRequires: mvn(javax.transaction:javax.transaction-api) BuildRequires: mvn(javax.websocket:javax.websocket-api) BuildRequires: mvn(javax.websocket:javax.websocket-client-api) BuildRequires: mvn(org.apache.ant:ant) BuildRequires: mvn(org.apache.ant:ant-launcher) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven:maven-artifact) BuildRequires: mvn(org.apache.maven:maven-core) BuildRequires: mvn(org.apache.maven:maven-plugin-api) BuildRequires: mvn(org.apache.maven:maven-project) BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-failsafe-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-remote-resources-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-shade-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-war-plugin) BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-tools-api) BuildRequires: mvn(org.apache.maven.shared:maven-artifact-transfer) BuildRequires: mvn(org.apache.taglibs:taglibs-standard-impl) BuildRequires: mvn(org.apache.taglibs:taglibs-standard-spec) BuildRequires: mvn(org.apache.tomcat:tomcat-jasper) BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) BuildRequires: mvn(org.codehaus.mojo:exec-maven-plugin) BuildRequires: mvn(org.eclipse.jetty.alpn:alpn-api) BuildRequires: mvn(org.eclipse.jetty.orbit:javax.mail.glassfish) BuildRequires: mvn(org.eclipse.jetty.orbit:javax.security.auth.message) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-assembly-descriptors) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-schemas) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-test-helper) BuildRequires: mvn(org.jboss.weld.servlet:weld-servlet-core) BuildRequires: mvn(org.mongodb:mongo-java-driver) BuildRequires: mvn(org.ow2.asm:asm) BuildRequires: mvn(org.ow2.asm:asm-commons) BuildRequires: mvn(org.slf4j:slf4j-api) BuildRequires: mvn(org.mortbay.jetty.alpn:alpn-boot) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-artifact-remote-resources) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-distribution-remote-resources) BuildRequires: mvn(org.eclipse.jetty.toolchain:jetty-test-policy) #BuildRequires: mvn(org.eclipse.jetty.toolchain.setuid:jetty-setuid-java) BuildRequires: maven-javadoc-plugin BuildRequires: glassfish-el BuildRequires: systemd BuildRequires: junit5 # duplicate providers, choose one BuildRequires: jboss-websocket-1.0-api Requires: jboss-websocket-1.0-api %endif BuildArch: noarch ExclusiveArch: %{java_arches} noarch # jp_minimal doesn't have main package %if %{without jp_minimal} # Explicit requires for javapackages-tools since jetty.sh script # uses /usr/share/java-utils/java-functions Requires: javapackages-tools Requires: %{name}-annotations = %{version}-%{release} Requires: %{name}-ant = %{version}-%{release} Requires: %{name}-client = %{version}-%{release} Requires: %{name}-continuation = %{version}-%{release} Requires: %{name}-deploy = %{version}-%{release} Requires: %{name}-fcgi-client = %{version}-%{release} Requires: %{name}-fcgi-server = %{version}-%{release} Requires: %{name}-http = %{version}-%{release} Requires: %{name}-http-spi = %{version}-%{release} Requires: %{name}-io = %{version}-%{release} Requires: %{name}-jaas = %{version}-%{release} Requires: %{name}-jaspi = %{version}-%{release} Requires: %{name}-jmx = %{version}-%{release} Requires: %{name}-jndi = %{version}-%{release} Requires: %{name}-jsp = %{version}-%{release} Requires: %{name}-jspc-maven-plugin = %{version}-%{release} Requires: %{name}-maven-plugin = %{version}-%{release} Requires: %{name}-plus = %{version}-%{release} Requires: %{name}-proxy = %{version}-%{release} Requires: %{name}-rewrite = %{version}-%{release} Requires: %{name}-security = %{version}-%{release} Requires: %{name}-server = %{version}-%{release} Requires: %{name}-servlet = %{version}-%{release} Requires: %{name}-servlets = %{version}-%{release} Requires: %{name}-start = %{version}-%{release} Requires: %{name}-unixsocket = %{version}-%{release} Requires: %{name}-util = %{version}-%{release} Requires: %{name}-util-ajax = %{version}-%{release} Requires: %{name}-webapp = %{version}-%{release} Requires: %{name}-xml = %{version}-%{release} Requires: %{name}-cdi = %{version}-%{release} Requires: %{name}-websocket-api = %{version}-%{release} Requires: %{name}-websocket-client = %{version}-%{release} Requires: %{name}-websocket-common = %{version}-%{release} Requires: %{name}-websocket-server = %{version}-%{release} Requires: %{name}-websocket-servlet = %{version}-%{release} Requires: %{name}-javax-websocket-client-impl = %{version}-%{release} Requires: %{name}-javax-websocket-server-impl = %{version}-%{release} Requires: %{name}-nosql = %{version}-%{release} Requires: %{name}-quickstart = %{version}-%{release} Requires: %{name}-jstl = %{version}-%{release} Requires: %{name}-alpn-client = %{version}-%{release} Requires: %{name}-alpn-server = %{version}-%{release} Requires: %{name}-http2-client = %{version}-%{release} Requires: %{name}-http2-common = %{version}-%{release} Requires: %{name}-http2-hpack = %{version}-%{release} Requires: %{name}-http2-http-client-transport = %{version}-%{release} Requires: %{name}-http2-server = %{version}-%{release} Requires(pre): shadow-utils %{?systemd_ordering} Provides: group(%username) = %jtuid Provides: user(%username) = %jtuid %endif # Hazelcast in Fedora is too old for jetty to build against (Added in F29) Obsoletes: %{name}-hazelcast < 9.4.18-1 # Infinispan in Fedora is too old for jetty to build against (Added in F31) Obsoletes: %{name}-infinispan < 9.4.18-1 # Eclipse no longer available (Added in F31) Obsoletes: %{name}-osgi-alpn < 9.4.18-1 Obsoletes: %{name}-osgi-boot < 9.4.18-1 Obsoletes: %{name}-osgi-boot-jsp < 9.4.18-1 Obsoletes: %{name}-osgi-boot-warurl < 9.4.18-1 # Spring framework removed from Fedora (Added in F32) Obsoletes: %{name}-spring < 9.4.24-1 %if %{with jp_minimal} # Remove left-over packages that would have broken deps when built in minimal mode Obsoletes: %{name}-project < 9.4.20-1 Obsoletes: %{name}-annotations < 9.4.20-1 Obsoletes: %{name}-ant < 9.4.20-1 Obsoletes: %{name}-cdi < 9.4.20-1 Obsoletes: %{name}-deploy < 9.4.20-1 Obsoletes: %{name}-fcgi-client < 9.4.20-1 Obsoletes: %{name}-fcgi-server < 9.4.20-1 Obsoletes: %{name}-http-spi < 9.4.20-1 Obsoletes: %{name}-jaspi < 9.4.20-1 Obsoletes: %{name}-jndi < 9.4.20-1 Obsoletes: %{name}-jsp < 9.4.20-1 Obsoletes: %{name}-jstl < 9.4.20-1 Obsoletes: %{name}-jspc-maven-plugin < 9.4.20-1 Obsoletes: %{name}-maven-plugin < 9.4.20-1 Obsoletes: %{name}-plus < 9.4.20-1 Obsoletes: %{name}-proxy < 9.4.20-1 Obsoletes: %{name}-quickstart < 9.4.20-1 Obsoletes: %{name}-rewrite < 9.4.20-1 Obsoletes: %{name}-servlets < 9.4.20-1 Obsoletes: %{name}-start < 9.4.20-1 Obsoletes: %{name}-unixsocket < 9.4.20-1 Obsoletes: %{name}-websocket-api < 9.4.20-1 Obsoletes: %{name}-websocket-client < 9.4.20-1 Obsoletes: %{name}-websocket-common < 9.4.20-1 Obsoletes: %{name}-websocket-server < 9.4.20-1 Obsoletes: %{name}-websocket-servlet < 9.4.20-1 Obsoletes: %{name}-javax-websocket-client-impl < 9.4.20-1 Obsoletes: %{name}-javax-websocket-server-impl < 9.4.20-1 Obsoletes: %{name}-alpn-client < 9.4.20-1 Obsoletes: %{name}-alpn-server < 9.4.20-1 Obsoletes: %{name}-http2-client < 9.4.20-1 Obsoletes: %{name}-http2-common < 9.4.20-1 Obsoletes: %{name}-http2-hpack < 9.4.20-1 Obsoletes: %{name}-http2-http-client-transport < 9.4.20-1 Obsoletes: %{name}-http2-server < 9.4.20-1 Obsoletes: %{name}-nosql < 9.4.20-1 %endif %description %global desc \ Jetty is a 100% Java HTTP Server and Servlet Container. This means that you\ do not need to configure and run a separate web server (like Apache) in order\ to use Java, servlets and JSPs to generate dynamic content. Jetty is a fully\ featured web server for static and dynamic content. Unlike separate\ server/container solutions, this means that your web server and web\ application run in the same process, without interconnection overheads\ and complications. Furthermore, as a pure java component, Jetty can be simply\ included in your application for demonstration, distribution or deployment.\ Jetty is available on all Java supported platforms. %{desc} %global extdesc %{desc}\ \ This package contains # packages in jp_minimal set %package client Summary: client module for Jetty %description client %{extdesc} %{summary}. %package continuation Summary: continuation module for Jetty %description continuation %{extdesc} %{summary}. %package http Summary: http module for Jetty %description http %{extdesc} %{summary}. %package http-spi Summary: http-spi module for Jetty %description http-spi %{extdesc} %{summary}. %package io Summary: io module for Jetty %description io %{extdesc} %{summary}. %package jaas Summary: jaas module for Jetty %description jaas %{extdesc} %{summary}. %package jsp Summary: jsp module for Jetty Requires: glassfish-el %description jsp %{extdesc} %{summary}. %package security Summary: security module for Jetty %description security %{extdesc} %{summary}. %package server Summary: server module for Jetty %description server %{extdesc} %{summary}. %package servlet Summary: servlet module for Jetty # Eclipse no longer available (Added in F31) Obsoletes: %{name}-httpservice < 9.4.18-1 %description servlet %{extdesc} %{summary}. %package util Summary: util module for Jetty # Utf8Appendable.java is additionally under MIT license License: (ASL 2.0 or EPL-1.0) and MIT %description util %{extdesc} %{summary}. %package util-ajax Summary: util-ajax module for Jetty %description util-ajax %{extdesc} %{summary}. %package webapp Summary: webapp module for Jetty %description webapp %{extdesc} %{summary}. %package jmx Summary: jmx module for Jetty %description jmx %{extdesc} %{summary}. %package xml Summary: xml module for Jetty %description xml %{extdesc} %{summary}. %if %{without jp_minimal} %package project Summary: POM files for Jetty Obsoletes: %{name}-websocket-parent < 9.4.0-0.4 Provides: %{name}-websocket-parent = %{version}-%{release} Obsoletes: %{name}-osgi-project < 9.4.0-0.4 Provides: %{name}-osgi-project = %{version}-%{release} %description project %{extdesc} %{summary}. %package deploy Summary: deploy module for Jetty %description deploy %{extdesc} %{summary}. %package annotations Summary: annotations module for Jetty %description annotations %{extdesc} %{summary}. %package ant Summary: ant module for Jetty %description ant %{extdesc} %{summary}. %package cdi Summary: Jetty CDI Configuration %description cdi %{extdesc} %{summary}. %package fcgi-client Summary: FastCGI client module for Jetty %description fcgi-client %{extdesc} %{summary}. %package fcgi-server Summary: FastCGI client module for Jetty %description fcgi-server %{extdesc} %{summary}. %package jaspi Summary: jaspi module for Jetty %description jaspi %{extdesc} %{summary}. %package jndi Summary: jndi module for Jetty %description jndi %{extdesc} %{summary}. %package jspc-maven-plugin Summary: jspc-maven-plugin module for Jetty %description jspc-maven-plugin %{extdesc} %{summary}. %package maven-plugin Summary: maven-plugin module for Jetty %description maven-plugin %{extdesc} %{summary}. %package plus Summary: plus module for Jetty %description plus %{extdesc} %{summary}. %package proxy Summary: proxy module for Jetty %description proxy %{extdesc} %{summary}. %package rewrite Summary: rewrite module for Jetty %description rewrite %{extdesc} %{summary}. %package servlets Summary: servlets module for Jetty %description servlets %{extdesc} %{summary}. %package start Summary: start module for Jetty %description start %{extdesc} %{summary}. %package unixsocket Summary: unixsocket module for Jetty %description unixsocket %{extdesc} %{summary}. %package websocket-api Summary: websocket-api module for Jetty %description websocket-api %{extdesc} %{summary}. %package websocket-client Summary: websocket-client module for Jetty %description websocket-client %{extdesc} %{summary}. %package websocket-common Summary: websocket-common module for Jetty %description websocket-common %{extdesc} %{summary}. %package websocket-server Summary: websocket-server module for Jetty %description websocket-server %{extdesc} %{summary}. %package websocket-servlet Summary: websocket-servlet module for Jetty %description websocket-servlet %{extdesc} %{summary}. %package javax-websocket-client-impl Summary: javax-websocket-client-impl module for Jetty %description javax-websocket-client-impl %{extdesc} %{summary}. %package javax-websocket-server-impl Summary: javax-websocket-server-impl module for Jetty %description javax-websocket-server-impl %{extdesc} %{summary}. %package nosql Summary: nosql module for Jetty %description nosql %{extdesc} %{summary}. %package quickstart Summary: quickstart module for Jetty %description quickstart %{extdesc} %{summary}. %package alpn-client Summary: alpn-client module for Jetty %description alpn-client %{extdesc} %{summary}. %package alpn-server Summary: alpn-server module for Jetty %description alpn-server %{extdesc} %{summary}. %package http2-client Summary: http2-client module for Jetty %description http2-client %{extdesc} %{summary}. %package http2-common Summary: http2-common module for Jetty %description http2-common %{extdesc} %{summary}. %package http2-hpack Summary: http2-hpack module for Jetty %description http2-hpack %{extdesc} %{summary}. %package http2-http-client-transport Summary: http2-http-client-transport module for Jetty %description http2-http-client-transport %{extdesc} %{summary}. %package http2-server Summary: http2-server module for Jetty %description http2-server %{extdesc} %{summary}. %package jstl Summary: jstl module for Jetty %description jstl %{extdesc} %{summary}. %endif %package javadoc Summary: Javadoc for %{name} # some MIT-licensed code (from Utf8Appendable) is used to generate javadoc License: (ASL 2.0 or EPL-1.0) and MIT %description javadoc %{summary}. %prep %setup -q -n %{name}.project-%{name}-%{version}%{addver} %patch1 -p1 %patch2 -p1 find . -name "*.?ar" -exec rm {} \; find . -name "*.class" -exec rm {} \; # Plugins irrelevant or harmful to building the package %pom_remove_plugin -r :maven-checkstyle-plugin %pom_remove_plugin -r :spotbugs-maven-plugin %pom_remove_plugin -r :maven-enforcer-plugin %pom_remove_plugin -r :maven-eclipse-plugin %pom_remove_plugin -r :license-maven-plugin %pom_remove_plugin -r :maven-site-plugin %pom_remove_plugin -r :maven-source-plugin %pom_remove_plugin -r :maven-deploy-plugin %pom_remove_plugin -r :jacoco-maven-plugin %pom_remove_plugin -r :maven-release-plugin %pom_remove_plugin -r :buildnumber-maven-plugin %pom_remove_plugin -r :h2spec-maven-plugin # Unnecessary pom flattening can be skipped %pom_remove_plugin -r :flatten-maven-plugin jetty-bom %pom_disable_module aggregates/jetty-all # Reflective use of classes that might not be present in the JDK should be optional OSGi-wise %pom_xpath_inject "pom:configuration/pom:instructions" \ "sun.misc;resolution:=optional,com.sun.nio.file;resolution:=optional,*" %pom_remove_dep "com.sun.net.httpserver:http" jetty-http-spi %pom_change_dep -r org.mortbay.jasper:apache-jsp org.apache.tomcat:tomcat-jasper %pom_add_dep 'org.junit.jupiter:junit-jupiter-engine:${junit.version}' tests/test-sessions/test-sessions-common # provided by glassfish-jsp-api that has newer version %pom_change_dep -r javax.servlet.jsp:jsp-api javax.servlet.jsp:javax.servlet.jsp-api # txt artifact - not installable %pom_remove_plugin ":jetty-version-maven-plugin" %pom_xpath_remove "pom:artifactItem[pom:classifier='version']" jetty-home # Disable building source release %pom_xpath_remove 'pom:execution[pom:id="sources"]' jetty-home # Unwanted JS in javadoc sed -i '/^\s*\*.*