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

Local publication requires "remote" JAR signing #1173

Closed
khatchad opened this issue Dec 22, 2022 · 24 comments
Closed

Local publication requires "remote" JAR signing #1173

khatchad opened this issue Dec 22, 2022 · 24 comments
Assignees
Labels
bug gradle WALA’s Gradle build system wontfix

Comments

@khatchad
Copy link
Contributor

khatchad commented Dec 22, 2022

Installing WALA to the local maven repo fails on at least on 3c2db2d:

$ ./gradlew publishToMavenLocal
> Task :com.ibm.wala.cast.js.rhino:signRemotePublication FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':com.ibm.wala.cast.js.rhino:signRemotePublication'.
> Cannot perform signing task ':com.ibm.wala.cast.js.rhino:signRemotePublication' because it has no configured signatory

Originally posted by @khatchad in #1171 (comment)

@khatchad
Copy link
Contributor Author

Workaround in: #1171 (comment)

@msridhar
Copy link
Member

This is strange. When I run that task, it skips the signing tasks I think:

$ ./gradlew publishToMavenLocal --console=plain
...
> Task :com.ibm.wala.shrike:compileJava
> Task :com.ibm.wala.shrike:classes
> Task :com.ibm.wala.shrike:jar
> Task :com.ibm.wala.shrike:javadoc
> Task :com.ibm.wala.shrike:javadocJar
> Task :com.ibm.wala.shrike:generateMetadataFileForLocalPublication
> Task :com.ibm.wala.shrike:publishLocalPublicationToMavenLocal
> Task :com.ibm.wala.shrike:generateMetadataFileForRemotePublication
> Task :com.ibm.wala.shrike:signRemotePublication SKIPPED
> Task :com.ibm.wala.shrike:publishRemotePublicationToMavenLocal SKIPPED
> Task :com.ibm.wala.shrike:publishToMavenLocal
...

Are you on the latest master branch? If so, can you run ./gradlew clean publishToMavenLocal --console=plain --no-build-cache and see what happens?

@khatchad
Copy link
Contributor Author

This is strange. When I run that task, it skips the signing tasks I think:

$ ./gradlew publishToMavenLocal --console=plain
...
> Task :com.ibm.wala.shrike:compileJava
> Task :com.ibm.wala.shrike:classes
> Task :com.ibm.wala.shrike:jar
> Task :com.ibm.wala.shrike:javadoc
> Task :com.ibm.wala.shrike:javadocJar
> Task :com.ibm.wala.shrike:generateMetadataFileForLocalPublication
> Task :com.ibm.wala.shrike:publishLocalPublicationToMavenLocal
> Task :com.ibm.wala.shrike:generateMetadataFileForRemotePublication
> Task :com.ibm.wala.shrike:signRemotePublication SKIPPED
> Task :com.ibm.wala.shrike:publishRemotePublicationToMavenLocal SKIPPED
> Task :com.ibm.wala.shrike:publishToMavenLocal
...

Are you on the latest master branch?

No, I checked out 3c2db2d.

I checked out master (abbfdea), and now I am getting a different error:

 $ ./gradlew publishToMavenLocal

> Task :com.ibm.wala.cast.js:testFixturesJavadoc FAILED
/home/rk1424/git/WALA/com.ibm.wala.cast.js/src/testFixtures/java/com/ibm/wala/cast/js/test/ExtractingToPredictableFileNames.java:27: error: tag not supported in the generated HTML version: tt
   * DomLessSourceExtractor} to place HTML files in the <tt>build</tt> subdirectory of the current
                                                        ^
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':com.ibm.wala.cast.js:testFixturesJavadoc'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/home/rk1424/git/WALA/com.ibm.wala.cast.js/build/tmp/testFixturesJavadoc/javadoc.options'

* 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 1s
126 actionable tasks: 54 executed, 72 up-to-date

Note I executed this beforehand:

$ ./gradlew build -x test

> Task :com.ibm.wala.cast.js.nodejs:downloadNodeJS
Download https://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz

> Task :com.ibm.wala.ide.jdt:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

BUILD SUCCESSFUL in 50s
83 actionable tasks: 42 executed, 41 up-to-date

If so, can you run ./gradlew clean publishToMavenLocal --console=plain --no-build-cache and see what happens?

I get:

> Task :com.ibm.wala.cast.js:testFixturesJavadoc
/home/rk1424/git/WALA/com.ibm.wala.cast.js/src/testFixtures/java/com/ibm/wala/cast/js/test/ExtractingToPredictableFileNames.java:27: error: tag not supported in the generated HTML version: tt
   * DomLessSourceExtractor} to place HTML files in the <tt>build</tt> subdirectory of the current
                                                        ^
1 error

> Task :com.ibm.wala.cast.js:testFixturesJavadoc FAILED
> Task :com.ibm.wala.core:javadoc

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':com.ibm.wala.cast.js:testFixturesJavadoc'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/home/rk1424/git/WALA/com.ibm.wala.cast.js/build/tmp/testFixturesJavadoc/javadoc.options'```


@msridhar
Copy link
Member

What is your JDK version? The master branch requires JDK 11.

@khatchad
Copy link
Contributor Author

Ah, 18.0.2. I switched to 11.0.17. But, still getting the same error.

@msridhar
Copy link
Member

WALA master is currently at 4171cd8. Maybe try that? What is your operating system?

@khatchad
Copy link
Contributor Author

khatchad commented Jan 4, 2023

Sorry for the delay. 4171cd8 doesn't seem to be building. On 1fa41ad, it works.

$ lsb_release -a
Distributor ID:	Ubuntu
Description:	Ubuntu 22.10
Release:	22.10
Codename:	kinetic

$ uname -a
Linux rk1424-Precision-3660 5.19.0-26-generic #27-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 23 20:44:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

@khatchad
Copy link
Contributor Author

khatchad commented Jan 4, 2023

$ git remote -v
origin  https://github.com/ponder-lab/WALA.git (fetch)
origin  https://github.com/ponder-lab/WALA.git (push)
upstream        https://github.com/wala/WALA.git (fetch)
upstream        https://github.com/wala/WALA.git (push)

$ git log -1
commit 1fa41adfb7f212a0756507e7ec0fa39614552cf6 (HEAD, upstream/master)
Author: Ben Liblit <liblit@acm.org>
Date:   Mon Jan 2 19:57:22 2023 -0500

    Update to newer versions of many dependencies
    
    These updates are the subset of those suggested by `dependencyUpdates`
    that build and pass all tests with no additional source changes.

$ ./gradlew build -x test
Invalid Java installation found at '/usr/lib/jvm/openjdk-11' (Common Linux Locations). It will be re-checked in the next build. This might have performance impact if it keeps failing. Run the 'javaToolchains' task for more details.

> Task :com.ibm.wala.cast.java.test.data:compileTestJavaUsingEcj
incorrect classpath: /home/rk1424/git/WALA2/com.ibm.wala.cast.java.test.data/build/classes/java/testFixtures
incorrect classpath: /home/rk1424/git/WALA2/com.ibm.wala.cast.java.test.data/build/classes/java/main

BUILD SUCCESSFUL in 2s
147 actionable tasks: 17 executed, 5 from cache, 125 up-to-date

$ ./gradlew publishToMavenLocal
Invalid Java installation found at '/usr/lib/jvm/openjdk-11' (Common Linux Locations). It will be re-checked in the next build. This might have performance impact if it keeps failing. Run the 'javaToolchains' task for more details.

BUILD SUCCESSFUL in 741ms
141 actionable tasks: 50 executed, 91 up-to-date

khatchad added a commit to ponder-lab/ML that referenced this issue Jan 4, 2023
@khatchad
Copy link
Contributor Author

khatchad commented Jan 4, 2023

Since it's working in later versions, I'll close as "cannot be reproduced." Please feel free to open if necessary or desired.

@khatchad khatchad closed this as not planned Won't fix, can't repro, duplicate, stale Jan 4, 2023
@khatchad
Copy link
Contributor Author

khatchad commented Jan 5, 2023

Just got this error again when I checked out the v1.5.9 tag. Perhaps it only happens on Git tags.

@msridhar
Copy link
Member

msridhar commented Jan 5, 2023

Ah that must be it! I think signing will be required if the version does not end in SNAPSHOT. This is actually kind of sensible, since you want a released version you can just get it from Maven Central; it's only snapshots that make sense to publish locally.

@khatchad
Copy link
Contributor Author

khatchad commented Jan 6, 2023

Interesting. I was under the impression that you would only want snapshot dependencies if there is some feature that you need that is currently under development. This is not the case here; it would seem that all the needed features have been released. See this article.

@khatchad
Copy link
Contributor Author

khatchad commented Jan 6, 2023

And, I can't get the test JARs from Maven Central as they are not published there.

@msridhar msridhar reopened this Jan 6, 2023
@msridhar
Copy link
Member

msridhar commented Jan 6, 2023

I forgot about the test fixtures jars, which do not get released; that is an issue.

@liblit do you know how hard it would be to disable signing whenever artifacts are being published to the local repo (as opposed to a remote one)?

@liblit
Copy link
Contributor

liblit commented Jan 7, 2023

My impression from the code is that local repository artifacts are already left unsigned:

configure<SigningExtension> {
// If anything about signing is misconfigured, fail loudly rather than quietly continuing with
// unsigned artifacts.
isRequired = true
// Only sign publications sent to remote repositories; local install installatios are unsigned.
// The `sign` invocation below causes eager creation of three tasks per subproject:
// `signRemotePublication` is created immediately and `generateMetadataFileForRemotePublication`
// and `generatePomFileForRemotePublication` are created during configuration. Creating these
// lazily instead will require a fix to <https://github.com/gradle/gradle/issues/8796>.
sign(publishing.publications["remote"])
}

There's also this, immediately after:

// Only sign releases; snapshots are unsigned.
tasks.withType<Sign>().configureEach { onlyIf { !isSnapshot } }

But that should only affect signing tasks for installations into the remote repository, if the earlier comment about not signing local installations is accurate.

Indeed, if I show the names of all Sign tasks, I only see these for remote publication, never for local publication:

tasks.withType<Sign>().configureEach { println("*** configuring $this") }
> Configure project :com.ibm.wala.cast
*** configuring task ':com.ibm.wala.cast:signRemotePublication'

> Configure project :com.ibm.wala.cast.java
*** configuring task ':com.ibm.wala.cast.java:signRemotePublication'

> Configure project :com.ibm.wala.cast.java.ecj
*** configuring task ':com.ibm.wala.cast.java.ecj:signRemotePublication'

> Configure project :com.ibm.wala.cast.js
*** configuring task ':com.ibm.wala.cast.js:signRemotePublication'

> Configure project :com.ibm.wala.cast.js.rhino
*** configuring task ':com.ibm.wala.cast.js.rhino:signRemotePublication'

> Configure project :com.ibm.wala.core
*** configuring task ':com.ibm.wala.core:signRemotePublication'

> Configure project :com.ibm.wala.dalvik
*** configuring task ':com.ibm.wala.dalvik:signRemotePublication'

> Configure project :com.ibm.wala.scandroid
*** configuring task ':com.ibm.wala.scandroid:signRemotePublication'

> Configure project :com.ibm.wala.shrike
*** configuring task ':com.ibm.wala.shrike:signRemotePublication'

> Configure project :com.ibm.wala.util
*** configuring task ':com.ibm.wala.util:signRemotePublication'

So I'm not seeing any tasks that should be trying to sign local jars.

@msridhar
Copy link
Member

msridhar commented Jan 7, 2023

@liblit did you try it when checking out a released version tag, e.g., v1.5.9? I wonder if the version number impacts what gets signed.

@liblit
Copy link
Contributor

liblit commented Jan 8, 2023

OK, I checked out v1.5.9. Same as above. Here's the relevant signature-configuration logic, which was still written in Groovy back then:

signing {
// If anything about signing is misconfigured, fail loudly rather than quietly continuing with
// unsigned artifacts.
required = true
// Only sign publications sent to remote repositories; local install installatios are unsigned.
// The `sign` invocation below causes eager creation of three tasks per subproject:
// `signRemotePublication` is created immediately and `generateMetadataFileForRemotePublication`
// and `generatePomFileForRemotePublication` are created during configuration. Creating these
// lazily instead will require a fix to <https://github.com/gradle/gradle/issues/8796>.
sign publishing.publications.remote
}
// Only sign releases; snapshots are unsigned.
tasks.withType(Sign).configureEach {
onlyIf {
!isSnapshot
}
}

And here's me not seeing any signing tasks for a local repository:

tasks.withType(Sign).configureEach {
	println("*** configuring $it")
}
> Configure project :com.ibm.wala.cast
*** configuring task ':com.ibm.wala.cast:signRemotePublication'

> Configure project :com.ibm.wala.cast.java
*** configuring task ':com.ibm.wala.cast.java:signRemotePublication'

> Configure project :com.ibm.wala.cast.java.ecj
*** configuring task ':com.ibm.wala.cast.java.ecj:signRemotePublication'

> Configure project :com.ibm.wala.cast.js
*** configuring task ':com.ibm.wala.cast.js:signRemotePublication'

> Configure project :com.ibm.wala.cast.js.rhino
*** configuring task ':com.ibm.wala.cast.js.rhino:signRemotePublication'

> Configure project :com.ibm.wala.core
*** configuring task ':com.ibm.wala.core:signRemotePublication'

> Configure project :com.ibm.wala.core.java11
*** configuring task ':com.ibm.wala.core.java11:signRemotePublication'

> Configure project :com.ibm.wala.dalvik
*** configuring task ':com.ibm.wala.dalvik:signRemotePublication'

> Configure project :com.ibm.wala.scandroid
*** configuring task ':com.ibm.wala.scandroid:signRemotePublication'

> Configure project :com.ibm.wala.shrike
*** configuring task ':com.ibm.wala.shrike:signRemotePublication'

> Configure project :com.ibm.wala.util
*** configuring task ':com.ibm.wala.util:signRemotePublication'

That being said, I admit that I have not been paying close attention to this issue so far, preferring to let @khatchad work through whatever problems he was seeing in his own stream-of-consciousness way. Going back to the original report, yes, I can at least confirm that

  1. ./gradlew publishToMavenLocal fails for non-snapshot versions, and
  2. the failure is specifically in a subproject's signRemotePublication task.

So that at least demonstrates that my interpretation of the signing configuration as offered here is incorrect, and likewise that the following comment is incorrect:

// Only sign publications sent to remote repositories; local install installatios are unsigned.

Now that I have a clear understanding of the problem, and a clear demonstration that my own prior understanding was wrong, I'll dive deeper. It is surprising to me that publishToMavenLocal is triggering signRemotePublication tasks, so I'll take a closer look to figure out why that's happening and what we can do to stop it.

@liblit liblit self-assigned this Jan 8, 2023
@liblit liblit added bug gradle WALA’s Gradle build system labels Jan 8, 2023
@msridhar
Copy link
Member

msridhar commented Jan 8, 2023

Thanks a lot, @liblit! In the meantime @khatchad a workaround is to just set things up so you can sign the artifacts. For local publication it won't matter who signs them I assume. Instructions for setup are here: https://github.com/wala/WALA/wiki/Creating-Releases-and-Snapshots#initial-setup you'll have to set up a GPG key and also do the Gradle configuration.

@liblit
Copy link
Contributor

liblit commented Jan 8, 2023

After further investigation, I recommend that we do not change the WALA build infrastructure to correct this issue. Instead, when installing locally, @khatchad (or anyone else) should use the publishLocalPublicationToMavenLocal task instead of the more obvious publishToMavenLocal task.

More details follow.


Basic Concepts: Publications and Repositories

Think of a Gradle "publication" as a set of build artifacts that could potentially be installed or uploaded somewhere. WALA defines two publications:

  1. remote includes sources, bytecode, and documentation for the main WALA components, but omits both tests and test fixtures.

  2. local includes sources, bytecode, and documentation for both the main WALA components as well as supporting test fixtures (but not the tests themselves).

By contrast, a Gradle "repository" is a local or remote place where a publication can be sent. WALA defines three repositories:

  1. mavenLocal represents local installations under ~/.m2/repository. This is a local repository.
  2. maven represents public snapshots and releases at Sonatype. This is a remote repository.
  3. fakeRemote represents local installations under build/maven-fake-remote-repository. This is treated as a remote repository, even though it lives in the local file system.

Orthogonality of Publications and Repositories

Publications and repositories are orthogonal. Any publication can potentially be uploaded or installed into any repository. Our intent is to only install the local publication into mavenLocal, and to only upload the remote publication into maven and/or fakeRemote. However, these are WALA's own policies. Gradle's default behavior is to support installing/uploading any publication into any repository.

Thus, for every publication and repository pair, Gradle creates a task that publishes that publication to that repository. For WALA, this gives us:

  1. publishLocalPublicationToFakeRemoteRepository
  2. publishLocalPublicationToMavenLocal
  3. publishLocalPublicationToMavenRepository
  4. publishRemotePublicationToFakeRemoteRepository
  5. publishRemotePublicationToMavenLocal
  6. publishRemotePublicationToMavenRepository

Gradle also creates several tasks that perform multiple publishing operations by depending on various subsets of the above tasks:

  1. publish depends on every publishing task:
    1. publishLocalPublicationToFakeRemoteRepository
    2. publishLocalPublicationToMavenLocal
    3. publishLocalPublicationToMavenRepository
    4. publishRemotePublicationToFakeRemoteRepository
    5. publishRemotePublicationToMavenLocal
    6. publishRemotePublicationToMavenRepository
  2. publishToMavenLocal depends on every publishing task to the local repository
    1. publishLocalPublicationToMavenLocal
    2. publishRemotePublicationToMavenLocal
  3. publishAllPublicationsToFakeRemoteRepository depends on every publishing task to fakeRemote:
    1. publishLocalPublicationToFakeRemoteRepository
    2. publishRemotePublicationToFakeRemoteRepository
  4. publishAllPublicationsToMavenRepository depends on every publishing task to maven:
    1. publishLocalPublicationToMavenRepository
    2. publishRemotePublicationToMavenRepository

Filtering Down to the Desired Subset

Gradle's automatic creation of all six permutations is over-eager, since we really would never want to publish the local publication remotely, and likewise would never want to publish the remote publication locally. Ideally, we would only ever use a subset of these six tasks:

  1. publishLocalPublicationToFakeRemoteRepository
  2. publishLocalPublicationToMavenLocal
  3. publishLocalPublicationToMavenRepository
  4. publishRemotePublicationToFakeRemoteRepository
  5. publishRemotePublicationToMavenLocal
  6. publishRemotePublicationToMavenRepository

Unfortunately, we cannot tell Gradle to avoid creating all six tasks, even through half of them make no sense for us. Instead, what we do is to selectively disable tasks that would put the wrong publications into the wrong repositories:

// Remote publication set goes to remote repositories, so we don't publicly publish test fixtures.
tasks.withType<PublishToMavenRepository>().configureEach {
onlyIf { publication == publishing.publications["remote"] }
}
// Local publication set goes to local installations, so we can reuse test fixtures locally.
tasks.withType<PublishToMavenLocal>().configureEach {
onlyIf { publication == publishing.publications["local"] }
}

The good news is that these onlyIf clauses prevent us from sending the local publication to remote repositories, and likewise prevent us from sending the remote publication to local repositories. Effectively, they turn the unwanted publication tasks into no-ops. These disabled tasks simply print SKIPPED instead of whatever file copying or uploading they would normally do.

The bad news is that disabling a task using onlyIf does not transitively disable its dependencies. In the case of tasks that would publish non-snapshot versions of the remote publication, those dependenies include creating cryptographic signatures. So the full set of remote publication artifacts will still be built; only the final upload step is disabled.

Thus, when you direct Gradle to ./gradlew publishToMavenLocal, it tries to publish every known publication to the local Maven repository, including the remote publication: publishToMavenLocal depends on publishRemotePublicationToMavenLocal. All artifacts for the remote publication will be fully built and prepared, including creating cryptographic signatures. Only at the very last step will Gradle skip copying these artifacts into ~/.m2/repository.

What Can We Do About It?

Generally speaking, Gradle is better at adding items to a build rather than removing items from a build. We cannot delete the undesired publication tasks, such as publishRemotePublicationToMavenLocal. In theory, we might be able to break the dependency between publishToMavenLocal and publishRemotePublicationToMavenLocal, but again: adding dependencies is easier than removing them. The latter requires late-stage editing of the task graph just before task execution begins. This sort of low-level tweaking is brittle and is universally frowned upon.

Thus, my conclusion is that we should simply accept the existing tasks as doing exactly what they say on the tin. In particular, publishToMavenLocal will try to publish all publications to the local Maven repository, including those that require cryptographic signatures. If that's not what you want Gradle to do, then don't ask Gradle to do that.

Instead, use a different task that does what you want. Specifically, ./gradlew publishLocalPublicationToMavenLocal will install, for local use, all artifacts for both WALA's main components as well as WALA's test fixtures. If I understand correctly, that's what @khatchad wanted in the first place. Correct?

@liblit liblit closed this as not planned Won't fix, can't repro, duplicate, stale Jan 8, 2023
@liblit liblit added the wontfix label Jan 8, 2023
@msridhar
Copy link
Member

msridhar commented Jan 8, 2023

Amazing explanation @liblit thanks! I've added some notes to the wiki here:

https://github.com/wala/WALA/wiki/Creating-Releases-and-Snapshots#publishing-released-versions-locally

This brings up another question in my mind: @liblit was there a reason we don't publish test fixture artifacts to Maven Central? It seems a bit weird in that it is "internal" test code, but it seems there is now at least one case where it would be useful. Given all the WALA code is pretty stable, I'm not sure I can think of a good reason not to publish test fixture artifacts to Maven Central, unless it is technically difficult.

@msridhar
Copy link
Member

msridhar commented Jan 8, 2023

@khatchad please confirm that the discussion above resolves these issues for you.

@liblit
Copy link
Contributor

liblit commented Jan 8, 2023

@msridhar wrote:

I've added some notes to the wiki

Nice! Thank you for distilling my long-winded explanation down to the critical pieces that our users may need to know.

was there a reason we don't publish test fixture artifacts to Maven Central?

Nothing I can think of, especially given that some of those artifacts are actually required externally. I'll revise our publication sets to include test fixtures everywhere.

@khatchad
Copy link
Contributor Author

@khatchad please confirm that the discussion above resolves these issues for you.

Confirmed. ./gradlew publishLocalPublicationToMavenLocal works when checking out tag v1.5.9.

@khatchad
Copy link
Contributor Author

...

Instead, use a different task that does what you want. Specifically, ./gradlew publishLocalPublicationToMavenLocal will install, for local use, all artifacts for both WALA's main components as well as WALA's test fixtures. If I understand correctly, that's what @khatchad wanted in the first place. Correct?

Correct.

khatchad added a commit to ponder-lab/ML that referenced this issue Jan 10, 2023
Per wala/WALA#1173 (comment),  using the `publishLocalPublicationToMavenLocal` task instead of the more obvious `publishToMavenLocal` task.
khatchad added a commit to ponder-lab/ML that referenced this issue Jan 10, 2023
Per wala/WALA#1173 (comment), usinmg the `publishLocalPublicationToMavenLocal` task instead of the more obvious `publishToMavenLocal` task.
msridhar pushed a commit to wala/ML that referenced this issue Jan 10, 2023
* Some work on Maven infrastructure.

Based on https://github.com/Anemone95/wala-python/blob/709a3047eab5ed0c3a7889f7478566ae0dd9ea7a/python-frontend/pom.xml

* Add gitignore.

* Upgrade to WALA 1.5.8.

Based on maldil@705e59f

* Remove version.

We're getting it from the parent pom.

* Fix version.

* Ignore Vim intermediate/temporary files.

From https://github.com/github/gitignore/blob/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Vim.gitignore

* Start contribution document.

* Metadat updates.

* Ignore gradle output.

* Remove the test scope.

It would seem that the test files are in the normal source directories.

* Update JUnit.

* Add Eclipse Gradle metadata.

Not sure if it's completely necessary.

* Modify building instructions.

* More Eclipse Gradle metadata.

* Ignore maven intermediate output.

* Add workaround for wala/WALA#1173.

* Modernize the Travis CI build.

* Need more history.

* Remove deploy section.

The token isn't working.

* Add slack notification.

* Add gradle caches.

* Make it more readable.

* Revert "Make it more readable."

This reverts commit 5953caf.

* Remove the WALA build step.

I think it is included in the deployment.

* Remove sudo key.

* Remove space.

* Remove unnecessary verison.

* Decentralize build.

Different projects have different build and resource directories.

* Update Eclipse metadata.

* Add missing intraproject module dependency.

* Remove obselete Gradle metadata?

Buildship seemed to do this automatically.

* For com.ibm.wala.cast.python.test, "source" is both a source and test directory?

* Exclude the server test for now.

It's timing out.

* Increase antlr version.

* Ignore test in the source code instead.

This seems to be the project standard.

* Add test reporting.

* Revert "Add slack notification."

This reverts commit 9355100. It doesn't seem to work.

* Remove tab character.

* Make it compile in Eclipse.

Added an m2e property not to set the source folder as a test source. The problem is that Eclipse will not export test source packages, but this package is *both* a test source and normal source.

* Switch to mainline IDE.

* Update README.md.

* Fix relative link.

* Add anchor.

* Enhance anchor.

* Upgrade to WALA v1.5.9.

* Using publishLocalPublicationToMavenLocal in CI.

Per wala/WALA#1173 (comment),  using the `publishLocalPublicationToMavenLocal` task instead of the more obvious `publishToMavenLocal` task.

* Use publishLocalPublicationToMavenLocal in docs.

Per wala/WALA#1173 (comment), usinmg the `publishLocalPublicationToMavenLocal` task instead of the more obvious `publishToMavenLocal` task.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug gradle WALA’s Gradle build system wontfix
Projects
None yet
Development

No branches or pull requests

3 participants