Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

org.jruby.exceptions.LoadError: (LoadError) no such file to load on RubyKernel.require, possibly related to Gradle build-cache #628

Open
bric3 opened this issue Oct 17, 2021 · 12 comments
Labels
Milestone

Comments

@bric3
Copy link
Contributor

bric3 commented Oct 17, 2021

For no reason gradle build started to fail with a load error, I don't quite understand what's wrong. I didn't changed anything in the buildscript.

$ ./gradlew build

> Task :2021-11-09-ParisJug-Panama:asciidoctorRevealJs
Exception in thread "main" org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-revealjs
        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:974)
        at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:83)
        at RUBY.<main>(<script>:1)

> Task :2021-11-09-ParisJug-Panama:asciidoctorRevealJs FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':2021-11-09-ParisJug-Panama:asciidoctorRevealJs'.
> Remote Asciidoctor process failed to complete successfully

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4s
2 actionable tasks: 1 executed, 1 up-to-date
$ ./gradlew :2021-11-09-ParisJug-Panama:buildEnvironment

> Task :2021-11-09-ParisJug-Panama:buildEnvironment

------------------------------------------------------------
Project ':2021-11-09-ParisJug-Panama'
------------------------------------------------------------

classpath
\--- org.asciidoctor.jvm.revealjs:org.asciidoctor.jvm.revealjs.gradle.plugin:3.3.2
     \--- org.asciidoctor:asciidoctor-gradle-jvm-slides:3.3.2
          +--- org.ysb33r.gradle:grolifant:0.16.1
          |    \--- org.tukaani:xz:1.6
          +--- org.asciidoctor:asciidoctor-gradle-base:3.3.2
          |    \--- org.ysb33r.gradle:grolifant:0.16.1 (*)
          \--- org.asciidoctor:asciidoctor-gradle-jvm-gems:3.3.2
               +--- org.ysb33r.gradle:grolifant:0.16.1 (*)
               +--- com.github.jruby-gradle:jruby-gradle-core-plugin:2.0.2
               |    +--- org.ysb33r.gradle:grolifant:0.12 -> 0.16.1 (*)
               |    +--- io.github.http-builder-ng:http-builder-ng-okhttp:1.0.3
               |    |    +--- io.github.http-builder-ng:http-builder-ng-core:1.0.3
               |    |    |    +--- xml-resolver:xml-resolver:1.2
               |    |    |    \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25
               |    |    +--- com.squareup.okhttp3:okhttp:3.4.2 -> 3.5.0
               |    |    |    \--- com.squareup.okio:okio:1.11.0
               |    |    \--- com.burgstaller:okhttp-digest:1.10
               |    |         \--- com.squareup.okhttp3:okhttp:3.5.0 (*)
               |    \--- io.ratpack:ratpack-core:1.6.1
               |         +--- io.ratpack:ratpack-exec:1.6.1
               |         |    +--- io.ratpack:ratpack-base:1.6.1
               |         |    |    +--- com.google.guava:guava:21.0
               |         |    |    \--- org.slf4j:slf4j-api:1.7.25
               |         |    +--- org.slf4j:slf4j-api:1.7.25
               |         |    +--- io.netty:netty-buffer:4.1.32.Final
               |         |    |    \--- io.netty:netty-common:4.1.32.Final
               |         |    +--- io.netty:netty-transport-native-epoll:4.1.32.Final
               |         |    |    +--- io.netty:netty-common:4.1.32.Final
               |         |    |    +--- io.netty:netty-buffer:4.1.32.Final (*)
               |         |    |    +--- io.netty:netty-transport-native-unix-common:4.1.32.Final
               |         |    |    |    +--- io.netty:netty-common:4.1.32.Final
               |         |    |    |    \--- io.netty:netty-transport:4.1.32.Final
               |         |    |    |         +--- io.netty:netty-buffer:4.1.32.Final (*)
               |         |    |    |         \--- io.netty:netty-resolver:4.1.32.Final
               |         |    |    |              \--- io.netty:netty-common:4.1.32.Final
               |         |    |    \--- io.netty:netty-transport:4.1.32.Final (*)
               |         |    \--- org.reactivestreams:reactive-streams:1.0.2
               |         +--- io.netty:netty-codec-http:4.1.32.Final
               |         |    \--- io.netty:netty-codec:4.1.32.Final
               |         |         \--- io.netty:netty-transport:4.1.32.Final (*)
               |         +--- io.netty:netty-handler:4.1.32.Final
               |         |    +--- io.netty:netty-buffer:4.1.32.Final (*)
               |         |    +--- io.netty:netty-transport:4.1.32.Final (*)
               |         |    \--- io.netty:netty-codec:4.1.32.Final (*)
               |         +--- com.sun.activation:javax.activation:1.2.0
               |         +--- com.github.ben-manes.caffeine:caffeine:2.6.2
               |         +--- org.javassist:javassist:3.22.0-GA
               |         +--- com.fasterxml.jackson.core:jackson-databind:2.9.8
               |         |    +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0
               |         |    \--- com.fasterxml.jackson.core:jackson-core:2.9.8
               |         +--- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.9.8
               |         |    \--- com.fasterxml.jackson.core:jackson-core:2.9.8
               |         +--- com.fasterxml.jackson.datatype:jackson-datatype-guava:2.9.8
               |         |    +--- com.fasterxml.jackson.core:jackson-core:2.9.8
               |         |    \--- com.fasterxml.jackson.core:jackson-databind:2.9.8 (*)
               |         +--- org.yaml:snakeyaml:1.23
               |         +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.8
               |         |    +--- com.fasterxml.jackson.core:jackson-core:2.9.8
               |         |    \--- com.fasterxml.jackson.core:jackson-databind:2.9.8 (*)
               |         \--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.8
               |              +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0
               |              +--- com.fasterxml.jackson.core:jackson-core:2.9.8
               |              \--- com.fasterxml.jackson.core:jackson-databind:2.9.8 (*)
               \--- org.asciidoctor:asciidoctor-gradle-jvm:3.3.2
                    +--- org.ysb33r.gradle:grolifant:0.16.1 (*)
                    \--- org.asciidoctor:asciidoctor-gradle-base:3.3.2 (*)

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

BUILD SUCCESSFUL in 777ms
1 actionable task: 1 executed
$ ./gradlew --version

------------------------------------------------------------
Gradle 7.0.2
------------------------------------------------------------

Build time:   2021-05-14 12:02:31 UTC
Revision:     1ef1b260d39daacbf9357f9d8594a8a743e2152e

Kotlin:       1.4.31
Groovy:       3.0.7
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          11.0.12 (Amazon.com Inc. 11.0.12+7-LTS)
OS:           Mac OS X 11.6 x86_64
@bric3
Copy link
Contributor Author

bric3 commented Oct 17, 2021

Oh by the way here's the build descriptor

plugins {
    id("org.asciidoctor.jvm.revealjs") version "3.3.2"
}

// keep using the groovy DSL otherwise ruby.gem() will raise an "Unresolved reference"
repositories {
    mavenCentral()
    ruby.gems()
}


// Speaker mode: type `s`
// Fullscreen mode: type `o`
// Fullscreen mode: type `f`


// See https://asciidoctor.github.io/asciidoctor-gradle-plugin/development-3.x/user-guide/#asciidoctorj-revealjs-plugin
revealjs {
    version = "4.1.0" // ruby asciidoctor-revealjs backend
}


asciidoctorRevealJs {
    outputDir("$buildDir/docs")
    baseDirFollowsSourceDir()
    sourceDir("src/docs/asciidoc")
    sources {
        include("index.adoc")
    }
    attributes(
            "sourceDir": "src/docs/asciidoc",
            "imagesDir": "",
            "toc": "left",
            "icons": "font",
            "iconfont-name": "fontawesome-5.8.0",
            // Configurations not available via the `revealjsOptions` block
            // https://revealjs.com/config/
            "revealjs_controlsLayout": "edges", // Determines where controls appear, "edges" or "bottom-right"
            "revealjs_navigationMode": "linear" // Changes to linear navigation (left -right)
    )
    theme("blood") // https://revealjs.com/themes/
    revealjsOptions {
        setControls(true) // Display presentation control arrows
        setSlideNumber("c/t") // Display current over total slide number
        setOverviewMode(true) // Enable the slide overview mode https://revealjs.com/overview/
        setTransition("fade") // Slide transition style (none/fade/slide/convex/concave/zoom)
        setBackgroundTransition("convex") // Transition style for full page slide backgrounds
    }
}


asciidoctorj {
    version("2.5.2")
    fatalWarnings missingIncludes()
    modules {
        diagram.use()
        diagram.setVersion("2.2.1")
    }
}


build.dependsOn(asciidoctorRevealJs)

@bric3
Copy link
Contributor Author

bric3 commented Oct 17, 2021

It seems that asciidoctor-revealjs 4.1.0 is there in toquebox proxy, I believe that's what ruby.gems() declares.

$ curl http://rubygems-proxy.torquebox.org/releases/rubygems/asciidoctor-revealjs/4.1.0/
<!DOCTYPE html>
<html>
  <header>
    <title>gems/maven/releases/rubygems/asciidoctor-revealjs/4.1.0/</title>
  </header>
  <body>
    <h1>Index of gems/maven/releases/rubygems/asciidoctor-revealjs/4.1.0/</h1>
    <hr />
    <a href="..">../</a><br />
    <a href="asciidoctor-revealjs-4.1.0.gem">asciidoctor-revealjs-4.1.0.gem</a><br />
    <a href="asciidoctor-revealjs-4.1.0.gem.sha1">asciidoctor-revealjs-4.1.0.gem.sha1</a><br />
    <a href="asciidoctor-revealjs-4.1.0.pom">asciidoctor-revealjs-4.1.0.pom</a><br />
    <a href="asciidoctor-revealjs-4.1.0.pom.sha1">asciidoctor-revealjs-4.1.0.pom.sha1</a><br />
  <hr />
  </body>
</html>

The .gem file is actually a redirect (status 302) to rubygems.org.

@bric3
Copy link
Contributor Author

bric3 commented Oct 17, 2021

So I recreated a new project. Everything was fine, until the same loading error appeared, stopping the daemons, didn't help.

I noticed this message though just before the loading error started to surface.

$ ./gradlew asciidoctorRevealJs

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 up-to-date
Daemon will be stopped at the end of the build after running out of JVM memory

@ghilainm
Copy link

I have the same issue as you. The problem seems to be linked to the :asciidoctorGemsPrepare tasks. When I do:

./gradlew clean asciidoctorRevealJs --no-build-cache

It always works fine. So it seems to be a cache issue.

@tkrah
Copy link

tkrah commented May 10, 2022

Got the same problem but with the "asciidoctor-lists" gem when using the "asciidoctorPdf" task from the pdf plugin.

Exception in thread "main" org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-lists
        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:974)
        at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54)
        at RUBY.<main>(<script>:1)

So it is some general problem, not related to revealjs itself.

build.gradle snippet:

plugins {
	id 'base'
	id 'org.asciidoctor.jvm.convert'
	id 'org.asciidoctor.jvm.pdf'
	id 'org.asciidoctor.jvm.gems'
}

repositories {
  ruby.gems()
  // https://github.com/jruby-gradle/jruby-gradle-plugin/issues/429
}
dependencies {
	asciidoctorGems 'rubygems:rouge:3.26.1'
	asciidoctorGems 'rubygems:asciidoctor-lists:1.0.7'
}

asciidoctorPdf {
	sourceDir = project(":docs").file("src/docs/toc")
	dependsOn asciidoctorGemsPrepare
	baseDirFollowsSourceDir()


	sources {
		include 'TOC_Example.adoc'
	}

	pdfThemes {
		local 'TOC', {
			themeDir = project(":docs").file("src/docs/themes")
			themeName = 'TOC'
		}
	}

	theme 'TOC'

	asciidoctorj {
		requires 'rouge'
		requires 'asciidoctor-lists'
		attributes = (pdfAttributes << [
				'description'                : 'Beschreibung')
	}

	inputs.dir(project(":docs").file("src/docs/toc"))
	inputs.dir(project(":docs").file("src/docs/themes"))
	outputs.dir("build/docs/asciidocPdf/")
	outputs.upToDateWhen { file("build/docs/asciidocPdf/TOC_Example.pdf").exists() }
}

Using --no-build-cache it always works, @bric3 maybe you can adjust the subject to some more general problem or should I open another ticket with basically the same problem, just another package name?

@bric3
Copy link
Contributor Author

bric3 commented May 10, 2022

@tkrah I will change the title. Thanks for reporting as well.
That's good to have a work around.

@bric3 bric3 changed the title org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-revealjs org.jruby.exceptions.LoadError: (LoadError) no such file to load on RubyKernel.require, possibly related to Gradle build-cache May 10, 2022
@ysb33r ysb33r added this to the 4.0.0 milestone Dec 31, 2022
@ysb33r ysb33r added the bug label Dec 31, 2022
@diguage
Copy link

diguage commented Jun 28, 2023

I have the same issue as you. The problem seems to be linked to the :asciidoctorGemsPrepare tasks. When I do:

./gradlew clean asciidoctorRevealJs --no-build-cache

It always works fine. So it seems to be a cache issue.

The param works well. Thanks.

ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 3, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 4, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugsin were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 4, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugins were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Known issues:

- Supplying an extension via a configuration rather than via
  `docExtensions` does not work.
- GEM resolver test on Windows is failing.

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 4, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugins were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Known issues:

- Supplying an extension via a configuration rather than via
  `docExtensions` does not work.
- GEM resolver test on Windows is failing.

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 4, 2024
This release filly integrates with Grolifant 2.2 and adopts the
newer JVM execution models to. This allows for better integration
with Gradle workers. THis has been so successful that the default
execution model is no a worker with classpath isolation as previously
it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugins were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created

Known issues:

- Supplying an extension via a configuration rather than via
  `docExtensions` does not work.
- GEM resolver test on Windows is failing.

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
ysb33r added a commit that referenced this issue Jan 4, 2024
This prepares 4.0.0 final release. It fully integrates with Grolifant 2.2
and adopts the newer JVM execution models too, whichs allows for better
integration with Gradle workers. This has been so successful that the
default execution model is no a worker with classpath isolation as
previously it always has been javaexec.

JRuby: jruby-gradle plugin has been replaced with jruby-simple-plugin.
  This eliminates a number of issues with the previous plugin in
  terms of functionality and compatibiliy. It also restores
  plugin compatibility with JDK8 whereas the older plugin requires
  JDK11.

GEMs: The issues with load errors for external GEMs has been
  resolved, but eliminating the use of GEM_PATH and rather
  compiling a custom GEM Jar on the fly and placing it on the
  classpath.

Disabled plugins: Some plugins were disabled for this
  release and will probably be fixed for future releases. Due to
  their limited usage, it was thought better to get a release out
  now and fix these later. The plugins are:

  - Leanpub
  - Slides
  - Slides export

Other:

- `asciidoctorEditorConfig` is now lazy-created
- Update to NodeJs plugin 2.0.1
- Remove most deprecated Grolifant 2.0 APIs

Known issues:

- Supplying an extension via a configuration rather than via
  `docExtensions` does not work.
- GEM resolver test on Windows is failing.
- Asciidotor.convertFile. Curretnly the Asciidoctor API does not
  allow for inspection of the Option object and the old Map methods
  are all deprecated.

Closes: #628, #626, #655, #658, #664, #671, #673, #684, i#692, #693
@ysb33r ysb33r closed this as completed Jan 4, 2024
@tkrah
Copy link

tkrah commented Jan 15, 2024

@ysb33r - tried 4.0.1 and this still fails:


* What went wrong:
Execution failed for task ':KonfHb:asciidoctorPdf'.
> A failure occurred while executing org.ysb33r.grolifant.internal.v6.jvm.worker.InternalWorkerAppExecutor
   > org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-lists

So imho this one is not fixed - even more worse, the workaround with "--no-build-cache" does not work anymore - so the whole build is broken now with anything greater than alpha1.

@bric3 can you reopen this one maybe?

last part of the stacktrace acquired with --stacktrace option:

Caused by: org.ysb33r.grolifant.api.remote.worker.WorkerExecutionException: org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-lists
        at org.ysb33r.grolifant.internal.v6.jvm.worker.InternalWorkerAppExecutor.execute(InternalWorkerAppExecutor.groovy:39)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
        at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48)
        at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49)
        at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30)
        at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.lambda$execute$0(IsolatedClassloaderWorkerFactory.java:57)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
        at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:49)
        at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:170)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
        at org.gradle.internal.Factories$1.create(Factories.java:31)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:133)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
        ... 2 more
Caused by: org.jruby.exceptions.LoadError: (LoadError) no such file to load -- asciidoctor-lists
        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1017)
        at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:85)
        at RUBY.<main>(<script>:1)

@ysb33r ysb33r reopened this Jan 15, 2024
@ysb33r
Copy link
Member

ysb33r commented Jan 15, 2024

Is this specific to Build cache?

@tkrah
Copy link

tkrah commented Jan 15, 2024

I don't know the real underlying cause - we just discovered that using "-no-build-cache" was a working workaround running 3.x or 4.0.0-alpha1.
With 4.0.1 that workaround does not work anymore and it does not matter if build-cache is enabled or not, it fails now with the LoadError in any case.

The files are at least prepared with the gemPrepare task in the build directory:

./KonfHb/build/.asciidoctorGems/cache/asciidoctor-lists-1.0.9.gem
./KonfHb/build/.asciidoctorGems/specifications/asciidoctor-lists-1.0.9.gemspec
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/lib
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/lib/asciidoctor-lists.rb
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/lib/asciidoctor-lists
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/lib/asciidoctor-lists/version.rb
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/lib/asciidoctor-lists/extensions.rb
./KonfHb/build/.asciidoctorGems/gems/asciidoctor-lists-1.0.9/README.adoc

I am not sure why jruby does fail to load them - maybe looking in the wrong place? There are no useful debug messages in the gradle debug output to give some better hints.

@tkrah
Copy link

tkrah commented Jan 15, 2024

@ysb33r I made some progress after digging through the code - with 4.0.1 it does build successfully if I change this in my build file:

+       withGemJar 'asciidoctorGemsJar'
        sourceDir = project(":docs").file("src/docs/KonfHb")
-       dependsOn asciidoctorGemsPrepare
+       dependsOn asciidoctorGemsPrepare, asciidoctorGemsJar

After that it is working just with a simple "gradle clean build" - nice. Sorry for the noise, but the latest docs from https://asciidoctor.github.io/asciidoctor-gradle-plugin/development-3.x/user-guide/ does not mention the withGemJar thingy and this ticket also did not mention it, but if I add it, it is working - is this expected? Do I have to add it to each of my asciidoctorPdf extensions or should this be done out-of-the-box from the plugin?

@ysb33r
Copy link
Member

ysb33r commented Jan 16, 2024

No problem. We are trying to get the documentation pipeline fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants