summaryrefslogtreecommitdiff
path: root/gnu/packages/java.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/java.scm')
-rw-r--r--gnu/packages/java.scm99
1 files changed, 99 insertions, 0 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 9e390e2430..b77f0b3b58 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -10048,6 +10048,105 @@ and classes for use in compiling bundles.")
specification, providing dependency resolution for OSGi bundles.")
(license license:asl2.0)))
+(define-public java-felix-framework-7
+ (package
+ (name "java-felix-framework")
+ (version "7.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/apache/felix-dev")
+ (commit (string-append "org.apache.felix.framework-"
+ version))))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file
+ (find-files "." "\\.jar$"))
+ #t))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1w4kdy0m4md2j0nf3shn76v9vxvjqa9sxl4j06bk08yn9icnj72k"))))
+ (build-system ant-build-system)
+ (arguments
+ (list
+ #:tests? #f
+ #:jar-name "org.apache.felix.framework.jar"
+ #:source-dir "framework/src/main/java"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'create-animal-sniffer-stub
+ (lambda _
+ ;; Felix uses this compile-time Maven annotation to suppress
+ ;; JRE compatibility warnings. It has no runtime effect.
+ (mkdir-p "framework/src/main/java/org/codehaus/mojo/animal_sniffer")
+ (call-with-output-file
+ "framework/src/main/java/org/codehaus/mojo/animal_sniffer/IgnoreJRERequirement.java"
+ (lambda (port)
+ (display (string-append
+ "package org.codehaus.mojo.animal_sniffer;\n"
+ "import java.lang.annotation.*;\n"
+ "@Retention(RetentionPolicy.CLASS)\n"
+ "@Target({ElementType.METHOD,"
+ " ElementType.CONSTRUCTOR,"
+ " ElementType.TYPE})\n"
+ "public @interface IgnoreJRERequirement {}\n")
+ port)))))
+ (add-after 'build 'add-service-descriptor-and-resources
+ (lambda _
+ ;; Include the upstream service descriptors and resources that
+ ;; Felix expects in the framework jar.
+ (invoke "jar" "uf" "build/jar/org.apache.felix.framework.jar"
+ "-C" "framework/src/main/resources" "META-INF/services")
+ ;; Felix reads default.properties at startup to determine
+ ;; system packages. The source file uses Maven's ${dollar}
+ ;; placeholder, so replace it here.
+ (substitute* "framework/src/main/resources/default.properties"
+ (("\\$\\{dollar\\}") "$"))
+ (invoke "jar" "uf" "build/jar/org.apache.felix.framework.jar"
+ "-C" "framework/src/main/resources" "default.properties")
+ ;; Compile accessor.src (a java.net.Accessor class used by
+ ;; SecureAction to bypass access controls) and include the
+ ;; compiled bytecode as accessor.bytes.
+ (mkdir-p "build/accessor-src/java/net")
+ (copy-file
+ "framework/src/main/resources/org/apache/felix/framework/util/accessor.src"
+ "build/accessor-src/java/net/Accessor.java")
+ (mkdir-p "build/accessor-out")
+ (invoke "javac"
+ "-d" "build/accessor-out"
+ "build/accessor-src/java/net/Accessor.java")
+ (copy-file "build/accessor-out/java/net/Accessor.class"
+ "build/accessor.bytes")
+ (invoke "jar" "uf" "build/jar/org.apache.felix.framework.jar"
+ "-C" "build"
+ "accessor.bytes")))
+ (add-after 'add-service-descriptor-and-resources
+ 'fix-accessor-path
+ (lambda _
+ ;; accessor.bytes must be at
+ ;; org/apache/felix/framework/util/accessor.bytes
+ (let ((jar "build/jar/org.apache.felix.framework.jar"))
+ (mkdir-p "build/accessor-pkg/org/apache/felix/framework/util")
+ (copy-file "build/accessor.bytes"
+ "build/accessor-pkg/org/apache/felix/framework/util/accessor.bytes")
+ (invoke "jar" "uf" jar
+ "-C" "build/accessor-pkg"
+ "org/apache/felix/framework/util/accessor.bytes"))))
+ (add-before 'install 'create-pom
+ (generate-pom.xml "pom.xml" "org.apache.felix"
+ "org.apache.felix.framework" #$version))
+ (replace 'install (install-from-pom "pom.xml")))))
+ (inputs (list java-osgi-annotation-8.1.0
+ java-osgi-core-8.0.0
+ java-felix-resolver-2))
+ (home-page "https://felix.apache.org/")
+ (synopsis "Apache Felix OSGi framework")
+ (description "Apache Felix is a community effort to implement the OSGi
+Framework and Service platform.")
+ (license license:asl2.0)))
+
(define-public java-osgi-service-component-annotations
(package
(name "java-osgi-service-component-annotations")