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

Publish to DNF / COPR instead #1

Open
Malix-Labs opened this issue Oct 5, 2024 · 20 comments
Open

Publish to DNF / COPR instead #1

Malix-Labs opened this issue Oct 5, 2024 · 20 comments

Comments

@Malix-Labs
Copy link

Malix-Labs commented Oct 5, 2024

Have you read https://docs.fedoraproject.org/en-US/package-maintainers/New_Package_Process_for_New_Contributors/ ?

Is your goal to publish to DNF or COPR, or to make your own RPM repo from this GitHub repo ?

@Malix-Labs Malix-Labs changed the title Are you aware that rustdesk already ships official RPM packages ? Are you aware that RustDesk already ships official RPM packages ? Oct 5, 2024
@Malix-Labs Malix-Labs changed the title Are you aware that RustDesk already ships official RPM packages ? Publish to DNF / COPR instead Oct 6, 2024
@xlionjuan
Copy link
Owner

My goal is I want just sudo dnf upgrade to upgrade software in the future.

I'm confused why you confused, an I doing anything wrong? Please give advice!

@xlionjuan
Copy link
Owner

I'm not planning to submit to Fedora directly, copr too.

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 6, 2024

an I doing anything wrong? Please give advice!

Making your GitHub repository an RPM repo instead of using COPR which is directly made for that (please read https://docs.fedoraproject.org/en-US/package-maintainers/New_Package_Process_for_New_Contributors/ for real) is a bad practice that should be avoided
It has the infrastructure require, would be easier to maintain, is made exactly for what you are seeking for, and would be easier to enable (dnf copr enable xlionjuan/rustdesk)

However, RustDesk probably qualify to be in the official DNF repository instead of being in the COPR repository, so you could also request it to be included in the official repository instead

@xlionjuan
Copy link
Owner

You could search on RustDesk's discussion

People suggests RustDesk to host its own APT/RPM repository, also submitting to Flathub/Snap Store.

But they seems not plan to do it (at least now) since they only have three people(according to the commit history), their workload is very high.

flathub/flathub#5233

From the last situation RustDesk submitting to Flathub, I know they don't want to dealing anything except the software project itself.

rustdesk/rustdesk#1537 (comment)

If they decide to take over in the future, I won't deny them, but current situation is better than nothing.

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 6, 2024

You don't need to be an official maintainer of the upstream package to publish it to DNF or COPR.

Basically, if what you want is being able to package manage (dnf install, dnf upgrade, ...) a FOSS not already published to repositories, you can, in your current position, already publish it to COPR (like AUR) (get started)
If you want to publish something more official, you could ask to be a DNF maintainer to publish it to DNF (get started)

What you are currently doing by making your GitHub repository an RPM repository (instead of publishing to DNF, or even just COPR) is an half solution and bad practice

And most importantly, publishing to CORP is both better and simpler than the current situation

Publishing to DNF requires that you become an official repository maintainer which is more official
To do that, you could probably just feature request it instead

@xlionjuan
Copy link
Owner

xlionjuan commented Oct 6, 2024

For submitting to COPR:

I'm not planning to do it, because they didn't support direct .rpm upload, it need to build from source, which I'm not able to do, no matter times and my ability.

For submitting to Fedora directly:

I don't have enough time and ability to this, sorry, and I think it is not a great ideas to submit this software that has very high releace frequency, instead, COPR or official RPM repo is the better ideas.

If you suggesting me to asking RustDesk to no matter create a COPR or submitting to Fedora, I don't think it is possible at this moment, they even don't have the Launchpad PPA! Which has way higher marketshare than RPM based distros.

They have NOTHING to distribute their software, and no anybody (except @ besdar is submitting to Flathub, and they have Arch AUR) doing this!

And what can I do is create a small APT/RPM repository, and use shell scripts to download their official GitHub Releases.

I hope you understand something from this story.

Edit: I forgot they have AUR.

@xlionjuan
Copy link
Owner

What you are currently doing by making your GitHub repository an RPM repository (instead of publishing to DNF, or even just COPR) is an half solution and bad practice

I know..I know, I completely understand the difference between Fedora official, COPR, own repo, as well as the difference between Ubuntu official and PPA, but......this is my best efforts, sorry.

@Malix-Labs
Copy link
Author

they didn't support direct .rpm upload, it need to build from source, which I'm not able to do, no matter times and my ability.

https://docs.fedoraproject.org/en-US/quick-docs/publish-rpm-on-copr/#_packaging_from_source_tarballs

@xlionjuan
Copy link
Owner

Thanks but look what I'm found...
https://github.com/rustdesk/rustdesk/releases/download/1.3.1/rustdesk-1.3.1-unsigned.tar.gz

tree rustdesk-1.3.1-unsigned
rustdesk-1.3.1-unsigned
├── rustdesk-1.3.1-aarch64.dmg
├── rustdesk-1.3.1-x86_64.dmg
└── windows-x86_64
    ├── data
    │   ├── app.so
    │   ├── flutter_assets
    │   │   ├── AssetManifest.bin
    │   │   ├── AssetManifest.json
    │   │   ├── assets
    │   │   │   ├── actions_mobile.svg
    │   │   │   ├── actions.svg
    │   │   │   ├── address_book.ttf
    │   │   │   ├── android.svg
    │   │   │   ├── arrow.svg
    │   │   │   ├── auth-apple.svg
    │   │   │   ├── auth-auth0.svg
    │   │   │   ├── auth-azure.svg
    │   │   │   ├── auth-default.svg
    │   │   │   ├── auth-facebook.svg
    │   │   │   ├── auth-github.svg
    │   │   │   ├── auth-gitlab.svg
    │   │   │   ├── auth-google.svg
    │   │   │   ├── auth-okta.svg
    │   │   │   ├── call_end.svg
    │   │   │   ├── call_wait.svg
    │   │   │   ├── chat2.svg
    │   │   │   ├── chat.svg
    │   │   │   ├── checkbox-outline.svg
    │   │   │   ├── chevron_up_chevron_down.svg
    │   │   │   ├── close.svg
    │   │   │   ├── display.svg
    │   │   │   ├── dots.svg
    │   │   │   ├── file.svg
    │   │   │   ├── file_transfer.svg
    │   │   │   ├── folder_new.svg
    │   │   │   ├── folder.svg
    │   │   │   ├── fullscreen_exit.svg
    │   │   │   ├── fullscreen.svg
    │   │   │   ├── gestures.ttf
    │   │   │   ├── home.svg
    │   │   │   ├── icon.svg
    │   │   │   ├── insecure_relay.svg
    │   │   │   ├── insecure.svg
    │   │   │   ├── kb_layout_iso.svg
    │   │   │   ├── kb_layout_not_iso.svg
    │   │   │   ├── keyboard.svg
    │   │   │   ├── linux.svg
    │   │   │   ├── mac.svg
    │   │   │   ├── peer_searchbar.ttf
    │   │   │   ├── pinned.svg
    │   │   │   ├── record_screen.svg
    │   │   │   ├── rec.svg
    │   │   │   ├── refresh.svg
    │   │   │   ├── scam.png
    │   │   │   ├── screen.svg
    │   │   │   ├── search.svg
    │   │   │   ├── secure_relay.svg
    │   │   │   ├── secure.svg
    │   │   │   ├── tabbar.ttf
    │   │   │   ├── transfer.svg
    │   │   │   ├── trash.svg
    │   │   │   ├── unpinned.svg
    │   │   │   ├── voice_call.svg
    │   │   │   ├── voice_call_waiting.svg
    │   │   │   └── win.svg
    │   │   ├── FontManifest.json
    │   │   ├── fonts
    │   │   │   └── MaterialIcons-Regular.otf
    │   │   ├── NOTICES.Z
    │   │   ├── packages
    │   │   │   ├── dash_chat_2
    │   │   │   │   └── assets
    │   │   │   │       ├── placeholder.png
    │   │   │   │       └── profile_placeholder.png
    │   │   │   ├── flex_color_picker
    │   │   │   │   └── assets
    │   │   │   │       └── opacity.png
    │   │   │   ├── wakelock_plus
    │   │   │   │   └── assets
    │   │   │   │       └── no_sleep.js
    │   │   │   └── window_manager
    │   │   │       └── images
    │   │   │           ├── ic_chrome_close.png
    │   │   │           ├── ic_chrome_maximize.png
    │   │   │           ├── ic_chrome_minimize.png
    │   │   │           └── ic_chrome_unmaximize.png
    │   │   └── shaders
    │   │       └── ink_sparkle.frag
    │   └── icudtl.dat
    ├── desktop_drop_plugin.dll
    ├── desktop_multi_window_plugin.dll
    ├── dylib_virtual_display.dll
    ├── file_selector_windows_plugin.dll
    ├── flutter_custom_cursor_plugin.dll
    ├── flutter_gpu_texture_renderer_plugin.dll
    ├── flutter_windows.dll
    ├── librustdesk.dll
    ├── rustdesk.exe
    ├── screen_retriever_plugin.dll
    ├── texture_rgba_renderer_plugin.dll
    ├── uni_links_desktop_plugin.dll
    ├── url_launcher_windows_plugin.dll
    ├── usbmmidd_v2
    │   ├── idd_instructions.txt
    │   ├── License.txt
    │   ├── usbmmidd.cat
    │   ├── usbmmIdd.inf
    │   └── x64
    │       └── usbmmIdd.dll
    ├── WindowInjection.dll
    ├── window_manager_plugin.dll
    └── window_size_plugin.dll

18 directories, 95 files

@xlionjuan
Copy link
Owner

Note that they seems use lots of non standard procedure while building, they existed in
https://github.com/rustdesk/rustdesk/blob/master/build.py
and
https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml

@Malix-Labs
Copy link
Author

I just noticed, it will be a PITA to repackage, but i'll try

Check https://copr.fedorainfracloud.org/coprs/malix-off/RustDesk/package/rustdesk/

@xlionjuan
Copy link
Owner

failed but succeeded ?

@Malix-Labs
Copy link
Author

Deleted my previous comment before having posted the second

The source state succeeded, but the build failed

@xlionjuan
Copy link
Owner

They don't have real tarball, and they're using custom build procedure and didn't put any build script in rpm.spec.

They need build.py and some stuff

https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=rustdesk#n195

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 6, 2024

So I guess it's hard to repackage, or even impossible, at this point ?

the spec (rustdesk/rustdesk@master/res/rpm.spec) seems to be broken, right ?

I don't see how to compile it ourselves

Perhaps using a custom tito build, or even make

@xlionjuan
Copy link
Owner

Maybe someone can port from the Arch AUR's PKGBUILD, but it needs more advanced knowledge.

the spec (rustdesk/rustdesk@master/res/rpm.spec) seems to be broken, right ?

Yes or no, what RustDesk is doing is compile the binary first, and copy and package them into .rpm or .deb, this procedure isn't allowed by COPR or PPA or anything that required build from source.

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 6, 2024

I think it's indeed out of my league

I published rustdesk/rustdesk#9576 to raise this issue

@xlionjuan
Copy link
Owner

xlionjuan commented Oct 6, 2024

And you will be transferred to discussion. If they're willing to, PPA will be first..

@xlionjuan
Copy link
Owner

B2w, Flatpak also hope you build from source too, but due to the complexity of the Flutter, the reviewer accept to build flatpak package by .deb.

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

No branches or pull requests

2 participants