DragonFlyBSD / DPorts

The dedicated application build system for DragonFly BSD
Other
89 stars 44 forks source link

Add popular common lisp implementations #105

Closed shamazmazum closed 9 years ago

shamazmazum commented 10 years ago

1) Return clisp to the ports collection. clisp was removed from FreeBSD and DragonFlyBSD recently for god knows why. It's still one of the most popular CL implementations with support of ANSI CL standard, multithreading and so on.

2) Add SBCL port. SBCL is the most advanced and fast open source CL implementation, supporting native code compilation, having many extensions etc. It was recently ported to DragonFlyBSD. Needs clisp for compilation (because about 90% of it is written in common lisp). Multithreading doesn't work on DragonFlyBSD, so it is switched off in the port.

Please set MAINTAINER to whatever you need. Surely, I will watch these ports in future, but I don't know to what exactly this variable is usually set to.

wbr, Vasily Postnicov
jrmarino commented 10 years ago

1 is absolutely not going to happen. It's been deprecated for months (because upstream is dead) and nobody tried to save it. DPorts has a policy to follow Ports in matter like these (e.g. the same reason we deleted KDE3 ports when FreeBSD did). To get clisp in dports means it's got to come back to ports first. Also, clisp was 15 ports, clisp + 14 ports that needed clisp to build. Maybe we could entertain a having a single clisp port. If clisp really isn't dead upstream, submit a new port with a new upstream to FreeBSD and it will trickle down.

2 needs to come in a different form: It needs to come as a set patch set based on the FreeBSD port. You see DPorts is generated using DeltaPorts and Ports. That's why I can't use a pull request. I guess I could try to generate my own diff set by taking this and diff'ing it against the current ports and see how compatible that is.

Anyway, it's some kind of misconception that DPorts accepts pull requests. I don't know where this idea started but 3-4 folks have attempted it so far... :)

shamazmazum commented 10 years ago

It needs to come as a set patch set based on the FreeBSD port.

FreeBSD uses it's own pre-built SBCL binary in order to compile SBCL (yes, it compiles itself or can be compiled by other ANSI CL implementations like clisp). So either you have a place to host this pre-built binary for DragonFlyBSD or it's just no luck :(

If you want it, I can provide you with such binary, or you can build it yourself, of course building clisp (or clozure, CMUCL or whatever is suited for that purpose) first.

I wish I knew a motivation for removing clisp from FreeBSD ports. It can be old, but it still works perfectly and is used by many people. BTW, sbcl port is now deprecated because it's "not staged" and will be deleted "on or after 2014-08-31". I have no words to describe how wrong it is ;)

jrmarino commented 10 years ago

having a place to host a bootstrap compiler is not an issue, nor is this requirement unique. We can put it on my account on leaf. The FreeBSD port can be patched to grab the dfly bootstrap compiler when it's building on dragonfly.

As far as SBCL being deprecated because it's not staged, that's another way of saying "somebody needs to provide a patch to stage this". They don't want your words or your judgement about deprecated, they want your patches.

You can imagine how many people have opinions about saving ports that don't provide any help, only complaints and insults about lack of mental capacity of the folks in charge.

shamazmazum commented 10 years ago

This is the link to sbcl binary (only x86-64, sorry): https://drive.google.com/file/d/0B1NArWn4pLpxXy1CR1B4Ul9HeEU/edit?usp=sharing

Building must be performed with this command:

sh make.sh --xc-host="/path/to/sbcl --core /path/to/sbcl.core --end-runtime-options --no-sysinit --no-userinit --disable-debugger"

I am new to ports, so it will take time to make a new one.

By the way, am I getting this right that if someone deletes the (SBCL) port in FreeBSD, it will be automatically deleted in DragonFlyBSD?

jrmarino commented 10 years ago

Unless we "lock" the port ahead of time, dport will follow when a port is deleted. As locking carries it's own set of maintenance issues, we rarely do it.

You don't need to make a new port, you only need to modify the current one as necessary. From that, we can determine the necessary differences and put those in DeltaPorts.

jrmarino commented 10 years ago

by the way, there is an open PR to stage sbcl in ports, it was stalled by the former maintainer. I expect sbcl to get staged and remain in the tree.

jrmarino commented 10 years ago

I know for a fact now that sbcl will get staged, probably within a day or two.

jrmarino commented 10 years ago

are you planning to provide dragonfly-specific patches for sbcl? e.g. what would go in "dragonfly" lang/sbcl/dragonfly ?

shamazmazum commented 10 years ago

are you planning to provide dragonfly-specific patches for sbcl?

SBCL 1.2.1+ works on DragonFly without any patches (unfortunately, only without threads). Currently I do not have much time to work on dport, so maybe we'll just wait until FreeBSD updates its port and then use the binary bootstrap I provided earlier.

jrmarino commented 10 years ago

I think we are having a communication problem. The sbcl port will never build on DF without patches. Therefore, it will never be in dports. Somebody needs to provide a patch to the port that makes sbcl build on DF out of the box. That also means the bootstrap compiler needs to be hosted somewhere (e.g. http://leaf.dragonflybsd.org/~marino/dports-src/ )

Doing nothing means nothing will change.

So copy the sbcl port from freebsd ports, change it, generate a "diff" between your version and the stock version, and then I can get it to build on DragonFly (and subsequently automatically enter dports)

jrmarino commented 10 years ago

and the FreeBSD port has been up-to-date for weeks, so I don't know what you mean by "wait until FreeBSD updates its port"

shamazmazum commented 10 years ago

Sorry, but I don't have much time on this right now. FreeBSD has a port for an old version of SBCL (1.1.12, this version does not support DragonFly yet). The version that does (1.2.1) has a bit different set of contrib modules, installation procedure etc, so I don't know how to change the port without completely rewriting it (and I am not very skilled at writing ports too). So if my suggested port is not OK because of the reasons you described, let's just wait for FreeBSD port (of newer version) to make diff from.

jrmarino commented 10 years ago

Well, if you want to speed it up, then submit a PR to FreeBSD to upgrade sbcl to version 1.2.1. Otherwise we have to wait until maintainer feels like it, which could be a long time. In other words, you make your own luck..

jrmarino commented 9 years ago

This might be an interesting link for you: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=198590

jrmarino commented 9 years ago

sbcl is in dports now. https://github.com/DragonFlyBSD/DPorts/tree/master/lang/sbcl

shamazmazum commented 9 years ago

Oh, I almost forgot about this, but many thanks anyway!