Details
-
Type:
Improvement
-
Status:
Resolved
-
Resolution: Fixed
-
Affects Version/s: 1.0-milestone-7
-
Fix Version/s: 1.0-milestone-9
Description
I receive an error when attempting to utilize the compressed tar support that was added to tarTree() in 1.0-m7. See also http://forums.gradle.org/gradle/topics/gradle_1_0_milestone_7_snapshot_available#reply_7555264
I have attached a gradle project which can be used to reproduce this behavior. Just run ./gradlew. I have also tried a gzipped tar file, with the same result.
aogail@bjansen-miroku> ./gradlew --stacktrace :extract FAILURE: Build failed with an exception. * What went wrong: Unable to expand TAR '/localhome/aogail/Development/cap/tbz/test.tar.bz2' The tar might be corrupted or it is compressed in an unexpected way. By default the tar tree tries to guess the compression based on the file extension. If you need to specify the compression explicitly please refer to the DSL reference. * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.GradleException: Unable to expand TAR '/localhome/aogail/Development/cap/tbz/test.tar.bz2' The tar might be corrupted or it is compressed in an unexpected way. By default the tar tree tries to guess the compression based on the file extension. If you need to specify the compression explicitly please refer to the DSL reference. at org.gradle.api.internal.file.archive.TarFileTree.visit(TarFileTree.java:80) at org.gradle.api.internal.file.collections.FileTreeAdapter.visit(FileTreeAdapter.java:96) at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTree.visit(AbstractFileTree.java:136) at org.gradle.api.internal.file.AbstractFileTree.getFiles(AbstractFileTree.java:37) at org.gradle.api.internal.file.CompositeFileCollection.getFiles(CompositeFileCollection.java:39) at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:60) at org.gradle.api.internal.changedetection.DefaultFileSnapshotter.snapshot(DefaultFileSnapshotter.java:42) at org.gradle.api.internal.changedetection.InputFilesChangedUpToDateRule.create(InputFilesChangedUpToDateRule.java:35) at org.gradle.api.internal.changedetection.CompositeUpToDateRule.create(CompositeUpToDateRule.java:35) at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$HistoricExecution.calcCurrentState(DefaultTaskArtifactStateRepository.java:80) at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$HistoricExecution.isUpToDate(DefaultTaskArtifactStateRepository.java:88) at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:128) at org.gradle.api.internal.changedetection.ShortCircuitTaskArtifactStateRepository$ShortCircuitArtifactState.isUpToDate(ShortCircuitTaskArtifactStateRepository.java:77) at org.gradle.api.internal.changedetection.FileCacheBroadcastTaskArtifactStateRepository$1.isUpToDate(FileCacheBroadcastTaskArtifactStateRepository.java:37) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42) at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:243) at org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:192) at org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:177) at org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:36) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31) at org.gradle.cache.internal.DefaultCacheAccess$1.create(DefaultCacheAccess.java:111) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:126) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:109) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:103) at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79) at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:152) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:108) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:76) at org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:42) at org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:28) at org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:32) at org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:21) at org.gradle.launcher.cli.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:238) at org.gradle.launcher.cli.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:222) at org.gradle.launcher.Main.doAction(Main.java:48) at org.gradle.launcher.exec.EntryPoint$1.execute(EntryPoint.java:53) at org.gradle.launcher.exec.EntryPoint$1.execute(EntryPoint.java:51) at org.gradle.launcher.exec.Execution.execute(Execution.java:28) at org.gradle.launcher.exec.EntryPoint.run(EntryPoint.java:39) at org.gradle.launcher.Main.main(Main.java:39) at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:51) at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:33) at org.gradle.launcher.GradleMain.main(GradleMain.java:24) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33) at org.gradle.wrapper.Wrapper.execute(Wrapper.java:87) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:37) Caused by: org.gradle.api.GradleException: Could not copy tar entry /localhome/aogail/Development/cap/tbz/test.tar.bz2!BZh91AY&SYニTf to '/localhome/aogail/Development/cap/tbz/build/tmp/expandedArchives/test.tar.bz2_5gvt8s28hfpn622b7g6obpcutr/BZh91AY&SYニTf'. at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:65) at org.gradle.api.internal.file.archive.TarFileTree$DetailsImpl.getFile(TarFileTree.java:122) at org.gradle.api.internal.file.AbstractFileTree$1.visitFile(AbstractFileTree.java:39) at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTree$1.visitFile(AbstractFileTree.java:145) at org.gradle.api.internal.file.archive.TarFileTree.visitImpl(TarFileTree.java:92) at org.gradle.api.internal.file.archive.TarFileTree.visit(TarFileTree.java:71) ... 61 more Caused by: java.lang.IllegalArgumentException: Negative time at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:62) ... 66 more
Oh gotcha!
The extension gradle expects is: 'tbz2'. To solve your problem either change the extension or do:
from(tarTree(resources.bzip2('test.tar.bz2')))Let's keep the issue open - I want to tweak the docs / exception messages or logging to make that obvious.
Thanks a lot for an excellent bug report with neat sample project
from(tarTree(resources.bzip2('test.tar.bz2')))