-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Jackett "Standalone" aka build using .NET #4207
Conversation
@publicarray Thanks for copying me in. I've stopped using Synology NASs some time ago, and as such, am no longer maintaining this package. As such please feel free to put yourself or just SynoCommunity in as maintainer. In any case, I remember very vividly that maintaining mono has been more than painful. As such, this PR and your efforts here to circumvent the mono dependency will clearly be beneficial and appreciated by the community! |
Oh I am curious, Can I ask what you are using instead for storage? Thank you for your kind words 🙏 Most of the hard work was done in the Jackett repository and by their maintainers. But thanks none the less 😄 |
I've built my own NAS. If you are interested in the background and you understand (some) German, you can find the whole story here: https://www.kodinerds.net/index.php/Thread/65922-Neues-NAS-Server/?pageNo=1. |
@m4tt075 Thank you! That is very interesting. (Ich kann Deutsch sprechen 😄) |
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 recommend to replace original "jackett" (with Mono runtime) with new version compiled by dotNetCore and to confirm upgrade process allows user to keep application configuration and data.
a7057e5
to
a383a5d
Compare
@ymartin59 Done, I replaced the original jackett. Note that some older 32-bit architectures are not supported. I've also created generic makefiles for .net |
a84da92
to
7f773de
Compare
@publicarray So it means package is no longer available for "evansport" whereas this architecture is still supported with DSM 7? It is quite annoying. What prevents i686 compilation to work with dotnet-core? |
There is no support for 32 bit linux with .NET (formerly named dotnet core). 32 bit is supported only on ARM (linux arm32) and windows (x86). |
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 I would request effort to keep Jackett for archs not supported by dotnetcore, thanks to a conditional build with Mono. At least for archs still under support with DSM 7...
spk/jackett/Makefile
Outdated
REQUIRED_DSM = 5.0 | ||
# no PPC support for mono, see cross/mono/Makefile for details | ||
UNSUPPORTED_ARCHS = $(PPC_ARCHS) | ||
UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS) $(i686_ARCHS) $(ARMv7L_ARCHS) |
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.
What about to conditionally produce Mono package version for these "unsupported archs"?
Same package name but different dependencies, build target and startup script according to arch with either Mono or dotnetcore support...
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 gave it a go, let me know what you think.
The native build use pre-build binaries to speed up compile time. I don't see a reason to compile dotnet-sdk
This commit drops support for i686 and ARMv5
new variable DOTNET_VERSION makes it easy to switch .NET versions
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.
Thanks for this effort. Looks good.
Does it really make sense to include dotnet-sdk-3.1 here? You may keep files aside for you/future applications, but I guess there is little chance an application remains on old sdk version?
Sorry but I still have some minor improvements. Then I will test this "branching" package as I have evansport.
spk/jackett/Makefile
Outdated
DESCRIPTION = "Jackett works as a proxy server. It translates queries from apps into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. Jackett is a single repository of maintained indexer scraping and translation logic - removing the burden from other apps." | ||
RELOAD_UI = yes | ||
DISPLAY_NAME = Jackett | ||
STARTABLE = yes | ||
CHANGELOG = "Add workaround for mono bug with armv5/88f6281" | ||
CHANGELOG = "Compile using .NET Core" |
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 would manage ChangeLog conditionally according to target arch... either mono or dotnetcore
spk/jackett/Makefile
Outdated
ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) | ||
DEPENDS = cross/$(SPK_NAME)-mono | ||
SERVICE_SETUP = src/service-setup-mono.sh | ||
endif | ||
ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) | ||
DEPENDS = cross/$(SPK_NAME)-mono | ||
SERVICE_SETUP = src/service-setup-mono.sh | ||
endif | ||
ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) | ||
DEPENDS = cross/$(SPK_NAME)-mono | ||
SERVICE_SETUP = src/service-setup-mono.sh | ||
endif |
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.
Same statements. Please use a single "ifeq" condition with all of them, and include ChangeLog here
jellyfin is still on 3.1 (at least until 10.7 is released). But generally agree. |
After upgrading on DS218+, couldn't start package. Had to manually downgrade to last working version. |
Thanks @Wuszek. Sigh. Why is it never simple... Are there any logs? |
Where do I look @publicarray ? Now I have installed Jackett from the previous release (and this mono version installed and started fine), but maybe logs are still somewhere over there This is part of synopkg.log, from upgrade to uninstall. Maybe I should install it from the scratch, because upgrade didn't work? This is fragment of synoservice.log |
Thanks @Wuszek, Sorry do you have a log file at |
@publicarray ok, so I just upgraded Jackett in Package Center and I get "Couldnt start up package" notification. This is jackett.log: Sun Feb 21 13:21:56 CET 2021 |
Thanks that explains it clearly. The glibc is too old. The x64 I'm testing on must have a slightly newer version. |
Is there a command to check which version I am using? I tried but there is no strings command |
@publicarray ping me pls when there would be fix for this, Im willing to test this |
Thanks @Wuszek what is the output of
As a workaround you can copy the lib from a linux box:
I've deactivated the .NET versions of the package for now My host libstdc++.so.6ls -l /lib64/libstdc++.so.6 $ strings /lib64/libstdc++.so.6 | grep GLIBCXX |
@publicarray output:
OK, I tried your fix and scp this library from linux mint (it is 6.0.28). There was no /var/packages/jackett/target/lib/ folder, so I made one. App still won't start, the same information in logs as before. I can see, that this copy is not a symbolic link.
Found this, may be helpful dotnet/runtime#33384 |
@Wuszek We're also very keen to finalize the switch away from mono for Radarr... Would you be up for joining the radarr discord and trying out a few ideas? https://radarr.video/discord |
Motivation: #3697 (comment)
Linked issues: #3697
CC @m4tt075
Caveats:
x64
,ARM 8
andARM 7
are supported,so I've moved it to a new package:jackett-dotnet
* Currently the .NET framework keeps data in~/.dotnet
, so I useddocker run --name spksrc --rm -it -v $HOME/git/spksrc:/spksrc:delegated -v :/root/.dotnet synocommunity/spksrc:latest /bin/bash
to run dockerBuild: https://github.com/publicarray/spksrc/releases/tag/jackett-dotnet-0.16.1583
Checklist
all-supported
completed successfully