This is an automated email from the ASF dual-hosted git repository. houston pushed a commit to branch jira/solr-15556-antora in repository https://gitbox.apache.org/repos/asf/solr.git
commit d6a2318bc232b8a531b09a875d733092497831ff Author: Houston Putman <[email protected]> AuthorDate: Wed Feb 2 19:10:35 2022 -0500 Remove jekyll from ref-guide build. Can revert if need be. --- gradle/validation/ecj-lint.gradle | 8 -- solr/solr-ref-guide/build.gradle | 282 ++------------------------------------ versions.lock | 28 +--- versions.props | 4 +- 4 files changed, 16 insertions(+), 306 deletions(-) diff --git a/gradle/validation/ecj-lint.gradle b/gradle/validation/ecj-lint.gradle index 0a7b044..8c72f9d 100644 --- a/gradle/validation/ecj-lint.gradle +++ b/gradle/validation/ecj-lint.gradle @@ -102,11 +102,3 @@ allprojects { check.dependsOn ecjLint } } - -// This excludes solr-ref-guide from the check (excludes are not taken into account -// and linting of the ant-based task fails. -configure(project(":solr:solr-ref-guide")) { - afterEvaluate { - project.tasks.findByPath("ecjLintMain").enabled = false - } -} diff --git a/solr/solr-ref-guide/build.gradle b/solr/solr-ref-guide/build.gradle index 10d47f2..1151b72 100644 --- a/solr/solr-ref-guide/build.gradle +++ b/solr/solr-ref-guide/build.gradle @@ -17,40 +17,25 @@ import org.apache.tools.ant.util.TeeOutputStream -buildscript { - repositories { - mavenCentral() - jcenter() - } - - dependencies { - classpath "org.asciidoctor:asciidoctorj:2.5.1" - } -} - plugins { - id 'java' - id 'com.github.jruby-gradle.base' version '2.0.1' id "com.github.node-gradle.node" version "3.1.1" } -// This project does not contribute anything to main dependencies. -versionsLock { - testProject() -} +description = 'Solr Reference Guide' -description = 'Solr reference guide' +// TODO document these properties in help +// TODO Maybe split official and local into separate tasks instead of using a property to switch. +// This is possible now that we own the antora build process. +def isLocalGuide = propertyOrEnvOrDefault("refguide.local", "REFGUIDE_LOCAL", "true").toBoolean() -// Use an internal proxy to ruby gems. -repositories { - ruby.gems() +// Attach building the ref guide to standard convention tasks. This +// can be optionally turned off (see SOLR-15670). +if (propertyOrEnvOrDefault('refguide.include', 'SOLR_REF_GUIDE_INCLUDE', "true").toBoolean()) { + check.dependsOn 'checkSiteLinks' + assemble.dependsOn 'buildSite' } -// TODO document these properties in help -def isLocalGuide = propertyOrEnvOrDefault("refguide.local", "REFGUIDE_LOCAL", "true").trim().toLowerCase().startsWith("t") - configurations { - depVer refGuide officialPlaybook localPlaybook @@ -60,251 +45,10 @@ configurations { } dependencies { - // Dependencies to compile internal tools. - implementation('org.asciidoctor:asciidoctorj') - implementation('com.vaadin.external.google:android-json') - implementation('org.jsoup:jsoup') - implementation('org.slf4j:jcl-over-slf4j') - implementation('org.slf4j:slf4j-simple') - implementation('org.apache.logging.log4j:log4j-core') - implementation('com.google.guava:guava') { transitive = false } - implementation('commons-codec:commons-codec') - - // Dependencies referenced in the guide. - depVer('commons-codec:commons-codec') - depVer('io.dropwizard.metrics:metrics-core') - depVer('org.apache.logging.log4j:log4j-core') - depVer('org.apache.opennlp:opennlp-tools') - depVer('org.apache.tika:tika-core') - depVer('org.apache.zookeeper:zookeeper') - - // jekyll dependencies: we cannot use jekyll >=4, as this version uses native lib - // ("sassc" instead of deprecated "sass") which fails to compile on some platforms. - // See https://issues.apache.org/jira/browse/SOLR-15520 for more details. - gems 'rubygems:jekyll:3.9.1' - gems 'rubygems:jekyll-asciidoc:3.0.0' - - // don't know why we have to explicitly add these deps but it doesn't resolve them - // automatically. - gems 'rubygems:tilt:2.0.10' - gems 'rubygems:slim:4.1.0' - gems 'rubygems:concurrent-ruby:1.1.9' - gems 'rubygems:http_parser.rb:0.6.0' - localPlaybook project(path: ":solr:documentation", configuration: 'javadocs') localPlaybook project(path: ":solr:documentation", configuration: 'site') } -sourceSets { - refGuide { - java { - srcDirs = [] - } - resources { - srcDirs = ['src'] - } - } - - main { - java { - srcDirs = ['tools'] - } - } - - test { - java { - srcDirs = [] - } - } -} - -ext { - mainPage = "index" - - // the "MAJOR.MINOR" version of solr this guide is about (guides aren't specific to BUGFIX releases) - // So on 'branch_9_9' where 'version' may be 9.9.0, 9.9.1, 9.9.9, etc..; solrDocsVersion = 9.9 - solrDocsVersion = "${version}".replaceAll(/^(\d+\.\d+)(|\..*)$/, "\$1") - - // the "MAJOR_MINOR" version as a path for publishing the guide - // So on 'branch_9_9' where solrDocsVersion = 9.9; solrGuideVersionPath => 9_9 - solrGuideVersionPath = "${solrDocsVersion}".replaceAll(/^(\d+)\.(\d+)$/, "\$1_\$2") - - // these will be used to dynamically build up (nearly) identical tasks with consistent names - // for building & link checking the ref guide. One using absolute URLs to javadocs, the - // other using local paths that can be validated by the link checker. - htmlSiteDetails = - [name: 'Site', - path: 'html-site', - desc: 'HTML Site for publishing to the Solr website', - props: [ - htmlSolrJavadocs: "https://solr.apache.org/docs/${solrGuideVersionPath}_0/", - htmlLuceneJavadocs: project(':solr:documentation').luceneDocUrl - ] - ] - linkCheckSiteDetails = - [name: 'LocalJavadocLinksSite', - path: 'local-jdoc-links-site', - desc: 'Local Site for checking javadoc links', - - // NOTE: extra '../' because we'll in a sub-dir of buildDir that will be built later... - props: [ - htmlSolrJavadocs : 'link:../' + buildDir.toPath().relativize(project(':solr:documentation').docroot.toPath()).toString().replace(File.separator, '/'), - htmlLuceneJavadocs : 'link:../' + buildDir.toPath().relativize(project(':solr:documentation').luceneDocsDir.toPath()).toString().replace(File.separator, '/'), - ] - - // TODO: (see full discussion in SOLR-15265) - // Ref guide build should really depend on those javadocs it links to - then there would be no awkwardness and, ideally, - // you could just sync the resources you need into the final structure (that's why I declared javadocs as an artifact). - // This does entail some duplication (syncing between folders) but if it's reused in different places then it's fine. - ] -} - -// dynamically define the 2 variations of each target that we need... -[ htmlSiteDetails, linkCheckSiteDetails ].each{ details -> - final def contentDir = file("${buildDir}/${details.path}-content") - final def htmlDir = file("${buildDir}/${details.path}") - - tasks.create("prepare${details.name}Sources", PrepareSources) { - // configure task properties. - srcDir.set(project.sourceSets.refGuide.resources.srcDirs.first()) - outDir.set(contentDir) - - // Set these dependency versions as lazy gstrings so that they're resolved after evaluation. - def dependencyProps = [ - ["ivyCommonsCodec", "commons-codec", "commons-codec"], - ["ivyDropwizardMetrics", "io.dropwizard.metrics", "metrics-core"], - ["ivyHadoop", "org.apache.hadoop", "hadoop-auth"], - ["ivyLog4j", "org.apache.logging.log4j", "log4j-core"], - ["ivyOpennlpTools", "org.apache.opennlp", "opennlp-tools"], - ["ivyTika", "org.apache.tika", "tika-core"], - ["ivyZookeeper", "org.apache.zookeeper", "zookeeper"], - ].collectEntries { propKey, depGroup, depId -> [propKey, "${ -> project.getVersion(depGroup, depId) }"] } - - props.putAll([ - htmlOutDir: "../${details.path}", - javadocLink : "https://docs.oracle.com/en/java/javase/11/docs/api/java.base/", - solrGuideDraftStatus : propertyOrDefault('solrGuideDraft', "true").toBoolean() ? "DRAFT" : "", - solrRootPath : project(':solr').projectDir.toString() + File.separator, - solrDocsVersion : project.ext['solrDocsVersion'], - solrGuideVersionPath : project.ext['solrGuideVersionPath'], - solrFullVersion: project.version, - buildDate : rootProject.ext['buildDate'], - buildYear : rootProject.ext['buildYear'], - * : details.props, - * : dependencyProps - ]) - } - - task "build${details.name}"(type: com.github.jrubygradle.JRubyExec) { - dependsOn "prepare${details.name}Sources" - group "Documentation" - description "Builds the ${details.desc}" - - outputs.cacheIf { true } - inputs.dir contentDir - outputs.dir htmlDir - - script 'jekyll' - scriptArgs 'build' //, '--verbose' - workingDir contentDir - } - - task "check${details.name}"(type: JavaExec) { - dependsOn "build${details.name}" - - classpath = sourceSets.main.runtimeClasspath - main = 'org.apache.solr.guide.CheckLinksAndAnchors' - workingDir = contentDir - - // NOTE: even for the 'real' site, we check all relative links - // (there will just be less of them, and this way any stray hardcoded - // '../../' paths can be caught more easily) - args([ htmlDir, "-check-all-relative-links" ]) - } -} - -// Hook in our dependency on all top level documentation in order to check local javadoc links -checkLocalJavadocLinksSite.dependsOn ':documentation' - -// Attach building the ref guide to standard convention tasks. This -// can be optionally turned off (see SOLR-15670). -if (propertyOrEnvOrDefault('refguide.include', 'SOLR_REF_GUIDE_INCLUDE', "true").toBoolean()) { - check.dependsOn checkLocalJavadocLinksSite, checkSite - assemble.dependsOn buildSite -} - -@CacheableTask -abstract class PrepareSources extends DefaultTask { - // Original Source files we'll be syncing <b>FROM</b> - @InputDirectory - @PathSensitive(PathSensitivity.RELATIVE) - abstract DirectoryProperty getSrcDir() - - // Destination folder. - @OutputDirectory - abstract DirectoryProperty getOutDir() - - /** - * Task specific props (lazy provider) - */ - @Input - abstract MapProperty<String, String> getProps() - - public PrepareSources() { - // setup 'dependsOn classes, configurations.depVer' here - // so that it's not necessary for every task impl to declare redundantly - final Project p = getProject() - dependsOn(p.getConfigurations().getByName('depVer')) - dependsOn(p.getTasksByName('classes', false)) - } - - @TaskAction - public void doCopy() { - final Project p = getProject(); - - // Make a local copy we'll be modifying. - final def props = this.props.get() - - final File intoDir = this.outDir.asFile.get(); - - // Emit info about properties for clarity. - logger.lifecycle('Syncing source files to {} using props:\n{}', - intoDir, props.collect({ k, v -> " ${k} -> ${v}" }).join('\n')) - - // Escape all the properties, so they can be inserted into YAML templates. - final def escapedProps = props.collectEntries{k, v -> [k, v.replace("'","''")]} - - def sourceDir = srcDir.get() - - final WorkResult syncResult = p.sync({ copySpec -> - copySpec.setFilteringCharset('UTF-8'); - copySpec.from(sourceDir, { raw -> - raw.exclude('**/*.template') - }) - - copySpec.from(sourceDir, { templated -> - templated.include('**/*.template') - templated.rename('(.+)\\.template', '$1') - templated.expand(escapedProps) - }) - copySpec.into(intoDir); - }) - - setDidWork(syncResult.getDidWork()); - if (syncResult.getDidWork()) { - // if sync did work, that means we need to rebuild the nav data files... - p.javaexec({ execSpec -> - execSpec.setClasspath( getProject().getConvention() - .getPlugin(JavaPluginConvention.class) - .getSourceSets().getByName("main").getRuntimeClasspath() ) - execSpec.setWorkingDir( intoDir ) - execSpec.setMain( 'org.apache.solr.guide.BuildNavDataFiles' ) - execSpec.args([ intoDir, p.property('mainPage') ]) - }) - } - } -} - ext { antoraVersion = "3.0.1" rootNodeDir = "${project.rootDir}/.gradle/node" @@ -462,7 +206,7 @@ task downloadLinkValidator(type: NpmTask) { outputs.dir("${project.ext.nodeProjectDir}/node_modules/") } -task buildSiteNew(type: NpxTask) { +task buildSite(type: NpxTask) { dependsOn tasks.downloadAntoraSiteGenerator dependsOn tasks.buildAntoraYaml dependsOn configurations.playbookInUse @@ -493,9 +237,9 @@ task buildSiteNew(type: NpxTask) { outputs.dir(project.ext.siteDir) } -task validateSiteLinks(type: NpxTask) { +task checkSiteLinks(type: NpxTask) { dependsOn tasks.downloadLinkValidator - dependsOn tasks.buildSiteNew + dependsOn tasks.buildSite command = "link-checker" args = [ diff --git a/versions.lock b/versions.lock index b34eb07..8f8040c 100644 --- a/versions.lock +++ b/versions.lock @@ -226,7 +226,7 @@ org.ow2.asm:asm-commons:7.2 (1 constraints: 6b0f7267) org.quicktheories:quicktheories:0.26 (1 constraints: dc04f530) org.reactivestreams:reactive-streams:1.0.3 (3 constraints: 3c2b02fd) org.slf4j:jcl-over-slf4j:1.7.24 (1 constraints: 4005473b) -org.slf4j:slf4j-api:1.7.24 (22 constraints: 9c20c409) +org.slf4j:slf4j-api:1.7.24 (21 constraints: 9a1600f5) org.tallison:jmatio:1.5 (1 constraints: aa041f2c) org.threeten:threetenbp:1.5.0 (4 constraints: f82b9e86) org.tukaani:xz:1.8 (1 constraints: ad04222c) @@ -261,7 +261,6 @@ com.amazonaws:aws-java-sdk-core:1.12.15 (2 constraints: 501a5183) com.amazonaws:aws-java-sdk-kms:1.12.15 (1 constraints: d60cb42a) com.amazonaws:aws-java-sdk-s3:1.12.15 (1 constraints: e0125c30) com.amazonaws:jmespath-java:1.12.15 (2 constraints: 501a5183) -com.beust:jcommander:1.35 (1 constraints: b50c1901) com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.12.3 (2 constraints: 5e1c0ef1) com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.3 (2 constraints: a519c412) com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.3 (2 constraints: 0724ba81) @@ -269,20 +268,8 @@ com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3 (3 constraints: 75 com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.3 (2 constraints: 2326f760) com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3 (2 constraints: a41dd15f) com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.3 (2 constraints: 0724ba81) -com.github.jnr:jffi:1.2.18 (1 constraints: b20902ab) -com.github.jnr:jnr-constants:0.9.12 (4 constraints: ed2c9d5d) -com.github.jnr:jnr-enxio:0.19 (2 constraints: 2a167d08) -com.github.jnr:jnr-netdb:1.1.6 (1 constraints: 7e0952a1) -com.github.jnr:jnr-posix:3.0.49 (2 constraints: f0161b5b) -com.github.jnr:jnr-unixsocket:0.20 (1 constraints: 4a09d497) com.github.stephenc.jcip:jcip-annotations:1.0-1 (2 constraints: c5188bde) com.google.cloud:google-cloud-nio:0.122.11 (1 constraints: 99053046) -com.headius:backport9:1.1 (1 constraints: 1a098c8e) -com.headius:invokebinder:1.11 (1 constraints: 4b09d797) -com.headius:modulator:1.0 (1 constraints: 19098b8e) -com.headius:options:1.4 (1 constraints: 1d098f8e) -com.jcraft:jzlib:1.1.3 (1 constraints: 7b094fa1) -com.martiansoftware:nailgun-server:0.9.1 (1 constraints: 800960a1) com.nimbusds:content-type:2.1 (1 constraints: d70b67eb) com.nimbusds:lang-tag:1.4.4 (1 constraints: 3b0cb803) com.nimbusds:nimbus-jose-jwt:9.6.1 (1 constraints: 420ce303) @@ -291,7 +278,6 @@ com.squareup.okhttp3:mockwebserver:4.9.1 (1 constraints: c40ebd62) com.squareup.okhttp3:okhttp:4.9.1 (1 constraints: 3d0f4f6d) com.squareup.okio:okio:2.8.0 (1 constraints: 540c39fd) com.sun.jersey:jersey-servlet:1.19 (1 constraints: df04fa30) -com.vaadin.external.google:android-json:0.0.20131108.vaadin1 (1 constraints: 34092a9e) io.github.microutils:kotlin-logging:2.0.6 (1 constraints: be0e9d62) io.github.microutils:kotlin-logging-jvm:2.0.6 (1 constraints: 810f877c) io.micrometer:micrometer-core:1.5.14 (1 constraints: fc161b19) @@ -302,7 +288,7 @@ jakarta.servlet:jakarta.servlet-api:4.0.4 (1 constraints: 961568b9) jakarta.websocket:jakarta.websocket-api:1.1.2 (1 constraints: 92155ab9) jakarta.xml.bind:jakarta.xml.bind-api:2.3.2 (1 constraints: 30198ba6) javax.inject:javax.inject:1 (1 constraints: 7a0df617) -joda-time:joda-time:2.9.9 (2 constraints: 0317195a) +joda-time:joda-time:2.9.9 (2 constraints: 8f124433) net.bytebuddy:byte-buddy:1.10.20 (2 constraints: 7c10a9d0) net.minidev:accessors-smart:1.2 (1 constraints: e60926a4) net.minidev:json-smart:2.3 (1 constraints: ae0de552) @@ -316,8 +302,6 @@ org.apache.kerby:kerb-identity:1.0.1 (1 constraints: 5f0cb602) org.apache.kerby:kerb-server:1.0.1 (1 constraints: d10b65f2) org.apache.kerby:kerb-simplekdc:1.0.1 (1 constraints: dc0d7e3e) org.apache.logging.log4j:log4j-1.2-api:2.17.1 (1 constraints: 3d05453b) -org.asciidoctor:asciidoctorj:1.6.2 (1 constraints: 0b050436) -org.asciidoctor:asciidoctorj-api:1.6.2 (1 constraints: e30cfb0d) org.freemarker:freemarker:2.3.31 (1 constraints: ef0e9271) org.glassfish:jakarta.el:3.0.3 (1 constraints: 941562b9) org.hdrhistogram:HdrHistogram:2.1.12 (1 constraints: 520d2029) @@ -328,18 +312,10 @@ org.jetbrains.kotlin:kotlin-stdlib:1.4.32 (7 constraints: 4168b6de) org.jetbrains.kotlin:kotlin-stdlib-common:1.4.32 (3 constraints: b92a7abb) org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10 (1 constraints: dd10ebd2) org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10 (1 constraints: 650f967c) -org.jruby:dirgra:0.3 (1 constraints: 1b098b8e) -org.jruby:jruby:9.2.6.0 (1 constraints: 490d7d28) -org.jruby:jruby-core:9.2.6.0 (1 constraints: 0f08b57d) -org.jruby:jruby-stdlib:9.2.6.0 (1 constraints: 0f08b57d) -org.jruby.jcodings:jcodings:1.0.41 (2 constraints: e3124361) -org.jruby.joni:joni:2.1.25 (1 constraints: b00903ab) -org.jsoup:jsoup:1.12.1 (1 constraints: 3705303b) org.latencyutils:LatencyUtils:2.0.3 (1 constraints: 210dcd1b) org.mockito:mockito-core:3.8.0 (1 constraints: 0d051236) org.objenesis:objenesis:3.1 (2 constraints: 5b0ff979) org.slf4j:jul-to-slf4j:1.7.24 (1 constraints: 801632ff) -org.slf4j:slf4j-simple:1.7.24 (1 constraints: 4005473b) org.springframework:spring-aop:5.2.15.RELEASE (2 constraints: 32232d90) org.springframework:spring-beans:5.2.15.RELEASE (4 constraints: 5843b908) org.springframework:spring-context:5.2.15.RELEASE (2 constraints: c3236acf) diff --git a/versions.props b/versions.props index b9409cf..66d5270 100644 --- a/versions.props +++ b/versions.props @@ -46,7 +46,6 @@ com.pff:java-libpst=0.8.1 com.rometools:*=1.12.2 com.sun.jersey:*=1.19 com.tdunning:t-digest=3.1 -com.vaadin.external.google:android-json=0.0.20131108.vaadin1 commons-cli:commons-cli=1.4 commons-codec:commons-codec=1.13 commons-collections:commons-collections=3.2.2 @@ -63,6 +62,7 @@ io.opentracing:*=0.33.0 io.prometheus:*=0.2.0 io.sgr:s2-geometry-library-java=1.0.0 javax.servlet:javax.servlet-api=3.1.0 +joda-time:joda-time=2.9.9 junit:junit=4.13.1 net.arnx:jsonic=1.2.7 net.bytebuddy:byte-buddy=1.9.3 @@ -98,7 +98,6 @@ org.apache.tika:*=1.27 org.apache.xmlbeans:xmlbeans=3.1.0 org.apache.zookeeper:*=3.7.0 org.apiguardian:apiguardian-api=1.1.0 -org.asciidoctor:asciidoctorj=1.6.2 org.aspectj:aspectjrt=1.8.0 org.bitbucket.b_c:jose4j=0.7.7 org.bouncycastle:*=1.69 @@ -116,7 +115,6 @@ org.hamcrest:*=2.2 org.hsqldb:hsqldb=2.4.0 org.jctools:jctools-core=3.3.0 org.jdom:jdom2=2.0.6 -org.jsoup:jsoup=1.12.1 org.locationtech.spatial4j:*=0.7 org.mockito:mockito-core=3.8.0 org.objenesis:objenesis=2.6
