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

[Build] Generate OSGi metadata for JSVG #107

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

HannesWell
Copy link

@HannesWell HannesWell commented Dec 7, 2024

This change has the goal to extend the jar's META-INF/MANIFEST.MF generated during the build to contiain OSGi metadata so that JSVG can be used as bundle in OSGi runtimes out of the box.
This is needed for eclipse-platform/eclipse.platform.swt#1638

To generate OSGi metadata the bnd-tools library is used respectivly it's gradle plugin.
While I know how to configure bnd-tools, for JSVG it should actually be quite simple since there are no dependencies, I have almost zero knowledge about Gradle and how to integrate the bnd-gradle plugin into JSVG's build and failed in my attempts to make it work.
I tried to follow the guide provided at:
https://github.com/bndtools/bnd/tree/master/gradle-plugins#gradle-plugin-for-non-bnd-workspace-builds ff

@weisJ could you please advice me what I need to do in order to make the bnd-gradle plugin work?
Then i can work out a suitable bnd-configuration to generated proper OSGi metadata. Therefore this is currently a work-in-progress draft to get the work started.
Thanks in advance!

@HannesWell
Copy link
Author

HannesWell commented Dec 7, 2024

@Michael5601 FYI.

@weisJ if it would helpful, I can offer to have video-call, maybe together with @Michael5601, to make this work.
I had a private mail coversiation with Michael about this and he said, you are in contact. If you are interested, maybe Michael could start a private mail conversion for an appointment?

@weisJ
Copy link
Owner

weisJ commented Dec 8, 2024

I have just pushed a commit to your branch which makes the plugin work. You should now be able to configure the bundle properties.

@Michael5601
Copy link

@Michael5601 FYI.

@weisJ if it would helpful, I can offer to have video-call, maybe together with @Michael5601, to make this work. I had a private mail coversiation with Michael about this and he said, you are in contact. If you are interested, maybe Michael could start a private mail conversion for an appointment?

Thank you for the draft and the work you put into this already @HannesWell. Should I still create the appointment or is the problem fixed by the commit of @weisJ?

@HannesWell
Copy link
Author

I have just pushed a commit to your branch which makes the plugin work. You should now be able to configure the bundle properties.

Thanks a lot. I was now to configure the bundle task, but only through the manifest-attributes as described in the last section of
https://github.com/bndtools/bnd/tree/master/gradle-plugins#instructing-bnd-on-how-to-build-your-bundle

I also tried to use, what I think is the regular way, through a bnd element in the bundle task, but failed miserably. Sorry for that, but I have really zero knowledge about Gradle. I tried hard to find something through internet search, etc. but failed. I you have better advice, I would be very glad.

Comment on lines +268 to +269
bundle {
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I added the following, the configuration was just ignored and the generated MANIFEST.MF in weisJ-jsvg\jsvg\build\libs\jsvg-1.6.2-SNAPSHOT.jar did had the content that should result from the specified instructions.

Suggested change
bundle {
}
bundle {
bnd("""
Bundle-SymbolicName: com.github.weisj.jsvg
-exportcontents: !*.impl.*,*
-removeheaders: Private-Package,Tool
""")
}

// bnd instructions to generate OSGi metadata
attributes["Bundle-SymbolicName"] = "com.github.weisj.jsvg"
attributes["-exportcontents"] = "!*.impl.*,*"
attributes["-removeheaders"] = "Private-Package,Tool"
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding the bnd instruction to a separate bundle task (?) here

Suggested change
}
}
bundle {
bnd("""
Bundle-SymbolicName: com.github.weisj.jsvg
-exportcontents: !*.impl.*,*
-removeheaders: Private-Package,Tool
""")
}

lead to a build failure with:

Could not determine the dependencies of task ':annotations:assemble'.
> Could not create task ':annotations:sourcesJar'.
   > Extension with name 'bundle' does not exist. Currently registered extension names: [ext]

@HannesWell
Copy link
Author

The current state is probably not beautiful, but seems to work, although I think some parts can be cleaned up?
If possible, it might still be cleaner to make the bnd element within a bundle task work?

@Michael5601 FYI.
@weisJ if it would helpful, I can offer to have video-call, maybe together with @Michael5601, to make this work. I had a private mail coversiation with Michael about this and he said, you are in contact. If you are interested, maybe Michael could start a private mail conversion for an appointment?

Thank you for the draft and the work you put into this already @HannesWell. Should I still create the appointment or is the problem fixed by the commit of @weisJ?

From my point of view this is not necessary, I hope we can sort out the remaining issues here. But if any one of you is still interested I'm open for it. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants