On 08/08/2013, at 12:01 AM, Harald Schmitt <li...@hschmitt.de> wrote:
> Am 06.08.2013 01:20, schrieb Adam Murdoch: >> >> On 05/08/2013, at 9:20 PM, Harald Schmitt <li...@hschmitt.de >> <mailto:li...@hschmitt.de>> wrote: >> >>> Hi, >>> >>> I did a first try to support symbolic links when using tarTree() for >>> untar. >>> https://github.com/gradle/gradle/pull/182 >>> For the other way round, I realized that there are some bits missing, to >>> implement support for symbolic links with the Tar task type. >>> The interface Symlink >>> https://github.com/gradle/gradle/blob/master/subprojects/native/src/main/java/org/gradle/internal/nativeplatform/filesystem/Symlink.java >>> needs two more functions >>> public boolean isSymlink(File linkCandidate); >>> public RelativePath symlinkTarget(File link); >>> >>> Determining whether it is a symbolic link could be achieved with pure >>> java code as the ANT class SymbolicLinkUtils does it, but it could be >>> much faster using native tools. >>> But to query the target relative path , I don't know whether this can be >>> done in java? >>> >>> I'd need someone to implement the native part. Is there someone willing? >>> Is this something that will go into gradle? >> >> The native toolkit that we use >> (https://github.com/adammurdoch/native-platform) already has some >> support for symlinks. It's missing a method to detect if a file is a >> symlink, but I can add that. It might take me a few days to get it done, >> though. >> >> We can also use the Java 7 file attributes stuff to determine if a file >> is a symbolic link. There's also the trick where we can use >> File.getCanonicalFile() to determine if something is a symlink or not. >> >> What you could do to get started is to add the methods that you need on >> Symlink with dummy implementations or implementations that only work on >> Java 7 or that use the Ant stuff for now. Then you can continue on with >> the Tar stuff while I add the native support in the native toolkit and >> wire it in. > The native toolkit you are referring is not used for symlinks in gradle > at the moment, but it makes sense to switch to it. We're slowly moving from jna/jna-posix to native-platform, and the plan is to switch the Symlink implementation over. > > I already did integration tests, unit tests and implementation with some > dummy stuff in it. > https://github.com/surfing/gradle/tree/tar-rc-1 Great. I'll take a look. -- Adam Murdoch Gradle Co-founder http://www.gradle.org VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting http://www.gradleware.com