Opened 7 years ago

Last modified 7 years ago

#54540 new submission

HoRNDIS

Reported by: chicagotripp (Altoine Barker) Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ndiscreet@…, ryandesign (Ryan Carsten Schmidt)
Port: HoRNDIS

Description

I am working on a port for the HoRNDIS project but I have come across 2 problems. First problem is that I don't know how to create a port that can decide on based or whether you are on a PPC or Intel, it will pick the project to build for that architecture.

The second problem is that after Mac OSX 10.10, the program is currently broken to work on El Capitan or Sierra because of the changes that broke the build. 10.11 and above no longer has IOKit/usb/IOUSBBus.h in the kernel. That matter is being worked on now but is currently unavailable. Here is the portfile I have as it will work on 10.10 and before. In order to work on PPC the project would have to change the name from HoRDNIS to HoRNDIS_PPC.

I will need to have this Portfile use Xcode 7 or earlier until the fix is had. I felt the PPC users and others should not have to suffer in the meantime.

Attachments (3)

Portfile (1.8 KB) - added by chicagotripp (Altoine Barker) 7 years ago.
Portfile for HoRNDIS (horrendous)
Portfile.2 (1.7 KB) - added by ryandesign (Ryan Carsten Schmidt) 7 years ago.
Portfile-checksum-diff (580 bytes) - added by chicagotripp (Altoine Barker) 7 years ago.
Portfile unified diff file of checksum change.

Download all attachments as: .zip

Change History (8)

Changed 7 years ago by chicagotripp (Altoine Barker)

Attachment: Portfile added

Portfile for HoRNDIS (horrendous)

comment:1 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign added

I'm attaching a revised Portfile that among other things corrects the PowerPC issue you noted.

I haven't tested it, other than to verify that it does not build on Sierra.

I changed the advertised version from "rel8" to "8". If you don't feel that's correct, we can change 8 rel to rel8 in the github.setup line to put it back.

Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: Portfile.2 added

comment:2 Changed 7 years ago by chicagotripp (Altoine Barker)

You are my hero. I am glad to learn of another and better way to do that. I ran that new Portfile and noticed that the checksums changed. I am not sure if that is the same. I looked further and saw that the file size is different:

-rw-r--r--  1 macports  wheel  40393 Jul 28 07:22 HoRNDIS-8.tar.gz
-rw-r--r--  1 macports  wheel  40379 Jul 27 22:29 HoRNDIS-rel8.tar.gz
-rw-r--r--  1 macports  wheel  40379 Jul 27 19:32 horndis-rel8pre2.tar.gz

The checksum changed to:

checksums           rmd160  4c7358b4ef51bf6ba07a74b1047fea677b57bab4 \
                    sha256  11361e2d422ce46ae9183261514459a51fe886045195f4ec2bbeb7cfd4ff0e80

I run a diff -rq jwise-HoRNDIS-920d799 jwise-HoRNDIS-7a95feb and there is no difference: no output. Both share the same file dates of October 16, 2016 at 1:31am. I guess it is good. I am sending the updated checksum changes.

Changed 7 years ago by chicagotripp (Altoine Barker)

Attachment: Portfile-checksum-diff added

Portfile unified diff file of checksum change.

comment:3 Changed 7 years ago by raimue (Rainer Müller)

GitHub will generate tarballs with different names (and maybe also a different top-level directory) if you give it a different commit/tag reference. The changed checksums would be expected.

Will this port be useful at all for macOS 10.11 Yosemite and above, as the resulting kernel extension will be unsigned and thus cannot be loaded in the default configuration? As an example, for this reason the osxfuse port switched to distributing the pre-compiled and signed kernel extension from upstream instead.

comment:4 Changed 7 years ago by chicagotripp (Altoine Barker)

I apologize but I didn't know how to get it to work with it signed. You only have to change the xcode-configuration from Release-unsigned to Release. I couldn't figure out how to get it to be trusted in MacPorts. I had intended to find a macport that had a solution.

The problem for Yosemite and above is that Apple rewrote the kernel for the behavior for this program to work. Now, the group has to work on a workaround until they put up new code. This same program compiled on a system before Yosemite is able to work on Yosemite and beyond, but you can't build from source on Yosemite and beyond and then expect it to work. A solution should be forthcoming.

Last edited 7 years ago by chicagotripp (Altoine Barker) (previous) (diff)

comment:5 Changed 7 years ago by raimue (Rainer Müller)

I am aware of the policy change by Apple. The problem is that a self-compiled kernel extensions will never work on macOS >= 10.11 Yosemite. There is no code to handle this in MacPorts. The only option is to use a binary signed by upstream with a Developer ID certificate, that was granted permission to distribute kernel extensions. It cannot be signed locally on users' systems.

As an example, osxfuse has an extra complicated procedure as it will build the kernel extension for older systems from source. However, as these are considered legacy systems, providing a Portfile that supports only macOS >= 10.11 Yosemite by using the binary .dmg would be okay.

Note: See TracTickets for help on using tickets.