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 · 39 comments
Open

Publish to DNF / COPR instead #1

Malix-Labs opened this issue Oct 5, 2024 · 39 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.

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 15, 2024

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

@xlionjuan
Copy link
Owner

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
Copy link
Author

Malix-Labs commented Oct 15, 2024

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
Copy link
Owner

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
Copy link
Author

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

@xlionjuan
Copy link
Owner

They have working GitHub Actions haha.

@Malix-Labs
Copy link
Author

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
Copy link
Owner

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

@Malix-Labs
Copy link
Author

Malix-Labs commented Oct 15, 2024

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
Copy link
Author

However, maybe rpmfusion could accept it?
idk

@Malix-Labs
Copy link
Author

@xlionjuan
Copy link
Owner

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
Copy link
Owner

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

It is built from .deb haha

@Malix-Labs
Copy link
Author

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

@xlionjuan
Copy link
Owner

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
Copy link
Author

The best thing would be COPR technically

@xlionjuan
Copy link
Owner

Not possible in short term

@Malix-Labs
Copy link
Author

True

@xlionjuan xlionjuan pinned this issue Nov 5, 2024
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