xlionjuan / rustdesk-rpm-repo

Unofficial RustDesk rpm (and SUSE) repo (latest&nightly)
1 stars 0 forks source link

Publish to DNF / COPR instead #1

Open Malix-Labs opened 1 week ago

Malix-Labs commented 1 week ago

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 ?

xlionjuan commented 1 week ago

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 commented 1 week ago

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

Malix-Labs commented 1 week ago

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 commented 1 week ago

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.

https://github.com/flathub/flathub/pull/5233

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

https://github.com/rustdesk/rustdesk/discussions/1537#discussioncomment-10533094

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

Malix-Labs commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

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
Malix-Labs commented 1 week ago

I also failed to publish it on COPR myself

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

Even a manual build from https://github.com/rustdesk/rustdesk/blob/master/res/rpm.spec :

https://copr.fedorainfracloud.org/coprs/malix-off/RustDesk/build/8111515/

Here is the log : https://download.copr.fedorainfracloud.org/results/malix-off/RustDesk/srpm-builds/08111515/builder-live.log.gz

xlionjuan commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

failed but succeeded ?

Malix-Labs commented 1 week ago

Deleted my previous comment before having posted the second

The source state succeeded, but the build failed

xlionjuan commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

I think it's indeed out of my league

I published https://github.com/rustdesk/rustdesk/discussions/9576 to raise this issue

xlionjuan commented 1 week ago

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

xlionjuan commented 4 days ago

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.

Malix-Labs commented 2 days ago

I think they absolutely fucked their build process There can't not be something very wrong in how they did things.

xlionjuan commented 2 days ago

It may be the problems on the Flutter, also it may be the reason why Flathub reviewer suddenly agreed that they don't need to build from the source when they heard "Flutter".

Malix-Labs commented 2 days ago

Having worked with Flutter, it is not fun to work with, indeed. However, they don't have a working RPM spec, right? So it's not only Flutter I have no idea how to build a RPM from it myself

xlionjuan commented 2 days ago

What they did is using build.py and make lots of things dynamically generated, maybe they want to edit their process and apply to multiple Linux distros.

Malix-Labs commented 2 days ago

I mean sure but now how to actually do it ? Where even is the documentation for it ? It gives serious skill issues vibes

xlionjuan commented 2 days ago

They have working GitHub Actions haha.

Malix-Labs commented 2 days ago

Yeah but then the .spec file is not enough so broken by design

And about the working GitHub action :

https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml

Absolutely uncanny

xlionjuan commented 2 days ago

Over 70k stars project and still only 3 people working on this project, this is more uncanny.

Malix-Labs commented 2 days ago

Yeah definitely, you're kind of brave to even attempt to make it to work, and I was very delusional to think I could even try to build from source

Malix-Labs commented 2 days ago

However, maybe rpmfusion could accept it? idk

Malix-Labs commented 2 days ago

Damn ! https://flathub.org/apps/com.rustdesk.RustDesk

xlionjuan commented 2 days ago

It is very weird to put a full open source software in RPM Fusion, and I don't think build from source is impossible, look at the Arch AUR's PKGBUILD, it is doing great jobs, what we need is some experts port that to other platforms, but it has some risks that it may breaking easily if upstream changed something.

I'm worried if the RPM/APT repo become popular due to GitHub Pages has 100GB limit

I found Cloudflare R2, it seems great that RustDesk can build by himself Screenshot_20241015-190204.png

xlionjuan commented 2 days ago

Damn ! https://flathub.org/apps/com.rustdesk.RustDesk

It is built from .deb haha

xlionjuan commented 2 days ago

Success!

https://rpm-repo-test.xlion.dev

https://github.com/xlionjuan/rustdesk-rpm-repo/actions/runs/11345273003/job/31551803547

Malix-Labs commented 2 days ago

Wouldn't it be possible to build from source though ?

xlionjuan commented 2 days ago

Wouldn't it be possible to build from source though ?

I just hope RustDesk can have its own APT/RPM repo, Cloudflare R2 may be the great solution.

Malix-Labs commented 2 days ago

The best thing would be COPR technically

xlionjuan commented 2 days ago

Not possible in short term

Malix-Labs commented 2 days ago

True