File pulsar.spec of Package pulsar

#
# spec file for package pulsar
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%global homedir %{_datadir}/%{name}
Name:           pulsar
Version:        4.0.1
Release:        0
Summary:        Pulsar
License:        Apache-2.0
Group:          Productivity/Networking/Web/Servers
URL:            https://github.com/apache/pulsar
Source0:        %{name}-%{version}.tar.xz
Source1:        %{name}-maven-repo.tar.xz
Patch0:         0001-don-t-bother-with-source-jars.patch
BuildRequires:  fdupes
BuildRequires:  java-devel >= 17
BuildRequires:  maven-local
BuildRequires:  xmvn-subst
BuildRequires:  mvn(com.auth0:java-jwt)
BuildRequires:  mvn(com.carrotsearch:hppc)
BuildRequires:  mvn(com.fasterxml.jackson.core:jackson-annotations)
BuildRequires:  mvn(com.fasterxml.jackson.core:jackson-databind)
BuildRequires:  mvn(com.fasterxml.jackson.dataformat:jackson-dataformat-cbor)
BuildRequires:  mvn(com.fasterxml.jackson.dataformat:jackson-dataformat-smile)
BuildRequires:  mvn(com.fasterxml.jackson.dataformat:jackson-dataformat-xml)
BuildRequires:  mvn(com.fasterxml.jackson.dataformat:jackson-dataformat-yaml)
BuildRequires:  mvn(com.fasterxml.jackson.datatype:jackson-datatype-jdk8)
BuildRequires:  mvn(com.fasterxml.jackson.datatype:jackson-datatype-jsr310)
BuildRequires:  mvn(com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider)
BuildRequires:  mvn(com.fasterxml.jackson.module:jackson-module-jsonSchema)
BuildRequires:  mvn(com.fasterxml.jackson.module:jackson-module-parameter-names)
BuildRequires:  mvn(com.fasterxml.jackson:jackson-bom:pom:)
BuildRequires:  mvn(com.fasterxml.woodstox:woodstox-core)
BuildRequires:  mvn(com.github.ben-manes.caffeine:caffeine)
BuildRequires:  mvn(com.github.jnr:jnr-ffi)
BuildRequires:  mvn(com.github.jnr:jnr-posix)
BuildRequires:  mvn(com.github.luben:zstd-jni)
BuildRequires:  mvn(com.github.oshi:oshi-core-java11)
BuildRequires:  mvn(com.github.seancfoley:ipaddress)
BuildRequires:  mvn(com.github.spotbugs:spotbugs-annotations)
BuildRequires:  mvn(com.github.stephenc.jcip:jcip-annotations)
BuildRequires:  mvn(com.github.zafarkhaja:java-semver)
BuildRequires:  mvn(com.google.api.grpc:proto-google-common-protos)
BuildRequires:  mvn(com.google.auto.value:auto-value-annotations)
BuildRequires:  mvn(com.google.code.gson:gson)
BuildRequires:  mvn(com.google.guava:guava)
BuildRequires:  mvn(com.google.http-client:google-http-client)
BuildRequires:  mvn(com.google.http-client:google-http-client-gson)
BuildRequires:  mvn(com.google.inject.extensions:guice-assistedinject)
BuildRequires:  mvn(com.google.inject:guice)
BuildRequires:  mvn(com.google.jimfs:jimfs)
BuildRequires:  mvn(com.google.protobuf:protobuf-bom:pom:)
BuildRequires:  mvn(com.google.protobuf:protobuf-java)
BuildRequires:  mvn(com.google.protobuf:protobuf-java-util)
BuildRequires:  mvn(com.google.re2j:re2j)
BuildRequires:  mvn(com.squareup:javapoet)
BuildRequires:  mvn(com.sun.activation:javax.activation)
BuildRequires:  mvn(com.sun.xml.bind:jaxb-impl)
BuildRequires:  mvn(com.univocity:univocity-parsers)
BuildRequires:  mvn(commons-beanutils:commons-beanutils)
BuildRequires:  mvn(commons-codec:commons-codec)
BuildRequires:  mvn(commons-collections:commons-collections)
BuildRequires:  mvn(commons-configuration:commons-configuration)
BuildRequires:  mvn(commons-dbcp:commons-dbcp)
BuildRequires:  mvn(commons-digester:commons-digester)
BuildRequires:  mvn(commons-io:commons-io)
BuildRequires:  mvn(commons-lang:commons-lang)
BuildRequires:  mvn(commons-net:commons-net)
BuildRequires:  mvn(commons-validator:commons-validator)
BuildRequires:  mvn(dev.failsafe:failsafe)
BuildRequires:  mvn(info.picocli:picocli)
BuildRequires:  mvn(info.picocli:picocli-shell-jline3)
BuildRequires:  mvn(io.github.classgraph:classgraph)
BuildRequires:  mvn(io.grpc:grpc-all)
BuildRequires:  mvn(io.grpc:grpc-alts)
BuildRequires:  mvn(io.grpc:grpc-api)
BuildRequires:  mvn(io.grpc:grpc-auth)
BuildRequires:  mvn(io.grpc:grpc-bom:pom:)
BuildRequires:  mvn(io.grpc:grpc-context)
BuildRequires:  mvn(io.grpc:grpc-core)
BuildRequires:  mvn(io.grpc:grpc-grpclb)
BuildRequires:  mvn(io.grpc:grpc-inprocess)
BuildRequires:  mvn(io.grpc:grpc-netty)
BuildRequires:  mvn(io.grpc:grpc-netty-shaded)
BuildRequires:  mvn(io.grpc:grpc-protobuf)
BuildRequires:  mvn(io.grpc:grpc-protobuf-lite)
BuildRequires:  mvn(io.grpc:grpc-rls)
BuildRequires:  mvn(io.grpc:grpc-services)
BuildRequires:  mvn(io.grpc:grpc-servlet)
BuildRequires:  mvn(io.grpc:grpc-servlet-jakarta)
BuildRequires:  mvn(io.grpc:grpc-stub)
BuildRequires:  mvn(io.grpc:grpc-util)
BuildRequires:  mvn(io.grpc:grpc-xds)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-classes-io_uring)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring)
BuildRequires:  mvn(io.netty:netty)
BuildRequires:  mvn(io.netty:netty-bom:pom:)
BuildRequires:  mvn(io.netty:netty-buffer)
BuildRequires:  mvn(io.netty:netty-codec-haproxy)
BuildRequires:  mvn(io.netty:netty-codec-http)
BuildRequires:  mvn(io.netty:netty-codec-socks)
BuildRequires:  mvn(io.netty:netty-handler)
BuildRequires:  mvn(io.netty:netty-handler-proxy)
BuildRequires:  mvn(io.netty:netty-parent:pom:)
BuildRequires:  mvn(io.netty:netty-resolver-dns)
BuildRequires:  mvn(io.netty:netty-tcnative)
BuildRequires:  mvn(io.netty:netty-tcnative-boringssl-static)
BuildRequires:  mvn(io.netty:netty-tcnative-classes)
BuildRequires:  mvn(io.netty:netty-transport)
BuildRequires:  mvn(io.netty:netty-transport-native-unix-common)
BuildRequires:  mvn(io.opencensus:opencensus-api)
BuildRequires:  mvn(io.opencensus:opencensus-contrib-grpc-metrics)
BuildRequires:  mvn(io.opencensus:opencensus-contrib-http-util)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-api)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-api-incubator)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-bom-alpha:pom:)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-bom:pom:)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-context)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-exporter-common)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-exporter-otlp)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-exporter-otlp-common)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-common)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-extension-autoconfigure)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-logs)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-metrics)
BuildRequires:  mvn(io.opentelemetry:opentelemetry-sdk-trace)
BuildRequires:  mvn(io.perfmark:perfmark-api)
BuildRequires:  mvn(io.prometheus:simpleclient)
BuildRequires:  mvn(io.prometheus:simpleclient_caffeine)
BuildRequires:  mvn(io.prometheus:simpleclient_common)
BuildRequires:  mvn(io.prometheus:simpleclient_hotspot)
BuildRequires:  mvn(io.prometheus:simpleclient_httpserver)
BuildRequires:  mvn(io.prometheus:simpleclient_jetty)
BuildRequires:  mvn(io.prometheus:simpleclient_log4j2)
BuildRequires:  mvn(io.prometheus:simpleclient_servlet)
BuildRequires:  mvn(io.prometheus:simpleclient_servlet_common)
BuildRequires:  mvn(io.prometheus:simpleclient_tracer_common)
BuildRequires:  mvn(io.protostuff:protostuff-parser)
BuildRequires:  mvn(io.reactivex.rxjava3:rxjava)
BuildRequires:  mvn(jakarta.activation:jakarta.activation-api)
BuildRequires:  mvn(jakarta.annotation:jakarta.annotation-api)
BuildRequires:  mvn(jakarta.json:jakarta.json-api)
BuildRequires:  mvn(jakarta.persistence:jakarta.persistence-api)
BuildRequires:  mvn(jakarta.validation:jakarta.validation-api)
BuildRequires:  mvn(jakarta.ws.rs:jakarta.ws.rs-api)
BuildRequires:  mvn(jakarta.xml.bind:jakarta.xml.bind-api)
BuildRequires:  mvn(javax.annotation:javax.annotation-api)
BuildRequires:  mvn(javax.json:javax.json-api)
BuildRequires:  mvn(javax.servlet.jsp:jsp-api)
BuildRequires:  mvn(javax.servlet:javax.servlet-api)
BuildRequires:  mvn(javax.validation:validation-api)
BuildRequires:  mvn(javax.websocket:javax.websocket-client-api)
BuildRequires:  mvn(javax.ws.rs:javax.ws.rs-api)
BuildRequires:  mvn(javax.ws.rs:jsr311-api)
BuildRequires:  mvn(javax.xml.bind:jaxb-api)
BuildRequires:  mvn(jline:jline)
BuildRequires:  mvn(joda-time:joda-time)
BuildRequires:  mvn(kr.motd.maven:os-maven-plugin)
BuildRequires:  mvn(log4j:log4j)
BuildRequires:  mvn(mysql:mysql-connector-java)
BuildRequires:  mvn(net.bytebuddy:byte-buddy)
BuildRequires:  mvn(net.java.dev.jna:jna)
BuildRequires:  mvn(net.jcip:jcip-annotations)
BuildRequires:  mvn(net.jodah:typetools)
BuildRequires:  mvn(net.minidev:json-smart)
BuildRequires:  mvn(net.sourceforge.argparse4j:argparse4j)
BuildRequires:  mvn(org.antlr:antlr-runtime)
BuildRequires:  mvn(org.antlr:antlr4-runtime)
BuildRequires:  mvn(org.apache.ant:ant)
BuildRequires:  mvn(org.apache.commons:commons-collections4)
BuildRequires:  mvn(org.apache.commons:commons-configuration2)
BuildRequires:  mvn(org.apache.commons:commons-crypto)
BuildRequires:  mvn(org.apache.commons:commons-csv)
BuildRequires:  mvn(org.apache.commons:commons-lang3)
BuildRequires:  mvn(org.apache.commons:commons-text)
BuildRequires:  mvn(org.apache.derby:derby)
BuildRequires:  mvn(org.apache.httpcomponents:httpasyncclient)
BuildRequires:  mvn(org.apache.logging.log4j:log4j-api)
BuildRequires:  mvn(org.apache.logging.log4j:log4j-core)
BuildRequires:  mvn(org.apache.logging.log4j:log4j-slf4j-impl)
BuildRequires:  mvn(org.apache.logging.log4j:log4j-web)
BuildRequires:  mvn(org.apache.lucene:lucene-analyzers-common)
BuildRequires:  mvn(org.apache.lucene:lucene-backward-codecs)
BuildRequires:  mvn(org.apache.lucene:lucene-core)
BuildRequires:  mvn(org.apache.lucene:lucene-grouping)
BuildRequires:  mvn(org.apache.lucene:lucene-highlighter)
BuildRequires:  mvn(org.apache.lucene:lucene-join)
BuildRequires:  mvn(org.apache.lucene:lucene-memory)
BuildRequires:  mvn(org.apache.lucene:lucene-misc)
BuildRequires:  mvn(org.apache.lucene:lucene-queries)
BuildRequires:  mvn(org.apache.lucene:lucene-queryparser)
BuildRequires:  mvn(org.apache.lucene:lucene-sandbox)
BuildRequires:  mvn(org.apache.lucene:lucene-spatial-extras)
BuildRequires:  mvn(org.apache.lucene:lucene-spatial3d)
BuildRequires:  mvn(org.apache.lucene:lucene-suggest)
BuildRequires:  mvn(org.apache.maven.plugin-tools:maven-plugin-annotations)
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-shade-plugin)
BuildRequires:  mvn(org.apache.maven.surefire:surefire-testng)
BuildRequires:  mvn(org.apache.maven.wagon:wagon-ssh-external)
BuildRequires:  mvn(org.apache.maven:maven-project)
BuildRequires:  mvn(org.apache.tomcat.embed:tomcat-embed-core)
BuildRequires:  mvn(org.apache.tomcat:tomcat-annotations-api)
BuildRequires:  mvn(org.apache.velocity:velocity-engine-core)
BuildRequires:  mvn(org.apache:apache:pom:)
BuildRequires:  mvn(org.bitbucket.b_c:jose4j)
BuildRequires:  mvn(org.bouncycastle:bc-fips)
BuildRequires:  mvn(org.bouncycastle:bcpkix-jdk18on)
BuildRequires:  mvn(org.bouncycastle:bcprov-jdk18on)
BuildRequires:  mvn(org.checkerframework:checker-qual)
BuildRequires:  mvn(org.codehaus.jackson:jackson-core-asl)
BuildRequires:  mvn(org.codehaus.jackson:jackson-mapper-asl)
BuildRequires:  mvn(org.codehaus.mojo:build-helper-maven-plugin)
BuildRequires:  mvn(org.codehaus.mojo:properties-maven-plugin)
BuildRequires:  mvn(org.codehaus.mojo:templating-maven-plugin)
BuildRequires:  mvn(org.conscrypt:conscrypt-openjdk-uber)
BuildRequires:  mvn(org.eclipse.jetty.http2:http2-client)
BuildRequires:  mvn(org.eclipse.jetty.http2:http2-common)
BuildRequires:  mvn(org.eclipse.jetty.http2:http2-hpack)
BuildRequires:  mvn(org.eclipse.jetty.http2:http2-http-client-transport)
BuildRequires:  mvn(org.eclipse.jetty.websocket:javax-websocket-client-impl)
BuildRequires:  mvn(org.eclipse.jetty.websocket:websocket-api)
BuildRequires:  mvn(org.eclipse.jetty.websocket:websocket-client)
BuildRequires:  mvn(org.eclipse.jetty.websocket:websocket-common)
BuildRequires:  mvn(org.eclipse.jetty.websocket:websocket-server)
BuildRequires:  mvn(org.eclipse.jetty.websocket:websocket-servlet)
BuildRequires:  mvn(org.eclipse.jetty:jetty-alpn-client)
BuildRequires:  mvn(org.eclipse.jetty:jetty-alpn-conscrypt-server)
BuildRequires:  mvn(org.eclipse.jetty:jetty-alpn-java-client)
BuildRequires:  mvn(org.eclipse.jetty:jetty-alpn-server)
BuildRequires:  mvn(org.eclipse.jetty:jetty-jmx)
BuildRequires:  mvn(org.eclipse.jetty:jetty-proxy)
BuildRequires:  mvn(org.eclipse.jetty:jetty-server)
BuildRequires:  mvn(org.eclipse.jetty:jetty-servlet)
BuildRequires:  mvn(org.eclipse.jetty:jetty-servlets)
BuildRequires:  mvn(org.eclipse.jetty:jetty-webapp)
BuildRequires:  mvn(org.eclipse.jgit:org.eclipse.jgit)
BuildRequires:  mvn(org.eclipse.jgit:org.eclipse.jgit.ssh.jsch)
BuildRequires:  mvn(org.glassfish.hk2:hk2-bom:pom:)
BuildRequires:  mvn(org.glassfish.hk2:hk2-locator)
BuildRequires:  mvn(org.glassfish.hk2:osgi-resource-locator)
BuildRequires:  mvn(org.glassfish.jersey.containers:jersey-container-servlet)
BuildRequires:  mvn(org.glassfish.jersey.containers:jersey-container-servlet-core)
BuildRequires:  mvn(org.glassfish.jersey.core:jersey-client)
BuildRequires:  mvn(org.glassfish.jersey.core:jersey-common)
BuildRequires:  mvn(org.glassfish.jersey.core:jersey-server)
BuildRequires:  mvn(org.glassfish.jersey.ext:jersey-entity-filtering)
BuildRequires:  mvn(org.glassfish.jersey.inject:jersey-hk2)
BuildRequires:  mvn(org.glassfish.jersey.media:jersey-media-json-jackson)
BuildRequires:  mvn(org.glassfish.jersey.media:jersey-media-multipart)
BuildRequires:  mvn(org.glassfish:javax.json)
BuildRequires:  mvn(org.javassist:javassist)
BuildRequires:  mvn(org.jboss.logging:jboss-logging)
BuildRequires:  mvn(org.jdom:jdom)
BuildRequires:  mvn(org.jetbrains:annotations)
BuildRequires:  mvn(org.jline:jline)
BuildRequires:  mvn(org.jruby.jcodings:jcodings)
BuildRequires:  mvn(org.json:json)
BuildRequires:  mvn(org.junit:junit-bom:pom:)
BuildRequires:  mvn(org.jvnet.mimepull:mimepull)
BuildRequires:  mvn(org.lz4:lz4-java)
BuildRequires:  mvn(org.mariadb.jdbc:mariadb-java-client)
BuildRequires:  mvn(org.mockito:mockito-core)
BuildRequires:  mvn(org.objenesis:objenesis)
BuildRequires:  mvn(org.openjdk.jmh:jmh-core)
BuildRequires:  mvn(org.openjdk.jmh:jmh-generator-annprocess)
BuildRequires:  mvn(org.reactivestreams:reactive-streams)
BuildRequires:  mvn(org.reflections:reflections)
BuildRequires:  mvn(org.roaringbitmap:RoaringBitmap)
BuildRequires:  mvn(org.scala-lang:scala-library)
BuildRequires:  mvn(org.slf4j:jcl-over-slf4j)
BuildRequires:  mvn(org.slf4j:slf4j-api)
BuildRequires:  mvn(org.slf4j:slf4j-reload4j)
BuildRequires:  mvn(org.snakeyaml:snakeyaml-engine)
BuildRequires:  mvn(org.testng:testng)
BuildRequires:  mvn(org.xerial:sqlite-jdbc)
BuildRequires:  mvn(org.xolstice.maven.plugins:protobuf-maven-plugin)
BuildRequires:  mvn(org.yaml:snakeyaml)
BuildRequires:  mvn(org.zeromq:jeromq)
#!BuildRequires: jboss-websocket-1.0-api
#!BuildRequires: tomcat-embed
#!BuildRequires: tomcat-lib
# for i in %%{homedir}/lib/*; do rpm -qf --qf="%%{NAME}\n" `readlink -e $i`; done | sort -u
Requires:       IPAddress
Requires:       aopalliance
Requires:       apache-commons-cli
Requires:       apache-commons-codec
Requires:       apache-commons-collections4
Requires:       apache-commons-compress
Requires:       apache-commons-configuration
Requires:       apache-commons-io
Requires:       apache-commons-lang
Requires:       apache-commons-lang3
Requires:       apache-commons-logging
Requires:       apache-commons-text
Requires:       atinject
Requires:       auto-value-annotations
Requires:       bean-validation-api
Requires:       beust-jcommander
Requires:       bouncycastle
Requires:       bouncycastle-pkix
Requires:       bouncycastle-util
Requires:       byte-buddy
Requires:       caffeine
Requires:       checker-qual
Requires:       conscrypt
Requires:       failsafe
Requires:       glassfish-activation
Requires:       glassfish-activation-api
Requires:       glassfish-annotation-api
Requires:       glassfish-hk2-api
Requires:       glassfish-hk2-locator
Requires:       glassfish-hk2-osgi-resource-locator
Requires:       glassfish-hk2-utils
Requires:       glassfish-jax-rs-api
Requires:       glassfish-jaxb-api
Requires:       glassfish-servlet-api
Requires:       google-auth-library-java-credentials
Requires:       google-auth-library-java-oauth2-http
Requires:       google-errorprone-annotations
Requires:       google-gson
Requires:       google-http-java-client
Requires:       google-http-java-client-gson
Requires:       grpc-java-all
Requires:       grpc-java-alts
Requires:       grpc-java-api
Requires:       grpc-java-auth
Requires:       grpc-java-context
Requires:       grpc-java-core
Requires:       grpc-java-grpclb
Requires:       grpc-java-inprocess
Requires:       grpc-java-netty
Requires:       grpc-java-netty-shaded
Requires:       grpc-java-opentelemetry
Requires:       grpc-java-protobuf
Requires:       grpc-java-protobuf-lite
Requires:       grpc-java-rls
Requires:       grpc-java-services
Requires:       grpc-java-servlet
Requires:       grpc-java-servlet-jakarta
Requires:       grpc-java-stub
Requires:       grpc-java-util
Requires:       grpc-java-xds
Requires:       guava
Requires:       hppc
Requires:       httpcomponents-client
Requires:       httpcomponents-core
Requires:       j2objc-annotations
Requires:       jackson-annotations
Requires:       jackson-core
Requires:       jackson-databind
Requires:       jackson-dataformat-yaml
Requires:       jackson-jaxrs-json-provider
Requires:       jackson-jaxrs-providers
Requires:       jackson-module-jaxb-annotations
Requires:       jackson-module-jsonSchema
Requires:       jackson-modules-java8
Requires:       jakarta-activation
Requires:       jakarta-annotations
Requires:       jansi
Requires:       java-jwt
Requires:       javassist
Requires:       jaxb-api
Requires:       jboss-websocket-1.0-api
Requires:       jcip-annotations
Requires:       jcl-over-slf4j
Requires:       jctools
Requires:       jersey
Requires:       jetbrains-annotations
Requires:       jetty-alpn-server
Requires:       jetty-client
Requires:       jetty-continuation
Requires:       jetty-http
Requires:       jetty-io
Requires:       jetty-javax-websocket-client-impl
Requires:       jetty-proxy
Requires:       jetty-security
Requires:       jetty-server
Requires:       jetty-servlet
Requires:       jetty-servlets
Requires:       jetty-util
Requires:       jetty-util-ajax
Requires:       jetty-websocket-api
Requires:       jetty-websocket-client
Requires:       jetty-websocket-common
Requires:       jetty-websocket-server
Requires:       jetty-websocket-servlet
Requires:       jline
Requires:       jline3
Requires:       jna
Requires:       jna-contrib
Requires:       jose4j
Requires:       jsemver
Requires:       jsr-305
Requires:       log4j
Requires:       log4j-slf4j
Requires:       log4j-web
Requires:       mimepull
Requires:       netty
Requires:       netty-incubator-transport-io_uring
Requires:       netty-tcnative
Requires:       netty-tcnative-openssl-dynamic
Requires:       objectweb-asm
Requires:       opencensus-java-api
Requires:       opencensus-java-contrib-http-util
Requires:       opentelemetry-java-api
Requires:       opentelemetry-java-api-incubator
Requires:       opentelemetry-java-context
Requires:       opentelemetry-java-exporter-common
Requires:       opentelemetry-java-exporter-otlp
Requires:       opentelemetry-java-exporter-otlp-common
Requires:       opentelemetry-java-sdk
Requires:       opentelemetry-java-sdk-common
Requires:       opentelemetry-java-sdk-extension-autoconfigure
Requires:       opentelemetry-java-sdk-extension-autoconfigure-spi
Requires:       opentelemetry-java-sdk-logs
Requires:       opentelemetry-java-sdk-metrics
Requires:       opentelemetry-java-sdk-trace
Requires:       oshi
Requires:       perfmark-api
Requires:       picocli
Requires:       picocli-shell-jline3
Requires:       prometheus-simpleclient-java
Requires:       prometheus-simpleclient-java-caffeine
Requires:       prometheus-simpleclient-java-common
Requires:       prometheus-simpleclient-java-hotspot
Requires:       prometheus-simpleclient-java-httpserver
Requires:       prometheus-simpleclient-java-jetty
Requires:       prometheus-simpleclient-java-log4j2
Requires:       prometheus-simpleclient-java-servlet
Requires:       prometheus-simpleclient-java-servlet-common
Requires:       prometheus-simpleclient-java-tracer-common
Requires:       proto-google-common-protos
Requires:       protobuf-java
Requires:       re2j
Requires:       reactive-streams-jvm
Requires:       roaringbitmap
Requires:       rxjava
Requires:       slf4j
Requires:       snakeyaml
Requires:       testng
Requires:       typetools
%ifarch x86_64 %{?x86_64}
BuildRequires:  mvn(com.google.protobuf:protoc:exe:linux-x86_64:)
BuildRequires:  mvn(io.grpc:protoc-gen-grpc-java:exe:linux-x86_64:)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring::linux-x86_64:)
BuildRequires:  mvn(io.netty:netty-transport-native-epoll::linux-x86_64:)
%endif
%ifarch aarch64 %{arm64}
BuildRequires:  mvn(com.google.protobuf:protoc:exe:linux-aarch_64:)
BuildRequires:  mvn(io.grpc:protoc-gen-grpc-java:exe:linux-aarch_64:)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring::linux-aarch_64:)
BuildRequires:  mvn(io.netty:netty-transport-native-epoll::linux-aarch_64:)
%endif
%ifarch %{ix86}
BuildRequires:  mvn(com.google.protobuf:protoc:exe:linux-x86_32:)
BuildRequires:  mvn(io.grpc:protoc-gen-grpc-java:exe:linux-x86_32:)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring::linux-x86_32:)
BuildRequires:  mvn(io.netty:netty-transport-native-epoll::linux-x86_32:)
%endif
%ifarch s390x
BuildRequires:  mvn(com.google.protobuf:protoc:exe:linux-s390_64:)
BuildRequires:  mvn(io.grpc:protoc-gen-grpc-java:exe:linux-s390_64:)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring::linux-s390_64:)
BuildRequires:  mvn(io.netty:netty-transport-native-epoll::linux-s390_64:)
%endif
%ifarch ppc64le
BuildRequires:  mvn(com.google.protobuf:protoc:exe:linux-ppcle_64:)
BuildRequires:  mvn(io.grpc:protoc-gen-grpc-java:exe:linux-ppcle_64:)
BuildRequires:  mvn(io.netty.incubator:netty-incubator-transport-native-io_uring::linux-ppcle_64:)
BuildRequires:  mvn(io.netty:netty-transport-native-epoll::linux-ppcle_64:)
%endif

%description
Pulsar is a distributed pub-sub messaging platform with a very
flexible messaging model and an intuitive client API.

%package offloaders
Summary:        Pulsar offloader archives
Group:          Productivity/Networking/Web/Servers
Requires:       %{name} = %{version}

%description offloaders
Pulsar is a distributed pub-sub messaging platform with a very
flexible messaging model and an intuitive client API.

This package contains Pulsar offloader archives.

%prep
%autosetup -a1 -p1

%pom_add_dep org.checkerframework:checker-qual:3.22.0:provided pulsar-client
%pom_remove_plugin :maven-enforcer-plugin \
    pulsar-client-all \
    pulsar-client-auth-athenz \
    pulsar-client-auth-sasl .

# we don't need these extensions useful for gradle metadata publication
rm -rf .mvn/develocity-custom-user-data.groovy
rm -rf .mvn/develocity.xml
rm -rf .mvn/extensions.xml

# We don't have slf4j 2.x
%pom_change_dep :log4j-slf4j2-impl :log4j-slf4j-impl \
    buildtools \
    distribution/server \
    distribution/shell \
    pulsar-client-all \
    pulsar-functions/instance \
    pulsar-functions/localrun \
    pulsar-functions/runtime-all \
    structured-event-log
# It makes little sense to be importing the boms
%pom_remove_dep :slf4j-bom . buildtools
%pom_remove_dep :log4j-bom . buildtools

# Generates test resources that we don't need and tries to download from internet
# jars that we will build later on
%pom_remove_plugin :maven-dependency-plugin pulsar-functions/worker pulsar-broker

%pom_remove_dep :netty-resolver-dns-native-macos pulsar-client

sed -i "s|jakarta\.annotation|javax.annotation|g" \
    pulsar-client-admin-shaded/pom.xml \
    pulsar-client-all/pom.xml \
    pulsar-client-shaded/pom.xml \
    pulsar-functions/proto/pom.xml \
    pom.xml

%build
%{mvn_build} -jf -- -Dmaven.repo.local=$(pwd)/maven-repo

mkdir pulsar_home
(cd pulsar_home
    tar --delay-directory-restore -xvf \
        ../distribution/server/target/apache-pulsar-%{version}-bin.tar.gz
    tar --delay-directory-restore -xvf \
        ../distribution/offloaders/target/apache-pulsar-offloaders-%{version}-bin.tar.gz
)

%install
export PULSAR_HOME=$(pwd)/pulsar_home/apache-pulsar-%{version}
export PULSAR_OFFLOADERS_HOME=$(pwd)/pulsar_home/apache-pulsar-offloaders-%{version}

rm $PULSAR_HOME/bin/*.cmd
%ifnarch aarch64
find $PULSAR_HOME -name \*-linux-aarch_64* -print -delete
%endif
%ifnarch x86_64
find $PULSAR_HOME -name \*-linux-x86_64* -print -delete
%endif

install -d -m 0755 %{buildroot}%{homedir}
cp -a $PULSAR_HOME/{bin,conf,examples,instances,lib} %{buildroot}%{homedir}/
xmvn-subst -s -R %{buildroot} -s %{buildroot}%{homedir}
cp -a $PULSAR_OFFLOADERS_HOME/offloaders %{buildroot}%{homedir}/

%files
%dir %{homedir}
%{homedir}/bin
%{homedir}/conf
%{homedir}/examples
%{homedir}/instances
%{homedir}/lib
%license LICENSE NOTICE
%doc CONTRIBUTING.md CONTRIBUTORS.md faq.md README.md SECURITY.md

%files offloaders
%{homedir}/offloaders
%license LICENSE NOTICE

%changelog
openSUSE Build Service is sponsored by