Created attachment 214308 [details] nicotine.diff Nicotine+ is a graphical client for the SoulSeek peer-to-peer system.
Created attachment 214614 [details] nicotine-v2.diff Bumped to 7af728a. Lot's of things happened, they cleaned the code upstream.
Created attachment 214894 [details] nicotine-v3.diff Since there's no commiter review yet, I'll keep testing new commits from time to time. The work is going pretty well and the developers are improving the software, so I think' it's a good idea. There's no final release yet, but the software is fine to use it. I'm testing myself from time to time.
Created attachment 215303 [details] nicotine-v4.diff Lots of fixes upstream. Some issues are now fixed upstream so there's no need to patch setup.py anymore.
No need to define GH_PROJECT add LICENSE_FILE= ${WRKSRC}/COPYING There is no version 1.4.2 upstream, use DISTVERSION= g2020XXXX instead (Example 5.13. Using USE_GITHUB When Upstream Does Not Use Versions) I'm not sure you're allowed to remove the "Created by" line. Have you asked acm@ to take over maintainership?
(In reply to Mikael Urankar from comment #4) Ask for a package deprecated more than 10 years?
(In reply to Daniel Menelkir from comment #5) Oh, my bad. nicotine++ was deprecated in 2013, nicotine was in 2009. Anyways, both was deprecated a long time ago.
Created attachment 215318 [details] nicotine-v5.diff (In reply to Mikael Urankar from comment #4) Fixed.
Created attachment 215528 [details] nicotine-v6.diff Bumped to commit d5bdfa1.
Created attachment 216913 [details] Updated to 2.0.1 Updated to last stable: 2.0.1
Why is USES= tar:bz2 set if it's a tar.gz archive? This most likely also fixes why you need to set EXTRACT_SUFX in the first place. Is you dependency list correct? Alpine, Arch and Void lists more deps.... https://pkgs.alpinelinux.org/package/edge/testing/x86_64/nicotine-plus https://www.archlinux.org/packages/community/any/nicotine+/ https://github.com/void-linux/void-packages/blob/master/srcpkgs/nicotine%2B/template
Created attachment 216917 [details] nicotine-v8.diff (In reply to daniel.engberg.lists from comment #10) Oops.. I was changing from using a commit to a release and forgot to remove some things, my bad. It's fixed now Miniupnp wasn't working with my tests, maybe it's my setup. I've added the missing gobject too.
Have a look at Example 5.39, I think that'll reduce quite a bit of code. https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/makefile-options.html Give Poudriere a run as your port needs to build using it. It'll also catch dependency issues among other things.
(In reply to daniel.engberg.lists from comment #12) I can't see the new deps, am I missing something? About the code size, afaik the old commiter code had way more code than mine that now is just quite tiny, you mean the python variables? I don't know how could be improved. But fine, I'll just give up trying to bring nicotine back.
Instead of doing .if statments you could use OPTION_RUN_DEPENDS= XXX instead. GTK(+)3 is missing? Is it intentional to have all options removed? You're making good progress, it's easy to miss dependencies especially if you're only testing on a non clean system hence why I recommended using poudriere.
(In reply to daniel.engberg.lists from comment #14) My copy doesn't have any .if statements, only the original one from 2013 had. GeoIP is pretty much useless for nicotine nowadays since that geoblock doesn't work as expected anymore. Without mutagen, most searches become unclean because nicotine isn't able to read id3.
I see and I apologize for reading diffs sloppy :/ So just to be clear GTK3 is unnecessary?
Created attachment 216948 [details] nicotine-v9.diff Added the gtk30 missing USE.
I'll try to update this today.
Created attachment 218797 [details] nicotine-v10.diff Bumped to 2.1.2.
Should I gave up on this port?
I don't think so, have you tried your patch using poudriere? Having a quick look it seems you're missing plist?
(In reply to daniel.engberg.lists from comment #21) The name is also wrong, I'll close this one and open as a new name since it fits better. Also, at this point I've rewritten and there's nothing left from the original author of this port.
Created attachment 221812 [details] nicotine-v11.diff (In reply to Daniel Menelkir from comment #22) Nevermind, they'll not change the name. Sigh. Anyways, here's my last patch from zero (since the difference is way so far from the abandoned port from 7 years ago), It's being since may/2020 that I'm trying to adopt this port and I don't see this going anywhere.
Created attachment 223242 [details] v12 Bumped to last release.
I'll reopen this since there's more people interested on this port.
Fails to install ===> Staging for nicotine-plus-3.0.2 ===> nicotine-plus-3.0.2 depends on package: py37-mutagen>0 - found ===> nicotine-plus-3.0.2 depends on package: py37-gobject3>0 - found ===> nicotine-plus-3.0.2 depends on package: py37-gdbm>0 - found ===> nicotine-plus-3.0.2 depends on package: py37-miniupnpc>0 - found ===> nicotine-plus-3.0.2 depends on package: py37-setuptools>0 - found ===> nicotine-plus-3.0.2 depends on file: /usr/local/bin/python3.7 - found ===> Generating temporary packing list sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found sh: msgfmt: not found running install ... writing byte-compilation script '/tmp/tmpw_b3x7u6.py' /usr/local/bin/python3.7 /tmp/tmpw_b3x7u6.py removing /tmp/tmpw_b3x7u6.py running install_data error: can't copy 'mo/hu/LC_MESSAGES/nicotine.mo': doesn't exist or not a regular file *** Error code 1 Stop. make: stopped in /usr/ports/net-p2p/nicotine-plus
Created attachment 223361 [details] v13 I forgot gettext in USES.
This probably only needs gettext-tools. Now if fails on staging: ====> Running Q/A tests (stage-qa) Error: Package names are not unique with flavors: py37: nicotine-plus-3.0.2 py38: nicotine-plus-3.0.2 py39: nicotine-plus-3.0.2 Error: maybe use <flavor>_PKGNAMEPREFIX/SUFFIX. Please ensure that the port builds successfully in poudriere before the next submission.
Created attachment 223376 [details] v14 Here's my fix.
Created attachment 226066 [details] v15 Update and cleanup.
I've updated and check it up. Builds fine, I don't know what more it needs.
Hi Daniel, thanks for updating the patch A few review items: COMMENT should match upstream setup.py:description modulo portlint requirements: setup.py: description="Graphical client for the Soulseek file sharing network", Use MASTER_SITES=CHEESESHOP if a Python package is registered on PyPI, unless there is a compelling (temporary) case not to. [1] Use PKGNAMEPREFIX, unless there is a compelling case not to. [2] A dd python as a secondary category, unless there is a compelling reason not to. [3] Don't restrict USES=python:<version-spec> (currently only 3.8). <version-spec> is declarative ("supports" <version-spec> versions) not imperative ("use" <version-spec> versions). Upstream defines python_requires='>=3.5', (setup.py) [4] All dependency <version-spec>'s should be defined as completely and accurately as possible to match upstreams declarations [5] . One example here is: setup.py: install_requires=['PyGObject>=3.18'], Related: Where are the dependencies for mutagen/miniupnpc declares? GH_* defaults to PORTNAME and PORTVERSION already, and are unnecessary: GH_PROJECT= ${PORTNAME} GH_TAGNAME= ${PORTVERSION} Python ports should use autoplist and (concurrent where necessary) [6] unless there is a compelling reason not to Related, USE_PYTHON=concurrent must be used when a Python port installs files that are not Python-version specific in shared locations [7]. This one does: bin/nicotine share/applications/* share/doc/* share/icons/* share/locale/* share/man/* share/metainfo/* The default concurrent files list may not pick up some of the above, so you may need to add entries to UNIQUE_FILES / UNIQUE_DIRS or related variables. See: /usr/ports/Mk/Uses/python.mk:concurrent and /usr/ports/Mk/Uses/uniquefile.mk As far as what else would be good to progress this port, confirmation of QA (portlint and poudriere) [8] would be great. Test with both the default and a non-default Python version If you need help with respect to this port, porting in general or other Python ports, just jump on our #freebsd-ports and/or #freebsd-python IRC [9] channels. [1] https://wiki.freebsd.org/Python/PortsPolicy#MASTER_SITES [2] https://wiki.freebsd.org/Python/PortsPolicy#PKGNAMEPREFIX [3] https://wiki.freebsd.org/Python/PortsPolicy#CATEGORIES [4] https://wiki.freebsd.org/Python/PortsPolicy#USES.3Dpython [5] https://wiki.freebsd.org/Python/PortsPolicy#Dependencies [6] https://wiki.freebsd.org/Python/PortsPolicy#USE_PYTHON_Features [7] https://wiki.freebsd.org/Python/PortsPolicy#concurrent [8] https://docs.freebsd.org/en/books/porters-handbook/testing/ [9] https://wiki.freebsd.org/IRC/Channels
(In reply to Kubilay Kocak from comment #32) Also, the upstream project provides tests, so adding TEST_DEPENDS,. defining a do-test target and confirming the test suite passes would be great. See: https://github.com/Nicotine-Plus/nicotine-plus/blob/master/.github/workflows/tests.yml It appears upstream have both integration and unit tests, the former require 'gir' [1], the latter don't [2]. Having both run and pass would be ideal. [1] xvfb-run python -m unittest [2] python3 -m unittest
(In reply to Kubilay Kocak from comment #33) I'm making the changes. One thing I don't get it is the test phase (I didn't find anything documented), how should I declare the test phase? Something like this? TEST_DEPENDS=${PYTHON_CMD} -m unittest
Created attachment 226081 [details] v16 I'll let here my work so far, I don't know how to deal with the test part (I'm pretty new with porting python stuff, so forgive me about it). I think I had cover everything you mentioned.
(In reply to Daniel Menelkir from comment #34) Ahh sorry. TEST_DEPENDS are for dependencies on ports that the port depends on for the 'test' target' (like BUILD / RUN depends for other stages) You can declare a test target as: do-test: @cd ${WRKSRC} && ${PYTHON_CMD} -m .... There are also TEST_ENV and other TEST_* variables if you want to use them.
Created attachment 226101 [details] v17 (In reply to Kubilay Kocak from comment #36) Thanks. I've added the tests, everything seems to be pretty fine now.
Please add any upstream declared <version-specs> to *_DEPENDS lines, and minor nits: - Add tab for MASTER_SITES line - Add -v (verbose) for unittest invocation (one liner per test in output)
Created attachment 226103 [details] v18 (In reply to Kubilay Kocak from comment #38) Done.
(In reply to Daniel Menelkir from comment #39) Looking good Daniel, well done!
^Triage: Note: Severity's are only used for bugs, not features (new ports, even restorations). Wording needs to be improved.
(In reply to Kubilay Kocak from comment #41) My bad. I thought it could be related to restoration, lesson learned.
Any progress on this? The port is good.
Created attachment 226658 [details] v19 Update to 3.1.0 Changes: Added alternative transfer speed limits for downloads and uploads, toggleable with a quick access button in the status bar Added an option to save downloads to subfolders based on the uploader's username Added a dropdown menu in file transfer views to clear various types of file transfers from the list Added an option to disable reverse file paths in search results and file transfer views Added an option to show private/locked search results and shared files from SoulseekQt clients Added an option to only allow trusted buddies to access buddy shares Added a context menu item in file transfer views to browse folders of file transfers, similar to search results Added checkboxes to 'Shares' preferences to easily specify whether a shared folder should be buddy-only or not Added a menu item to quickly toggle dark mode/theme, available under Menu -> View -> Prefer Dark Mode Added debug logging categories for downloads, uploads and chats Improved GUI accessibility for blind users using screen readers Finished downloads are no longer cleared on disconnect/exit Finished uploads are now restored on startup, unless previously cleared Spam filter plugin now filters phrases in chat rooms in addition to private chats Command aliases can now run chat commands, e.g. '/alias hello /away' will create a '/hello' command that runs '/away' Unified preferences related to the GUI, such as colors, icons and tabs, under a single 'User Interface' page A single preference now controls the maximum number of visible search results, instead of two separate preferences Added a basic 'headless' mode to run Nicotine+ without a GUI, available through the --headless command line flag Added the ability to start multiple instances of Nicotine+ when a custom config file is specified with the --config command line flag Added the option to specify a custom user data folder location (used for storing e.g. the list of shared files) with the --user-data command line flag Added plugin notifications for started/finished transfers Various deprecations related to plugins, listed in pluginsystem.py and logged on startup Various performance improvements macOS: minor UX improvements to better align with macOS conventions GNU/Linux and macOS: added an option to enforce a specific network interface, useful for virtual private networks (VPN) Removed 'direct private message' toggle, since the official Soulseek clients do not understand such messages Removed option to rotate tab labels, due to various issues with its implementation Removed support for Ubuntu 16.04 and Python 3.5 Corrections Fixed an issue where file transfers did not reach maximum speeds on slow connections Fixed an issue where incorrect upload speeds were sent to the server Fixed an issue where failed downloads were marked as finished in cases where the download folder is not accessible Fixed an issue where double-clicking treeview column headers activated the first row Fixed an issue where the 'unread tabs' menu caused a crash if tabs were closed Fixed an issue where adding finished downloads to shared files could result in a crash Fixed an issue where searching a user's share could result in a crash after a refresh Fixed a crash when attempting to show file properties for a user/folder row Fixed various UPnP port forwarding issues with certain routers Added a workaround for cases where Soulseek NS clients send incorrect file sizes for large files Various GUI-related changes and improvements to reduce the number of inconsistencies macOS: keyboard shortcuts now use the Command key instead of Ctrl Windows: improvements to notifications to prevent duplicate tray icons Windows: fixed an issue where closed windows would appear in window peek Windows: fixed an issue where minimized windows were not displayed when restoring Nicotine+ from tray Issues closed on GitHub Is there a way to exclude a file/directory from a share? + Some feedback (#924) Feature Request: Improve folder folding behavior + Add Collapse/Expand All (#981) Suggestion: Room wall improvements (#985) Practical: change share from public to buddy and vice versa. (#991) Version 3.0.1 and 3.0.2's Nicotine+.exe detected as a virus by Malwarebytes (#1012) Quicker access to speed throttling? (#1031) Copy/Paste keyboard shortcuts broken on Mac (#1342) Don't automatically clear downloads/uploads on quit (#1343) Notifications tray icons aren't removed automatically (#1354) Download to a *username* / subfolder (#1355) Drop official support for Ubuntu 16.04 (#1360) Headless support (#1362) Support for macOS High Sierra (#1366) Prevent Downloads from Displaying in the Debug Logging Window (#1371) Malware detection (#1373) Minimized window app won't show up when called from the system tray (#1374) Change close button position on macOS (#1376) Change menu action on macOS (#1377) Limit Buddy Shares to Trusted Buddies (#1382) Critical errors (#1383) Option to disable popup (#1386) Prevent notification balloon crashes on 32-bit Windows (#1393) ", line 127 (#1395) Auto-Size Columns Opens File in Player (#1396) Window Preview Shows Preferences Window (#1397) Crash report (#1398) Windows Defender / Trojan:Win32/Zpevdo.B ...False Positive? (#1401) Nicotine+ encountered a critical error and needs to exit (#1402) Middle-clicking user/share/room does not close it anymore (#1404) problem with access to some users. (#1405) Critical Error on master (#1406) Config error: can't decode 'searches' section 'group_searches' value (#1407) Transfer lists are cleared upon disconnection (#1409) Wishlists aren't being searched (#1410) Every downloaded file remains as "INCOMPLETE[number]Filename" (#1411) Exclamation point in the chat tab bar i have not seen before (#1413) Tried unpacking zip, scanner shows Gen:Variant.Bulz.495404 (#1414) Crash on getting File Properties at user or directory entry level in Download tab (#1415) in Download tab, the Queue Position column is empty (#1416) Windows Defender quarantined nicotine+ because of "Trojan:Win32/Zpevdo.B" (#1417) Tabs go out off the screen where there are many, they should use several lines instead. (#1420) Search main tab: wish tabs always extra. (#1422) Can't click anything when in fullscreen (#1423) 'GeoIP' object has no attribute 'get_all' (#1426) Finished Downloads Autoclearing (#1427) 'NetworkFrame' object has no attribute 'InterfaceRow' (#1430) Browse Folder via Downloads tab (#1432) Leech detector logs not showing up (#1433) Crash when adding to buddy list from User info tab (#1434) How to access option to close only window (keep sharing files)? (#1435) error (#1436) DownloadQueuedNotification on end of downloaded file (#1438) Shift + Mouse wheel a fall (#1440) Convert organization URL to lowercase (#1441) random crash? (#1442) Crash when closing private Chat tab (#1445) Critical error upon attempted chat (#1446) Incorrectly reported upload speed (#1449) UPnP does not work on this network (Windows) (#1453) select ValueError: too many file descriptors in select() (Windows) (#1456) UPnP not working (#1457)
Created attachment 227017 [details] v20 Changed the name to py-nicotine-plus (as many other similar software in ports, not sure if it's right for nicotine) and removed the pkg-plist file (as it uses autoplist). Updated to 3.1.1. Changes: * Downloads denied with 'Too many files' or 'Too many megabytes' are now re-queued every 12 minutes * Leech detector plugin opens private chat user tabs by default when sending complaints Corrections: * IMPORTANT: Fixed an issue where recently queued files were uploaded before older files (LIFO queue behavior) * Fixed a crash when attempting to search files in joined rooms * Queue positions are now properly updated for queued uploads * Certain special characters needed to receive proper search results are no longer removed from search terms * Fixed an issue where decimals were truncated before being saved (e.g. in the 'Anti SHOUT' plugin) * Fixed an issue where an incorrect user tab was opened when issuing the /msg command Issues closed on GitHub: * non US locale float type variables in plugins cannot be filled * Files uploaded in a random order
Should I close this for good?
Friendly ping.
I'll add this to my queue, sorry for the wait
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=d0084dad79eef4045d4692e78d7c11b946f35930 commit d0084dad79eef4045d4692e78d7c11b946f35930 Author: Daniel Menelkir <menelkir@itroll.org> AuthorDate: 2021-10-04 21:08:58 +0000 Commit: Daniel Engberg <diizzy@FreeBSD.org> CommitDate: 2021-10-04 21:43:53 +0000 net-p2p/py-nicotine-plus: New port: Graphical client for the Soulseek file sharing network Nicotine+ is a graphical client for the Soulseek peer-to-peer network. Aims to be a pleasant, free and open source (FOSS) alternative to the official Soulseek client, providing additional functionality while keeping current with the Soulseek protocol. It uses GTK for its graphical user interface, and is written in Python. WWW: https://github.com/Nicotine-Plus/nicotine-plus/ PR: 246328 Approved by: arrowd (mentor) Differential Revision: https://reviews.freebsd.org/D32290 net-p2p/Makefile | 1 + net-p2p/py-nicotine-plus/Makefile (new) | 24 ++++++++++++++++++++++++ net-p2p/py-nicotine-plus/distinfo (new) | 3 +++ net-p2p/py-nicotine-plus/pkg-descr (new) | 7 +++++++ 4 files changed, 35 insertions(+)
Committed, thanks for your patience!