-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Implement CPack for Debian/RPM #2590
base: next
Are you sure you want to change the base?
Conversation
@Rot127 While I will need help with the Mac stuff, I can try to poke around how capstone made RPM packages before, but your feedback would be helpful to have! I did poke around and find this, it seems the RPM packaging standard is a lot more of a mess than I thought as it seems anyone can package as they see fit. https://rpmfind.net/linux/rpm2html/search.php?query=libcapstone-devel I do want to ask, if the goal is to automate placing Debian packages in APT, this would require creating both a libcapstone package with the shared objects only and another debian with the static library/headers. I could use cmake twice and leverage CPack to make two packages. To avoid the headers being made twice, would I need to delete these lines of code? https://github.com/capstone-engine/capstone/blob/next/CMakeLists.txt#L799-L801 |
Sorry for the late answer. I will review this one after new year. But to answer your questions meanwhile:
Yes, this would be nice to have. Though, I can't put any priority on it. And before v6 Beta, it is not necessary. I think for v6 Gold it is though.
I have no idea. They were made before my time here. You have to contact the package maintainers and/or follow the docs. |
419750b
to
12879d4
Compare
I poked around a bit more about making the RPM the best I can, so a few things I'll likely need help on,
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! Thanks a lot for getting started with it.
Some general notes:
- Let's exclude OSX for now, please. It gets too much otherwise and they can be part of another PR.
- The
packages/rpm/capstone.spec
file shouldn't be necessary. I think it can be removed. CPack should generate it. - Once we have tested the package build locally, we can add the process to the release workflow.
Regarding #2590 (comment)
This looks a little hacky. Let's not worry about the bindings for now. Because they need some refactoring before (see: #2291).
And maybe there are way better ways to create such packages. In the case of the Python bindings, they are already uploaded to pypi.
@Rot127 Just updated the CPack file per your suggestions (Note both Debian and RPM package content looks identical now), three questions remain:
https://github.com/AndrewQuijano/capstone/releases/tag/6.0.2-Alpha3 |
d2bb8b5
to
c77d6ff
Compare
I just ran a
Not yet. I waited for you to add the workflow job, so I don't have to set up to much. Will do review this one again tomorrow.
Yeah, sure. Less duplicates are always better.
This would be awesome! @kabeor Do you know if we could get the release before lunar new year? |
0e85387
to
e31a1e9
Compare
@Rot127 What are the cstool commands you used? I think I can add this to RPM spec file? I just removed the duplicate with Docker and created the PR for v5. I should note, it seems I broke labeler when switching to v5, I'm trying to fix this, but it is turning out to be a bit more complicated than I thought https://github.com/actions/labeler https://github.com/capstone-engine/capstone/actions/runs/12645601156/job/35235004550?pr=2590 |
No worries. Going to fix it.
Just some basic disassembly. It just needs to prove it loads the share library properly and correctly disassembles an instruction. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made the review on this one. Since they the comments are basically the same for the v5
version.
Btw, I am sorry if I sometimes make multiple suggestions on the same line of code. I learn how the CPack packaging works while reviewing your code. So sometimes I see things only on a second look.
Hope this is not discouraging. I very much appreciate your effort!
023a04f
to
f82b52a
Compare
@Rot127 Just updated the PR, and just curious would you look into how to update labeler to v5? Also, figure I should ask, you don't mind I use your ISSUE_TEMPLATE folder and labeler stuff for any other open-source work right? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
But the build fails for me: https://github.com/Rot127/capstone/actions/runs/12734529842/job/35492198289
...
Enabling CAPSTONE_WASM_SUPPORT
Enabling CAPSTONE_BPF_SUPPORT
Enabling CAPSTONE_RISCV_SUPPORT
Enabling CAPSTONE_SH_SUPPORT
Enabling CAPSTONE_TRICORE_SUPPORT
Enabling CAPSTONE_ALPHA_SUPPORT
Enabling CAPSTONE_HPPA_SUPPORT
Enabling CAPSTONE_LOONGARCH_SUPPORT
Enabling CAPSTONE_XTENSA_SUPPORT
CMake Error at /usr/local/share/cmake-3.31/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
Call Stack (most recent call first):
/usr/local/share/cmake-3.31/Modules/CMakePackageConfigHelpers.cmake:402 (write_basic_config_version_file)
CMakeLists.txt:897 (write_basic_package_version_file)
-- Configuring incomplete, errors occurred!
It isn't a priority currently for me. Too much other stuff to do unfortunately. If you want to work on it feel free to do so! If you are faster then @kabeor reviewing, we can replace my downgrading PR with yours.
Not at all. It is open-source in the end :D |
39bcf36
to
cc1aaa1
Compare
Debian works fine.
The package name for |
@Rot127 just updated CPack, hopefully this should fix the issue |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice! Thanks a lot!
@kabeor Please merge and create a 5.0.4 on the v5 Branch |
Done. |
@kabeor Thank you for the new release! I'm wondering, would it be possible to re-release 5.0.4? It seems the code to dynamically update the version got deleted here. The released packages are missing the version in the file name (I aimed to follow standard RPM/Debian package practices), since the code to dynamically pick up the version from the tag got deleted. https://github.com/capstone-engine/capstone/releases/tag/5.0.4 Also, could you please merge #2590? I should note, this PR also has the same technique to dynamically update the version of Capstone based on input from tag name. This should save time from having to manually bump the version number for every release, which seemed to be ok with @Rot127 I see based on the v5 release, I think a better solution is to use a version.h.in file, with some modifications from CMake, we can dynamically get this version data, automating this work on every release. Should this just be another PR?
|
Two things 1- I did a bit more digging around for pkgconfig.mk, it is used by Makefile and Python, I propose having CMake be able to dynamically overwrite pkgconfig.mk with the version data if it is provided. I'm not sure where I'd write the updated version of pkgconfig for use? I'd also be curious what the values in 2- I can add a version.h file to be created and updated dynamically in |
Just pinged him. Was an accident while resolving conflicts. Thanks for pointing it out!
Good idea. At least on the next branch we should have it. Regarding the whole pkgconfig changes: |
@AndrewQuijano Please review #2606 |
Ah, also. Please rebase this one on the latest next. The labeler is fixed again. |
@Rot127 Rebased complete! @kabeor Thanks for v5.0.5 release! Will be updating PANDA to be using the new Debian package shortly panda-re/panda#1562 |
Your checklist for this pull request
Detailed description
I created a CPackConfig.txt that can create both Debian and RPM packages. The Debian package matches what we have now. I can look further about making a proper RPM package.
Debian Screenshots
This is identical to #2579
RPM
Here is the generated spec file
libcapstone-dev.spec.txt
I do want to get help with macOS package creation and testing using CPack
I updated how to do this in the Building.md file
...
Test plan
We can probably use something like check_capstone.sh? Although for now, we can merge it as another way to create the Debian Package? My hope is, from here, work can be done to get a Mac OSX package built. I can help with RPM, the work is done, but any last necessary touches I can take care of it.
...
Closing issues
...