# Porting Mudlet to FreeBSD



## SlySven (Jan 18, 2018)

I am (an) upstream developer of the Mudlet MUD client and having recently started to use FreeBSD (11.1-Release) alongside Debian Linux I want to get it ported to this platform.  I have managed to tweak the Github hosted source code so it can be run but I have a couple of issues (at least) to address before I can make a proper "port":

1) Due to my limited knowledge/experience I choose to use UFS rather than ZFS for my FreeBSD - sadly the interoperability of either FS with my Linux setup is as equally bad as FreeBSD's with my Linux LVM2 ext4 partitions - fortunately I had the foresight to reserve a smaller plain old ext2 partition for shared data in a MSDOS primary partition...! Anyhow, I do not fully have a grip on ZFS pools (or have any to play with) - is such a thing a requirement for porting (jail/chroot creation?) or can I get away with something with UFS file-systems?

2) Mudlet has an internal Lua 5.*1* subsystem which makes use of some external Lua run-time modules, whilst I understand that I can have parallel 5.1 and 5.2 lua installations a couple of the requirements are normally sourced as luarocks and the FreeBSD luarocks is a lua 5.2 based one.  How do I (and can I "require") a lua 5.1 based luarocks setup.  Will I have to generate and *maintain* a separate *lua51-luarocks* port as well? I guess if it does I will have to provide an install step that uses, say, _luarocks51_ to get the required rocks...


----------



## ShelLuser (Jan 18, 2018)

First of all: nice surprise to see that some people are still using MUDs and I like your goal of porting the software.



SlySven said:


> 1) Due to my limited knowledge/experience I choose to use UFS rather than ZFS for my FreeBSD - sadly the interoperability of either FS with my Linux setup is as equally bad as FreeBSD's with my Linux LVM2 ext4 partitions


Hm, FreeBSD should be able to read that. Probably not natively but try to use sysutils/fusefs-ext2. Keep in mind that you'll also going to need the fuse.ko kernel module. Just add fuse_load="YES" to /boot/loader.conf and you should be all set after the next reboot. For a quick start you can of course use `# kldload fuse`.

After that simply see fuse-ext2(1) (despite its name it also has EXT4 support).



SlySven said:


> Anyhow, I do not fully have a grip on ZFS pools (or have any to play with) - is such a thing a requirement for porting (jail/chroot creation?) or can I get away with something with UFS file-systems?


A filesystem is never a requirement to get something done on an operating system like FreeBSD.

Sure: some tools may require or depend on ZFS (think about Docker or perhaps also Poudriere) but this doesn't apply to core OS operations, such as packaging. If that were the case it would be very difficult to install software on UFS based environments.

So no: this is definitely not a requirement.



SlySven said:


> How do I (and can I "require") a lua 5.1 based luarocks setup.  Will I have to generate and *maintain* a separate *lua51-luarocks* port as well? I guess if it does I will have to provide an install step that uses, say, _luarocks51_ to get the required rocks...


I don't know much about Lua but I do know that lang/lua51 exists and it can co-exist with version 5.2. The only reason I know is:


```
unicron:/home/peter $ pkg info -ox lua
lua51-5.1.5_9                  lang/lua51
lua52-5.2.4                    lang/lua52
```
So I think it should probably be enough to add a dependency in your port configuration for lang/lua51.


----------



## SlySven (Jan 19, 2018)

ShelLuser said:


> ...Hm, FreeBSD should be able to read that. Probably not natively but try to use sysutils/fusefs-ext2. Keep in mind that you'll also going to need the fuse.ko kernel module. Just add fuse_load="YES" to /boot/loader.conf and you should be all set after the next reboot. For a quick start you can of course use `# kldload fuse`.
> 
> After that simply see fuse-ext2(1) (despite its name it also has EXT4 support).
> 
> ...


Yeah, I get that, I have got the *ext2fs*, *fuse* and *geom_linux_lvm* kernel modules loaded {remember I hinted that my Linux partitions are logical volumes on a physical volume - it does actually occupy part of two hard disks - the FreeBSD is all on a third 160G one I had spare} however, because I have used ext4 (with extents) in the Linux file-systems they are un-writable when mounted with the `ext4fuse` tool and require super-user permission merely to read - so using any GUI file-manager is a non-starter and retrieving specific individual files is possible but not quick and easy!

I suppose a down-grade to ext3 or even ext2 is possible but it would be a non-trivial task  - and, given I have not infrequent power outages - I really ought to retain journalling on those file-systems.

Conversely Debian dropped support for UFS file-systems a couple of versions back (I only found that out _post_-FreeBSD install) and accessing ZFS filesystems from GNU/Linux is - as I understand it - a non-starter because of Sun's license vs GNU/Linux GPL terms... 




ShelLuser said:


> ...I don't know much about Lua but I do know that lang/lua51 exists and it can co-exist with version 5.2. The only reason I know is:
> 
> 
> ```
> ...


I do not think that will work for the luarocks though - however I think I need to find out more about *slave*-ports - as I think I can (have already, it was a few weeks back) build a luarocks using lua 5.1 as a configure option {I have heard of "knobs"  but I am not sure what that means or if it is relevant}...

Anyhow - FreeBSD has reached what might be described as a _Chinese_ value of interesting for me as a refugee from the `systemd` monster that is eating up the Linux ecosystem.


----------



## SlySven (Jan 19, 2018)

Ah, according to https://github.com/freebsd/poudriere/wiki/pkg_repos I can use poudriere(8) without using a zfs(8) file-system by not specifying a ZPOOL and instead setting a different option:


```
NO_ZFS=yes
```
 in my ${LOCALBASE}/etc/poudriere.conf .


----------

