-
-
Notifications
You must be signed in to change notification settings - Fork 944
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
Package rpm (Fedora, CentOS, RedHat) #7
Comments
Attempted to build rpms via OBS (openSUSE Build Service) As talked about here: loki-47-6F-64/sunshine#317 (comment) However, I came to have a few issues, openSUSE has a boost dependency issue. I believe the rpm package could work, however I have not enough knowledge in cmake to fix the Fedora issue. Feel free to use this spec file as a jumping off point for future work on this issue. Thanks, |
@GeoDerp Thanks for looking into this issue! Once we resolve it I think it will be a valuable addition to Sunshine. Tried looking at the logs but not sure exactly where to see the details. I see the run history here: https://build.opensuse.org/packages/Sunshine/job_history/home:GeoDerp:Sunshine/Fedora_35/x86_64 But no logs. Do I need to be logged in to opensuse? Also, what exactly is opensuse? Ideally we could create the rpm using github actions as part of the |
Fedora 35:
Fedora Rawhide:
you should be able to view the spec file and also click the "failed" button here under each repo to view there logs: https://build.opensuse.org/package/show/home:GeoDerp:Sunshine/Sunshine however, for a shortcut, here's the link to the Fedora's: Fedora 35: https://build.opensuse.org/package/live_build_log/home:GeoDerp:Sunshine/Sunshine/Fedora_35/x86_64 Fedora Rawhide: https://build.opensuse.org/package/live_build_log/home:GeoDerp:Sunshine/Sunshine/Fedora_Rawhide/x86_64
Simple answer, imagine Fedora but German (by SUSE). They run things very similarly to RedHat (use rpm's however use I personally am using Fedora, and the Fedora package is way further in working. So I would recommend getting that working first. Then we can have a look at this weird boost dependencie issue of openSUSE. OBS (openSUSE build Service) is a cloud service for maintaining and creating RPM's, they also allow you to add custom variables in place to support building for diffrent Linux distributions. You can also download the project's repo locally and have that supply updates for you. Also, for my case, can input a _service file to tell OBS to pull the latest version of the git repo before build. AKA, it's quite nice.
one note: I have been building it without cuda, I dont know if you want to build with or have an option for one with and one without I'm doing also local RPM tests of Fedora 35 so if there is any local generated logs you need let me know |
Probably best to include it, I would think. Are there advantages to not including it? Again, just to re-iterate. It would be best to have everything packaging inside the workflow, either via scripts or some other means. I will try to describe the automatons, so maybe it make more sense why this would be best.
So basically the process of releasing is completely automated. Perhaps we could add your spec file (once it's working) to this repo, and then use this github action (https://github.com/marketplace/actions/rpm-build) in our workflow to build the rpm? Regarding why the build is failing, I'm not entirely sure and I'm no expert on Linux. Just comparing your spec file to the dockerfile this is what I notice.
Then I notice you have some extra things not in the dockerfile, maybe not a big deal, but potentially one of them is interfering? Probably some of these should be added to the dockerfile as well. |
Sounds like a plan Having a look at it now, but I have used your docker file : in my local build
and I get:
note: thats after adding "libcap-devel" to the dokerfile, as it was having an error with that first |
okay, I may have got it running inside of toolbox. Doing more testing... |
With the RPM's I can indeed confirm there are issues with the third party more specifically: errors:
or with build type set to debug
These are possibly errors you have always had. But because rpm building is more strict on the CMake, it only shows up here and not just as a warning I dont have enough knowledge to know what varibles to feed cmake to give to full debug for the reason why toolbox could build fine and not the Dockerfile, it could be a security issue, with toolbox patching in something that isnt configured in the Dockerfile, causing it to have issues. maybe some local binarys or the local Nvidia driver??? |
Should we use cpack? https://cmake.org/cmake/help/latest/cpack_gen/rpm.html |
I dont see why not to try it. Been looking into it, however my cmake knowledge is low, so it will require a bit of effort to know now to modify the CMakeList to support CPack correctly. On a side note: this might just be me, but when building, even with CUDA installed when running the cmake it spits out:
This could be just because im running the build in a toolbox session Also, wayland is enabled in the cmake, however I dont believe sunshine has wayland support correct? (from my testing it just shows a black screen), or am I too tired and have gotten something wrong |
I'm sorry, I just don't know enough of CMake yet to work out CPack. However, I did do some more testing on my .spec file and found when building the When doing my testing with cmake, I now feed it:
however, still the same error occurs:
|
@thatsysadmin mind if we move discussion here?
Using a script to build an rpm would be acceptable for now (I think cpack would be ideal in the end, as it supports a whole bunch of packaging methods). A script is how the deb package is currently done, so no issue with that method. The build scripts and dockerfiles will likely need to be updated. Scripts may need an additional argument or some way to know which type of package to build. Currently, there is a The deb script is here: https://github.com/SunshineStream/Sunshine/blob/master/gen-deb.in It's converted to an .sh script during the cmake build process. This allows variables to set in the file, such as version number, and directories. Would certainly appreciate any help implementing this! |
Sure; no problem. |
This is what I have done @ReenigneArcher so far: spec file: Version set up for openSUSE build
general errors:
How I have tried to fix this:today I tried my best to bump the cps sub module and using ffmpeg5. (not saying that this is the cause or will fix anything) right now I having had errors with config.h, where there is an issue with finding the endianness (haven't tried a spec file test locally today so this may just be a issue with openSUSE build)
and some repeating errors in, different files, like this:
however I believe replacing those sections of the code from the old (Current Sunshine) version will fix this issue (I think I haev already successfully done it with one file). Please understand that im learning as I go, which includes me possibly going on a wild goose chase to fix all the issues |
This is a known problem. We have a couple of PRs related to this, but could use some help fixing on the linux side. My attempt at building ffmpeg libraries for linux (at least on debian)... but the Windows build started failing due to changes on media-autobuild_suite. I believe the libraries for linux are okay. We've been discussing some other ways to use ffmpeg instead of these manual builds. Perhaps vcpkg.
No worries! We're all learning! We appreciate your efforts! |
I sort of got my I'll see if I can wrap it up tomorrow, then test out the RPM package that comes out of it. I've modified the Fedora dockerfiles to call an option ( |
@thatsysadmin Perfect! Having added the |
There has been progress on my side! Using @PapyKahan pull request #50 and using ffmpeg5 RPM I branched: https://build.opensuse.org/package/show/home:GeoDerp:Sunshine/ffmpeg-5 ....
[100%] Linking CXX executable sunshine
/usr/bin/cmake -E cmake_link_script CMakeFiles/sunshine.dir/link.txt --verbose=1
/usr/bin/g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DNDEBUG -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -rdynamic CMakeFiles/sunshine.dir/third-party/moonlight-common-c/reedsolomon/rs.c.o CMakeFiles/sunshine.dir/third-party/moonlight-common-c/src/RtspParser.c.o CMakeFiles/sunshine.dir/sunshine/upnp.cpp.o CMakeFiles/sunshine.dir/sunshine/cbs.cpp.o CMakeFiles/sunshine.dir/sunshine/config.cpp.o CMakeFiles/sunshine.dir/sunshine/main.cpp.o CMakeFiles/sunshine.dir/sunshine/crypto.cpp.o CMakeFiles/sunshine.dir/sunshine/nvhttp.cpp.o CMakeFiles/sunshine.dir/sunshine/httpcommon.cpp.o CMakeFiles/sunshine.dir/sunshine/confighttp.cpp.o CMakeFiles/sunshine.dir/sunshine/rtsp.cpp.o CMakeFiles/sunshine.dir/sunshine/stream.cpp.o CMakeFiles/sunshine.dir/sunshine/video.cpp.o CMakeFiles/sunshine.dir/sunshine/input.cpp.o CMakeFiles/sunshine.dir/sunshine/audio.cpp.o CMakeFiles/sunshine.dir/sunshine/process.cpp.o CMakeFiles/sunshine.dir/sunshine/network.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/x11grab.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/kmsgrab.cpp.o CMakeFiles/sunshine.dir/generated-src/xdg-output-unstable-v1.c.o CMakeFiles/sunshine.dir/generated-src/wlr-export-dmabuf-unstable-v1.c.o CMakeFiles/sunshine.dir/sunshine/platform/linux/wlgrab.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/wayland.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/publish.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/vaapi.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/graphics.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/misc.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/audio.cpp.o CMakeFiles/sunshine.dir/sunshine/platform/linux/input.cpp.o CMakeFiles/sunshine.dir/third-party/glad/src/egl.c.o CMakeFiles/sunshine.dir/third-party/glad/src/gl.c.o -o sunshine-0.11.1 third-party/miniupnp/miniupnpc/libminiupnpc.a -lstdc++fs third-party/moonlight-common-c/enet/libenet.a -lopus -lavformat -lavdevice -lavcodec -lavutil -lswscale -Wl,-Bstatic -lboost_log -lboost_filesystem -lboost_date_time -lboost_log_setup -lboost_thread -lboost_regex -lboost_chrono -lboost_atomic -Wl,-Bdynamic -lssl -lcrypto -ldrm -lcap -lwayland-client -lwayland-server -lwayland-egl -lwayland-cursor -ldl -levdev -lpulse -lpulse-simple /usr/lib64/libboost_log.a /usr/lib64/libboost_log_setup.a /usr/lib64/libboost_filesystem.a /usr/lib64/libboost_thread.a /usr/lib64/libboost_date_time.a /usr/lib64/libboost_regex.a /usr/lib64/libboost_chrono.a /usr/lib64/libboost_atomic.a
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::close(CodedBitstreamContext*)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::write(util::uniq_ptr<CodedBitstreamContext, util::Destroy<CodedBitstreamContext*, void, &cbs::close> > const&, unsigned char, void*, AVCodecID)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:53: undefined reference to `ff_cbs_insert_unit_content'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:61: undefined reference to `ff_cbs_write_fragment_data'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::write(unsigned char, void*, AVCodecID)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:78: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::make_sps_h264(AVCodecContext const*)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:78: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:108: undefined reference to `ff_h264_guess_level'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::make_sps_hevc(AVCodecContext const*, AVPacket const*)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:173: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:179: undefined reference to `ff_cbs_read_packet'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:229: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::read_sps_h264(AVPacket const*)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:247: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:253: undefined reference to `ff_cbs_read_packet'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:78: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::validate_sps(AVPacket const*, int)':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:274: undefined reference to `ff_cbs_init'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:280: undefined reference to `ff_cbs_read_packet'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::write(util::uniq_ptr<CodedBitstreamContext, util::Destroy<CodedBitstreamContext*, void, &cbs::close> > const&, unsigned char, void*, AVCodecID) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::write(unsigned char, void*, AVCodecID) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::make_sps_h264(AVCodecContext const*) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::make_sps_hevc(AVCodecContext const*, AVPacket const*) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::read_sps_h264(AVPacket const*) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
/usr/bin/ld: /tmp/ccTKRHGW.ltrans0.ltrans.o: in function `cbs::validate_sps(AVPacket const*, int) [clone .cold]':
/home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:46: undefined reference to `ff_cbs_fragment_free'
/usr/bin/ld: /home/Geo/rpmbuild/BUILD/sunshine-master/sunshine/cbs.cpp:16: undefined reference to `ff_cbs_close'
collect2: error: ld returned 1 exit status
gmake[2]: *** [CMakeFiles/sunshine.dir/build.make:611: sunshine-0.11.1] Error 1
gmake[2]: Leaving directory '/home/Geo/rpmbuild/BUILD/sunshine-master/redhat-linux-build'
gmake[1]: *** [CMakeFiles/Makefile2:140: CMakeFiles/sunshine.dir/all] Error 2
gmake[1]: Leaving directory '/home/Geo/rpmbuild/BUILD/sunshine-master/redhat-linux-build'
gmake: *** [Makefile:94: all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.1kxv7Q (%build)
spec file: #
# spec file for package Sunshine
#
# GNU General Public License v3.0 2022
#
Name: sunshine
Version: master
Release: %{version}
Summary: Sunshine is a Gamestream host for Moonlight
License: GPL-3.0 License
Group: System/GUI/Other
URL: https://github.com/SunshineStream/Sunshine
Source0: %{name}-%{version}.tar.xz
#change to "without" to disable
%bcond_with Wayland
%bcond_with X11
%bcond_with Cuda
%define SUNSHINE_EXECUTABLE_PATH /usr/bin/sunshine
%define SUNSHINE_ASSETS_DIR /etc/sunshine
#set off by default
%define SUNSHINE_ENABLE_WAYLAND OFF
%define SUNSHINE_ENABLE_X11 OFF
%define SUNSHINE_ENABLE_DRM OFF
%define SUNSHINE_ENABLE_CUDA OFF
BuildRequires: boost-devel
%if 0%{?is_opensuse}
BuildRequires: libboost_filesystem-devel
BuildRequires: libboost_log-devel
BuildRequires: libboost_system-devel
BuildRequires: libboost_thread-devel
BuildRequires: libboost_atomic-devel
%else
BuildRequires: boost-static
%endif
BuildRequires: cmake
BuildRequires: ffmpeg-private-devel
BuildRequires: ffmpeg-5-libavdevice-devel
BuildRequires: ffmpeg-5-libavfilter-devel
BuildRequires: ffmpeg-5-libpostproc-devel
BuildRequires: ffmpeg-5-libswscale-devel
BuildRequires: pkgconfig(libavutil)
BuildRequires: gcc-c++
BuildRequires: libevdev-devel
BuildRequires: mesa-libGL-devel
BuildRequires: openssl-devel
BuildRequires: opus-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: libcap-devel
%if %{without X11}
BuildRequires: libX11-devel
BuildRequires: libxcb-devel
BuildRequires: libXcursor-devel
BuildRequires: libXinerama-devel
BuildRequires: libXi-devel
BuildRequires: libXrandr-devel
BuildRequires: libXtst-devel
BuildRequires: libXfixes-devel
%endif
%if %{without Wayland}
BuildRequires: wayland-devel
BuildRequires: wayland-protocols-devel
%endif
# if with then on
%if %{without Wayland}
%define SUNSHINE_ENABLE_WAYLAND ON
%endif
%if %{without X11}
%define SUNSHINE_ENABLE_X11 ON
%endif
%if %{without Cuda}
%define SUNSHINE_ENABLE_CUDA ON
%endif
%description
Sunshine is a Gamestream host for Moonlight
%prep
#%setup -q
%autosetup -p1 -n %{name}-%{version}
%build
%cmake \
-DCMAKE_BUILD_TYPE=Release \
-DSUNSHINE_EXECUTABLE_PATH=%{SUNSHINE_EXECUTABLE_PATH} \
-DSUNSHINE_ASSETS_DIR=%{SUNSHINE_ASSETS_DIR} \
-DSUNSHINE_ENABLE_WAYLAND=%{SUNSHINE_ENABLE_WAYLAND} \
-DSUNSHINE_ENABLE_X11=%{SUNSHINE_ENABLE_X11} \
-DSUNSHINE_ENABLE_DRM=ON \
-DSUNSHINE_ENABLE_CUDA=%{SUNSHINE_ENABLE_CUDA} \
-DLIBAVDEVICE_INCLUDE_DIR=/usr/include/ffmpeg -DLIBAVDEVICE_LIBRARIES=/usr/lib64/libavdevice.so \
-DLIBAVFORMAT_INCLUDE_DIR=/usr/include/ffmpeg -DLIBAVFORMAT_LIBRARIES=/usr/lib64/libavformat.so \
-DLIBAVUTIL_INCLUDE_DIR=/usr/include/ffmpeg -DLIBAVUTIL_LIBRARIES=/usr/lib64/libavutil.so \
-DLIBSWSCALE_INCLUDE_DIR=/usr/include/ffmpeg -DLIBSWSCALE_LIBRARIES=/usr/lib64/libswscale.so \
-DLIBAVCODEC_INCLUDE_DIR=/usr/include/ffmpeg -DLIBAVCODEC_LIBRARIES=/usr/lib64/libavcodec.so
%cmake_build
%install
%cmake_install -j ${nproc}
%check
%ctest
%files
%dir "/etc/sunshine/"
%config "/etc/sunshine/apps_linux.json"
%dir "/etc/sunshine/shaders/"
%dir "/etc/sunshine/shaders/opengl/"
%config "/etc/sunshine/sunshine.conf"
%dir "/etc/sunshine/web/"
%dir "/etc/sunshine/web/third_party/"
"/etc/udev/rules.d/85-sunshine-rules.rules"
"/usr/bin/sunshine"
"/usr/lib/systemd/user/sunshine.service Im too tired to debug any more, but Ill have a look next time im free and see what might be the cause |
It's not ideal, but I might need to do the rpmbuild in the home folder. I wanted it to be in the build folder, but there seems to be no way to set an alternate rpmbuild directory. Ugh. |
Sorry @thatsysadmin, but I'm currently quite busy and can't unfortunately have a look at this right now. Alternatively you could use GitHub Actions, openSUSE Build Service or an alternative CI/CD to build and delver a result or an error. Tip, if your testing through rpmbuild, Toolbox/Podman is your friend |
All right; I may have something that works somewhat. That took way more time than I thought it would. The catches with this are that it packages the sunshine binary as a bash script, it doesn't compile from source; meaning that it will never output SRPMs. If I want to do that, I have to use Couple more things I will have to figure out are where to slip the unit files and the EDIT: I'm also kinda hoping I replaced all the hard paths with the |
@thatsysadmin stupid question... would it be possible to use the same .desktop file as we're using for the AppImage? https://github.com/SunshineStream/Sunshine/blob/master/sunshine.desktop.in You're method uses a Dockerfile correct? If that is the case I don't see an issue with use the home directory, as it within the container. So, as I understand you are building sunshine normally, instead of using We can figure out if it fails when you submit the PR. There will some automated builds when that happens. Appreciate your efforts! |
Very likely. I have to figure out where they usually go though.
You can, but if someone calls the
Correct. I'll probably build a specfile that'll generate an SRPM for Fedora COPR/OpenSUSE OBS later. |
Stupid question: Do you know where the |
It's in the repo root initially. Cmake should put it in the build directory next to gen-deb. |
The package I built is mostly complete now, including the supplemental files needed. Just tested it. Right now, the main issue is that you can't run it as your user; you have to run it as root because it can't create a mouse device and also presumably a keyboard device. Running with Running the |
Are you trying to get the package to take care of these setup commands? https://github.com/SunshineStream/Sunshine/wiki/Usage#linux |
Yeah, pretty much. That's what the Debian package sort of does too. |
Oh, I thought that was a manual step. Didn't realize the package does that automatically. |
This feature has been added and will be available in the next release. |
Sunshine does not currently have a method to package rpm.
If you have experience with packaging rpm and would like to contribute a PR would be very appreciated!
Edit: Should we consider using CPack? https://cmake.org/cmake/help/latest/module/CPack.html
Here is an example: https://github.com/docopt/docopt.cpp/blob/6f5de76970be94a6f1e4556d1716593100e285d2/CMakeLists.txt#L136
The text was updated successfully, but these errors were encountered: