Hello everyone, >>>>
I am currently working on porting a BitTorrent client designed to run on the I2P network. While I originally intended to prioritize porting other tools, such as the Monero CLI [1] and SimpleX Chat CLI [2] [3], I unfortunately ran into challenges that were too complex for me to solve. Although I received some help with the Monero port, we were unable to achieve a fully functional
result.

At this point, I am focusing on this BitTorrent client, as I find it very
useful to be able to run it as a background service on torrent seeding
servers. However, I have encountered a specific problem that I have yet to resolve: in order to enable the command line interface, a symbolic link must be created from the "XD" binary to "XD-CLI". Despite several attempts, I
continue to encounter errors when building the package.

don't overthink things.

assuming you mean you want a ${PREFIX}/bin/XD-CLI that links to the
existing XD binary in the same dir then you want something like this
in post-install:

    ln -s XD ${PREFIX}/bin/XD-CLI

then the usual, clean things from the previous build assuming you
have one, and regen plist. "make clean=fake; make plist"

Thank you very much; this worked for me. However, I've encountered another issue: I'm unable to set the owner and group for the directories created by the Makefile. I've tried several approaches:

1. Adding the -o and -g options to ${INSTALL_DATA} and ${INSTALL_DATA_DIR}.

2. Directly adding chown commands to the post-install section.

3. Adding @owner and @group to the PLIST file.

None of these methods have successfully set the owner and group of the directories to the daemon user and group. The directories consistently end up with root as the owner and wheel as the group. I don't want to use the -m 777 option, as that would be insecure.

I was finally able to resolve the issue with the permissions on the directories created by this port. The problem was that I had not included a trailing slash (/) at the end of the listed directories when running the @sample command in the packing-list (PLIST). Without the slash, the system does not recognize it as a directory and fails to set the permissions correctly. I think it would be helpful if, when executing the make plist or make update-plist commands, the system could alert you to any directories that are not correctly listed, as this is something you might easily overlook without carefully reading the documentation.



This doesn't help much, as you aren't sharing what issues are you
running into.

...or what was tried.

There 261 Makefiles that use 'ln -s' according to

find . -type f \( -path './pobj/*' -o -path './mystuff/*' \) -prune -o \
     -name Makefile -exec grep -Fl 'ln -s' {} + | wc -l

Quite a bunch of them do it for linking binaries during the install
phase. Of those, all the ones I checked do it in the post-install
target, so maybe you should stick to that pattern. Also, in those cases,
what I saw is that the links are either cwd -> ${PREFIX}/... or
${TRUEPREFIX}/... -> ${PREFIX}/... . Read bsd.port.mk(5), in particular
the parts for TRUEPREFIX and the section "THE FAKE FRAMEWORK", which
explicitly addresses symlinks.

    Lucas



I have attached the current state of the port to this email.

Reply via email to