eclipse-archived / packagedrone

Eclipse Package Drone
http://eclipse.org/package-drone
Eclipse Public License 1.0
66 stars 39 forks source link

Product Export does not Unpack Launcher Artifacts #49

Open trohrberg opened 8 years ago

trohrberg commented 8 years ago

Hello everybody,

I am about to use the current version 0.12.0 of Package Drone in our OSGi-based Enterprise Application. In that application, we are using a product definition to describe the final shippment of the application. With that product definition and Maven/Tycho we then export the complete application, including dependencies (e.g. Eclipse Equinox, ...) into a ZIP file. We also create native launcher artifacts within that export so that after extracting the ZIP file the application can directly be launched via an *.exe file on windows and a bin file on linux systems.

However, when consuming the Eclipse Platform SDK version 4.5.2 (Eclipse Mars) from a Package Drone server version 0.12.0, the product export does not unpack the platform-specific launcher fragments (like "org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417" for windows 64 bit) anymore. It does not make a difference whether to run the product export from the IDE via the product definition wizzard or via Maven/Tycho. The mentioned launcher fragment is exported as JAR which impeeds the launching of the product since it cannot load the contained dll file. That launcher fragment always needs to be unpacked into a folder named the same way as also specified by the missing "unpack='false'" directive in the "org.eclipse.equinox.executable" feature from where the launcher artifact is taken.

When doing exactly the same thing with exporting the products via the IDE for example and consuming all dependencies from an HTTPd server hosting the download of [1], the product export unpacks the mentioned launcher fragment and everything works with launching the application.

Do you guys have any idea of what can be the reason for this behavior?

I created a simple demo project and attached it to this post. It should be self-explanatory, but of course, you will have to provide both, a Package Drone 0.12.0 installation and a local p2 repository hosted on an HTTP server, both hosting the download of [1].

I would really appreciate any hint even if it only leads to further questions and ideas of how to proceed in solving this issue.

Best regards Timo Rohrberg pdrone_demo_project.zip

[1] http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.5.2-201602121500/org.eclipse.platform.source-4.5.2.zip

trohrberg commented 8 years ago

Hello everybody,

this morning, I myself had an idea what might be wrong leading to the problem described above: The p2 metadata generated by Package Drone might be different from the one downloaded with the Eclipse Platform SDK from [1]. I compared the metadata information in content.xml and artifacts.xml provided with the stated download with the one provided by Package Drone after uploading the Eclipse Platform SDK to the channel and - voila - they are different:

There is a section about the "org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417" fragment in the content.xml and they have reasonable differences. I somehow assume the unpacking thing is about the following part:

`

true
</instructions>`

I attached and extract of the two content.xml files to this post.

Maybe the problem can simply be solved by uploading the original metadata content.xml and artifacts.xml from the download to the Package Drone channel. Does anyone of you know if this is possible and how?

Best regards Timo Rohrberg content.xml.files.zip

[1] http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.5.2-201602121500/org.eclipse.platform.source-4.5.2.zip

ctron commented 8 years ago

Sounds like an issue ;-) I do see a few more differences between those two files. I will give your demo project a try and see what I can do.

ctron commented 8 years ago

So in fact I do see another use case here. Re-using the P2 meta data from a zipped P2 repository, as you suggested.

trohrberg commented 8 years ago

Hello Jens, Hello everybody,

in the meantime, I maybe found a way to "work around" the problem: Uploading the entire download of the Eclipse Platform SDK as a ZIP file (e.g. p2repo.zip) to a plain channel with only aspects "Hasher" and "Mime" and then consuming it via http:///unzip/newestByName//p2repo.zip as described in the Package Drone Cheatsheet at least works from within the IDE, i.e. resolving via a target definition and exporting the product via the PDE build. I did not test yet whether it works with Maven/Tycho, too, but I will do this probably this afternoon.

However, I also thing that re-using already provided p2 meta data from a download is really a use case since there's a growing number of p2-ready repositories provided for projects out there.

I'm curious about the progress on this issue.

Best regards Timo

ctron commented 8 years ago

Yes, that should work as well!

Right now I got a new feature implemented which allows extracting the P2 meta data from a zipped repository and successfully integrates this into the final P2 information.

I will run it against your test project in a few minutes.

ctron commented 8 years ago

So I do think I have a working version. I am creating an integration build right now and give you a link.

If possible I would like you to try it out. But beware, this is Package Drone 0.13.0, which has Triggers in addition, so the meta data format did change. You should not simply upgrade your instance.

I know your time is limited, but maybe you can spare a few minutes testing this.

ctron commented 8 years ago

Download Link: https://tresor.it/s#QSOEOYMtoV4XvEuKbUUyOg

It is only valid for 10 days

trohrberg commented 8 years ago

Hello Jens, wow that sound's great! I will definitely try it out and let you know. I guess, I'll be permitted with some more ours to play around in the sprint that starts this afternoon. So hopefully, by tomorrow, I can give you some info.

Regards Timo

ctron commented 8 years ago

Sounds great. If you have any troubles with the link, please let me know. Tresorit starts to cause more and more troubles for me.

trohrberg commented 8 years ago

Hello Jens,

I already downloaded the milestone release and stored it here on my disk. So everything worked. Unfortunately, I did not get a lot of time assigned for the Package Drone issue. I was asked to first prepare the roll-out of version 0.12.0, i.e. implementing the workaround with the Unzip Adapter solution I came up with before. But I told them, that we should test your milestone release 0.13.0 too and it was agreed that I can spend some time for it.

Regards Timo

trohrberg commented 8 years ago

Hello Jens,

I'm now trying to test your integration build of 0.13.0 with our OSGi-project. I successfully set up a local installation of Package Drone 0.13.0 from the link you sent me. But unfortunately, I don't know how the provisioning of a channel with content and metadata coming from a zipped p2 repository is now meant to work. How do I have to configure the channel (which aspects)? And what do I upload to the channel? The zipped p2 repository including the metadata? But that does not work...

I appreciate any hint of how to at least test this solution...

Regards Timo

ctron commented 8 years ago

There is a new menu entry "P2 Unzipper", which allows to configure the extraction process now.

If you like we can also have a chat at [1], or on Google Hangouts [2].

[1] https://mattermost-test.eclipse.org/eclipse/channels/package-drone [2] ctron1202@gmail.com

trohrberg commented 8 years ago

Hello Jens,

ok, then I was not too wrong trying to use exactly that menu entry "P2 Unzipper". Unfortunately, it did not work for me. Maybe it's best to have a chat on that. Unfortunately, I do have Scrum ceremonies from 14:00 for the rest of the day. Can we maybe schedule a meeting for tomorrow? I'm available the whole day from 8:30 to 16:00.

Thank you for your help.

Regards Timo