jbangdev / jbang

Unleash the power of Java - JBang Lets Students, Educators and Professional Developers create, edit and run self-contained source-only Java programs with unprecedented ease.
https://jbang.dev
MIT License
1.43k stars 159 forks source link

Binary distributions do not include version.txt #1047

Open aalmiray opened 3 years ago

aalmiray commented 3 years ago

Apparently the build is set to copy tmp/version.txt into the generated distribution

https://github.com/jbangdev/jbang/blob/3adf1b50133ccd652048aeed2b6173e93940a77c/build.gradle#L116-L130

However this file is not created at the appropriate time and it's missing from the final distribution archives

$ tar tvf ~/Downloads/jbang-0.81.2.tar 
drwxr-xr-x  0 0      0           0 Jan  2  1970 jbang-0.81.2/
drwxr-xr-x  0 0      0           0 Jan  2  1970 jbang-0.81.2/bin/
-rw-r--r--  0 0      0     6216055 Jan  2  1970 jbang-0.81.2/bin/jbang.jar
-rwxr-xr-x  0 0      0        6324 Jan  2  1970 jbang-0.81.2/bin/jbang
-rw-r--r--  0 0      0        5385 Jan  2  1970 jbang-0.81.2/bin/jbang.cmd
-rw-r--r--  0 0      0        7173 Jan  2  1970 jbang-0.81.2/bin/jbang.ps1
drwxr-xr-x  0 0      0           0 Jan  2  1970 jbang-0.81.2/tmp/
$ unzip -l ~/Downloads/jbang-0.81.2.zip 
Archive:  /Users/aalmiray/Downloads/jbang-0.81.2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  02-01-1980 00:00   jbang-0.81.2/
        0  02-01-1980 00:00   jbang-0.81.2/bin/
  6216055  02-01-1980 00:00   jbang-0.81.2/bin/jbang.jar
     6324  02-01-1980 00:00   jbang-0.81.2/bin/jbang
     5385  02-01-1980 00:00   jbang-0.81.2/bin/jbang.cmd
     7173  02-01-1980 00:00   jbang-0.81.2/bin/jbang.ps1
        0  02-01-1980 00:00   jbang-0.81.2/tmp/
---------                     -------
  6234937                     7 files

If this file is to be included then the versionTxt() task must be set as a dependency or distZip, distTar, latestDistZip, and latestDistTar.

maxandersen commented 3 years ago

thanks for the bug @aalmiray - whats worse is that if doing a clean build even jbang.cmd/jbang/jbang.ps1 are missing which got into 0.82 release ...sometihng definitely wonky here.

would it not be enough to make versiontxt dependent on assemble ?

aalmiray commented 3 years ago

No, I don't think it would be enough as assemble depends on the distribution tasks already. Gradle usually runs tasks in alphabetical order when there are no dependencies between them thus versionText might run after the distribution tasks that require its outputs.

You can either add a task dependency (explicit, old idiom) or add an input file dependency (new idiom).

maxandersen commented 3 years ago

"add an input file dependency (new idiom)." ... how would that work?

aalmiray commented 3 years ago

It would look something like this https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:runtime_api_for_adhoc

aalmiray commented 3 years ago

FWIW explicit task dependency (old idiom) is the easiest way to make it work. Will only become a problem in Gradle 8.0 when this option is flagged as an error or gets removed.