Bug#918437: ring-clojure: FTBFS randomly due to filesystem ordering

Santiago Vila sanvila at debian.org
Sun Jan 6 00:34:12 GMT 2019


Package: src:ring-clojure
Version: 1.6.2-1
Severity: serious
Tags: ftbfs

Dear maintainer:

I tried to build this package in buster but it failed:

--------------------------------------------------------------------------------
[...]
 debian/rules build-indep
dh build-indep --with javahelper --with maven_repo_helper
   dh_update_autotools_config -i
   dh_autoreconf -i
   jh_linkjars -i
   debian/rules override_jh_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
jar cf ring-core.jar -C ring-core/src .
jar cf ring-servlet.jar -C ring-servlet/src .
jar cf ring-jetty-adapter.jar -C ring-jetty-adapter/src .
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   debian/rules override_dh_auto_test
make[1]: Entering directory '/<<PKGBUILDDIR>>'
find ring-core/test -name '*.clj' | \
	xargs --verbose clojure -cp ring-core.jar:/usr/share/java/clojure.jar:/usr/share/java/tools.reader.jar:/usr/share/java/ring-codec.jar:/usr/share/java/commons-io.jar:/usr/share/java/commons-fileupload.jar:/usr/share/java/clj-time.jar:/usr/share/java/crypto-random.jar:/usr/share/java/crypto-equality.jar
clojure -cp ring-core.jar:/usr/share/java/clojure.jar:/usr/share/java/tools.reader.jar:/usr/share/java/ring-codec.jar:/usr/share/java/commons-io.jar:/usr/share/java/commons-fileupload.jar:/usr/share/java/clj-time.jar:/usr/share/java/crypto-random.jar:/usr/share/java/crypto-equality.jar ring-core/test/ring/middleware/multipart_params/test/request_context.clj ring-core/test/ring/middleware/multipart_params/test/temp_file.clj ring-core/test/ring/middleware/multipart_params/test/byte_array.clj ring-core/test/ring/middleware/session/test/memory.clj ring-core/test/ring/middleware/session/test/cookie.clj ring-core/test/ring/middleware/test/session.clj ring-core/test/ring/middleware/test/flash.clj ring-core/test/ring/middleware/test/keyword_params.clj ring-core/test/ring/middleware/test/multipart_params.clj ring-core/test/ring/middleware/test/file_info.clj ring-core/test/ring/middleware/test/nested_params.clj ring-core/test/ring/middleware/test/params.clj ring-core/test/ring/middleware/test/file.clj ring-core/test/ring/middleware/test/head.clj ring-core/test/ring/middleware/test/content_type.clj ring-core/test/ring/middleware/test/resource.clj ring-core/test/ring/middleware/test/cookies.clj ring-core/test/ring/middleware/test/not_modified.clj ring-core/test/ring/util/test/time.clj ring-core/test/ring/util/test/mime_type.clj ring-core/test/ring/util/test/io.clj ring-core/test/ring/util/test/request.clj ring-core/test/ring/util/test/response.clj ring-core/test/ring/core/test/protocols.clj 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest, compiling:(ring/middleware/multipart_params.clj:54:20)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7010)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6102)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6420)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2822)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.access$300(Compiler.java:38)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6368)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6104)
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5460)
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:4022)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7001)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.access$300(Compiler.java:38)
	at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:596)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler.eval(Compiler.java:7066)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.RT.loadResourceScript(RT.java:379)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.load(RT.java:460)
	at clojure.lang.RT.load(RT.java:426)
	at clojure.core$load$fn__9115.invoke(core.clj:6046)
	at clojure.core$load.invokeStatic(core.clj:6045)
	at clojure.core$load.doInvoke(core.clj:6029)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5848)
	at clojure.core$load_one.invoke(core.clj:5843)
	at clojure.core$load_lib$fn__9060.invoke(core.clj:5888)
	at clojure.core$load_lib.invokeStatic(core.clj:5887)
	at clojure.core$load_lib.doInvoke(core.clj:5868)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$load_libs.invokeStatic(core.clj:5925)
	at clojure.core$load_libs.doInvoke(core.clj:5909)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$require.invokeStatic(core.clj:5947)
	at clojure.core$require.doInvoke(core.clj:5947)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at ring.middleware.multipart_params.test.request_context$eval2694$loading__9001__auto____2695.invoke(request_context.clj:1)
	at ring.middleware.multipart_params.test.request_context$eval2694.invokeStatic(request_context.clj:1)
	at ring.middleware.multipart_params.test.request_context$eval2694.invoke(request_context.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7062)
	at clojure.lang.Compiler.eval(Compiler.java:7051)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.Compiler.loadFile(Compiler.java:7452)
	at clojure.main$load_script.invokeStatic(main.clj:278)
	at clojure.main$script_opt.invokeStatic(main.clj:338)
	at clojure.main$script_opt.invoke(main.clj:333)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
	at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3167)
	at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3192)
	at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3198)
	at java.base/java.lang.Class.getMethods(Class.java:1905)
	at clojure.lang.Reflector.getMethods(Reflector.java:373)
	at clojure.lang.Compiler$InstanceMethodExpr.<init>(Compiler.java:1482)
	at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:1024)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	... 74 more
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 83 more
make[1]: *** [debian/rules:18: override_dh_auto_test] Error 123
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:10: build-indep] Error 2
dpkg-buildpackage: error: debian/rules build-indep subprocess returned exit status 2
--------------------------------------------------------------------------------

This happens because the "find path | xargs clojure" construction which was common
in many clojure packages is prone to error as its success or not depends critically
on the output order of the find command.

Cyril Brulebois has already fixed several similar packages so I'm just Cc:ing him.

Thanks.



More information about the pkg-java-maintainers mailing list