Page MenuHomeFreeBSD

[NEW PORT] www/lagrange: Beautiful Gemini Client
ClosedPublic

Authored by lcook on Jan 31 2021, 7:02 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Apr 21, 7:58 PM
Unknown Object (File)
Mon, Apr 15, 10:59 PM
Unknown Object (File)
Mon, Apr 15, 5:27 PM
Unknown Object (File)
Mon, Apr 15, 4:58 PM
Unknown Object (File)
Mar 14 2024, 5:53 AM
Unknown Object (File)
Mar 14 2024, 5:53 AM
Unknown Object (File)
Mar 14 2024, 5:53 AM
Unknown Object (File)
Mar 14 2024, 5:53 AM
Subscribers

Details

Summary

Lagrange is a desktop GUI client for browsing
Geminispace. It offers modern conveniences
familiar from web browsers, such as smooth
scrolling, inline image viewing, multiple tabs,
visual themes, Unicode fonts, bookmarks,
history, and page outlines.

Like Gemini, Lagrange has been designed with
minimalism in mind. It depends on a small
number of essential libraries. It is written
in C and uses SDL for hardware-accelerated
graphics. OpenSSL is used for secure
communications.

WWW: https://gmi.skyjake.fi/lagrange/

QA:

portlint: OK (looks fine).
testport: OK (poudriere: 12.2-RELEASE-p2, amd64/i386).

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

lcook requested review of this revision.Jan 31 2021, 7:02 PM
lcook retitled this revision from [NEW PORT] wwww/lagrange: Beautiful Gemini Client to [NEW PORT] www/lagrange: Beautiful Gemini Client.Jan 31 2021, 7:06 PM
www/lagrange/Makefile
25 ↗(On Diff #83188)

^ this should not be necessary -- cmake.mk should already give you that.

www/lagrange/Makefile
25 ↗(On Diff #83188)

Just checked here and you're right. I could use CMAKE_BUILD_TYPE=Release, but, since Release is the default, I can completely drop that line. Thanks! :-)

Drop unnecessary CMAKE_ARGS line.

It does not build for me in any environment. It fails with:

[95/95] : && /usr/bin/cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong CMakeFiles/app.dir/src/main.c.o CMakeFiles/app.dir/src/app.c.o CMakeFiles
/app.dir/src/bookmarks.c.o CMakeFiles/app.dir/src/feeds.c.o CMakeFiles/app.dir/src/gmcerts.c.o CMakeFiles/app.dir/src/gmdocument.c.o CMakeFiles/app.dir/src/gmrequest.c.o CMakeFiles/app.dir/src/gmutil.c.o CMakeFiles/app.dir/src/gopher.c.o
 CMakeFiles/app.dir/src/history.c.o CMakeFiles/app.dir/src/lookup.c.o CMakeFiles/app.dir/src/media.c.o CMakeFiles/app.dir/src/mimehooks.c.o CMakeFiles/app.dir/src/prefs.c.o CMakeFiles/app.dir/src/visited.c.o CMakeFiles/app.dir/src/audio/
buf.c.o CMakeFiles/app.dir/src/audio/player.c.o CMakeFiles/app.dir/src/audio/stb_vorbis.c.o CMakeFiles/app.dir/src/ui/bindingswidget.c.o CMakeFiles/app.dir/src/ui/certimportwidget.c.o CMakeFiles/app.dir/src/ui/color.c.o CMakeFiles/app.di
r/src/ui/command.c.o CMakeFiles/app.dir/src/ui/documentwidget.c.o CMakeFiles/app.dir/src/ui/indicatorwidget.c.o CMakeFiles/app.dir/src/ui/listwidget.c.o CMakeFiles/app.dir/src/ui/lookupwidget.c.o CMakeFiles/app.dir/src/ui/keys.c.o CMakeF
iles/app.dir/src/ui/metrics.c.o CMakeFiles/app.dir/src/ui/paint.c.o CMakeFiles/app.dir/src/ui/playerui.c.o CMakeFiles/app.dir/src/ui/scrollwidget.c.o CMakeFiles/app.dir/src/ui/sidebarwidget.c.o CMakeFiles/app.dir/src/ui/text.c.o CMakeFil
es/app.dir/src/ui/util.c.o CMakeFiles/app.dir/src/ui/visbuf.c.o CMakeFiles/app.dir/src/ui/window.c.o CMakeFiles/app.dir/src/ui/widget.c.o CMakeFiles/app.dir/src/ui/inputwidget.c.o CMakeFiles/app.dir/src/ui/labelwidget.c.o CMakeFiles/app.
dir/embedded.c.o -o lagrange  -Wl,-rpath,/usr/local/lib:  lib/the_Foundation/lib_Foundation.a  -L/usr/local/lib  -lSDL2  -lm  /usr/local/lib/libmpg123.so  -lunistring  -lpthread  -lz  -lpcre  -lm && :
FAILED: lagrange 
: && /usr/bin/cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong CMakeFiles/app.dir/src/main.c.o CMakeFiles/app.dir/src/app.c.o CMakeFiles/app.dir
/src/bookmarks.c.o CMakeFiles/app.dir/src/feeds.c.o CMakeFiles/app.dir/src/gmcerts.c.o CMakeFiles/app.dir/src/gmdocument.c.o CMakeFiles/app.dir/src/gmrequest.c.o CMakeFiles/app.dir/src/gmutil.c.o CMakeFiles/app.dir/src/gopher.c.o CMakeFi
les/app.dir/src/history.c.o CMakeFiles/app.dir/src/lookup.c.o CMakeFiles/app.dir/src/media.c.o CMakeFiles/app.dir/src/mimehooks.c.o CMakeFiles/app.dir/src/prefs.c.o CMakeFiles/app.dir/src/visited.c.o CMakeFiles/app.dir/src/audio/buf.c.o 
CMakeFiles/app.dir/src/audio/player.c.o CMakeFiles/app.dir/src/audio/stb_vorbis.c.o CMakeFiles/app.dir/src/ui/bindingswidget.c.o CMakeFiles/app.dir/src/ui/certimportwidget.c.o CMakeFiles/app.dir/src/ui/color.c.o CMakeFiles/app.dir/src/ui
/command.c.o CMakeFiles/app.dir/src/ui/documentwidget.c.o CMakeFiles/app.dir/src/ui/indicatorwidget.c.o CMakeFiles/app.dir/src/ui/listwidget.c.o CMakeFiles/app.dir/src/ui/lookupwidget.c.o CMakeFiles/app.dir/src/ui/keys.c.o CMakeFiles/app
.dir/src/ui/metrics.c.o CMakeFiles/app.dir/src/ui/paint.c.o CMakeFiles/app.dir/src/ui/playerui.c.o CMakeFiles/app.dir/src/ui/scrollwidget.c.o CMakeFiles/app.dir/src/ui/sidebarwidget.c.o CMakeFiles/app.dir/src/ui/text.c.o CMakeFiles/app.d
ir/src/ui/util.c.o CMakeFiles/app.dir/src/ui/visbuf.c.o CMakeFiles/app.dir/src/ui/window.c.o CMakeFiles/app.dir/src/ui/widget.c.o CMakeFiles/app.dir/src/ui/inputwidget.c.o CMakeFiles/app.dir/src/ui/labelwidget.c.o CMakeFiles/app.dir/embe
dded.c.o -o lagrange  -Wl,-rpath,/usr/local/lib:  lib/the_Foundation/lib_Foundation.a  -L/usr/local/lib  -lSDL2  -lm  /usr/local/lib/libmpg123.so  -lunistring  -lpthread  -lz  -lpcre  -lm && :
ld: error: undefined symbol: new_TlsCertificate
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmIdentity)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(new_GmIdentity)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmCerts)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmCerts)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(add_GmCerts_)

ld: error: undefined symbol: delete_TlsCertificate

It does not build for me in any environment. It fails with:

[95/95] : && /usr/bin/cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong CMakeFiles/app.dir/src/main.c.o CMakeFiles/app.dir/src/app.c.o CMakeFiles
/app.dir/src/bookmarks.c.o CMakeFiles/app.dir/src/feeds.c.o CMakeFiles/app.dir/src/gmcerts.c.o CMakeFiles/app.dir/src/gmdocument.c.o CMakeFiles/app.dir/src/gmrequest.c.o CMakeFiles/app.dir/src/gmutil.c.o CMakeFiles/app.dir/src/gopher.c.o
 CMakeFiles/app.dir/src/history.c.o CMakeFiles/app.dir/src/lookup.c.o CMakeFiles/app.dir/src/media.c.o CMakeFiles/app.dir/src/mimehooks.c.o CMakeFiles/app.dir/src/prefs.c.o CMakeFiles/app.dir/src/visited.c.o CMakeFiles/app.dir/src/audio/
buf.c.o CMakeFiles/app.dir/src/audio/player.c.o CMakeFiles/app.dir/src/audio/stb_vorbis.c.o CMakeFiles/app.dir/src/ui/bindingswidget.c.o CMakeFiles/app.dir/src/ui/certimportwidget.c.o CMakeFiles/app.dir/src/ui/color.c.o CMakeFiles/app.di
r/src/ui/command.c.o CMakeFiles/app.dir/src/ui/documentwidget.c.o CMakeFiles/app.dir/src/ui/indicatorwidget.c.o CMakeFiles/app.dir/src/ui/listwidget.c.o CMakeFiles/app.dir/src/ui/lookupwidget.c.o CMakeFiles/app.dir/src/ui/keys.c.o CMakeF
iles/app.dir/src/ui/metrics.c.o CMakeFiles/app.dir/src/ui/paint.c.o CMakeFiles/app.dir/src/ui/playerui.c.o CMakeFiles/app.dir/src/ui/scrollwidget.c.o CMakeFiles/app.dir/src/ui/sidebarwidget.c.o CMakeFiles/app.dir/src/ui/text.c.o CMakeFil
es/app.dir/src/ui/util.c.o CMakeFiles/app.dir/src/ui/visbuf.c.o CMakeFiles/app.dir/src/ui/window.c.o CMakeFiles/app.dir/src/ui/widget.c.o CMakeFiles/app.dir/src/ui/inputwidget.c.o CMakeFiles/app.dir/src/ui/labelwidget.c.o CMakeFiles/app.
dir/embedded.c.o -o lagrange  -Wl,-rpath,/usr/local/lib:  lib/the_Foundation/lib_Foundation.a  -L/usr/local/lib  -lSDL2  -lm  /usr/local/lib/libmpg123.so  -lunistring  -lpthread  -lz  -lpcre  -lm && :
FAILED: lagrange 
: && /usr/bin/cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong CMakeFiles/app.dir/src/main.c.o CMakeFiles/app.dir/src/app.c.o CMakeFiles/app.dir
/src/bookmarks.c.o CMakeFiles/app.dir/src/feeds.c.o CMakeFiles/app.dir/src/gmcerts.c.o CMakeFiles/app.dir/src/gmdocument.c.o CMakeFiles/app.dir/src/gmrequest.c.o CMakeFiles/app.dir/src/gmutil.c.o CMakeFiles/app.dir/src/gopher.c.o CMakeFi
les/app.dir/src/history.c.o CMakeFiles/app.dir/src/lookup.c.o CMakeFiles/app.dir/src/media.c.o CMakeFiles/app.dir/src/mimehooks.c.o CMakeFiles/app.dir/src/prefs.c.o CMakeFiles/app.dir/src/visited.c.o CMakeFiles/app.dir/src/audio/buf.c.o 
CMakeFiles/app.dir/src/audio/player.c.o CMakeFiles/app.dir/src/audio/stb_vorbis.c.o CMakeFiles/app.dir/src/ui/bindingswidget.c.o CMakeFiles/app.dir/src/ui/certimportwidget.c.o CMakeFiles/app.dir/src/ui/color.c.o CMakeFiles/app.dir/src/ui
/command.c.o CMakeFiles/app.dir/src/ui/documentwidget.c.o CMakeFiles/app.dir/src/ui/indicatorwidget.c.o CMakeFiles/app.dir/src/ui/listwidget.c.o CMakeFiles/app.dir/src/ui/lookupwidget.c.o CMakeFiles/app.dir/src/ui/keys.c.o CMakeFiles/app
.dir/src/ui/metrics.c.o CMakeFiles/app.dir/src/ui/paint.c.o CMakeFiles/app.dir/src/ui/playerui.c.o CMakeFiles/app.dir/src/ui/scrollwidget.c.o CMakeFiles/app.dir/src/ui/sidebarwidget.c.o CMakeFiles/app.dir/src/ui/text.c.o CMakeFiles/app.d
ir/src/ui/util.c.o CMakeFiles/app.dir/src/ui/visbuf.c.o CMakeFiles/app.dir/src/ui/window.c.o CMakeFiles/app.dir/src/ui/widget.c.o CMakeFiles/app.dir/src/ui/inputwidget.c.o CMakeFiles/app.dir/src/ui/labelwidget.c.o CMakeFiles/app.dir/embe
dded.c.o -o lagrange  -Wl,-rpath,/usr/local/lib:  lib/the_Foundation/lib_Foundation.a  -L/usr/local/lib  -lSDL2  -lm  /usr/local/lib/libmpg123.so  -lunistring  -lpthread  -lz  -lpcre  -lm && :
ld: error: undefined symbol: new_TlsCertificate
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmIdentity)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(new_GmIdentity)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmCerts)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(init_GmCerts)
>>> referenced by gmcerts.c
>>>               CMakeFiles/app.dir/src/gmcerts.c.o:(add_GmCerts_)

ld: error: undefined symbol: delete_TlsCertificate

Found the culprit, DEFAULT_VERSIONS+=ssl=openssl was explicitly set in my Poudriere configuration, therefore using the security/openssl port and not the base-system OpenSSL. All the while cmake was calling pkg_check_modules (a.k.a looking for the installed OpenSSL package pkg-config file). I'll account for this now, thanks!

Don't favor the OpenSSL port.

Don't favor the OpenSSL port.

Tested both configurations with the base/port OpenSSL and builds on amd64/i386.

www/lagrange/Makefile
7 ↗(On Diff #83304)

If we use v${DISTVERSION} instead of ${DISTVERSIONFULL} we could remove DISTVERSIONPREFIX and WRKSRC since it would take the default value.

I tend to use DISTVERSIONPREFIX when it makes things clearer (as in the case when we USE_GH). In this case however, it forces us to redefine WRKSRC. Accepting that our documentation is not perfect, DISTVERSIONFULL is not even documented in the PHB.

But to be honest, I don't have a strong opinion about this. Maybe @tcberner can shed some light?

www/lagrange/Makefile
7 ↗(On Diff #83304)

Looking at what they point to on their website [1]

PORTNAME=       lagrange
DISTVERSION=    1.1.0
MASTER_SITES=   https://git.skyjake.fi/skyjake/${PORTNAME}/releases/download/v${DISTVERSION}/

without defining anything else.

[1] https://gmi.skyjake.fi/lagrange/

  • Simplify port as per-suggestions.
  • Updated to 1.1.1, minor changes, tested and builds/runs on amd64/i386.
lcook marked 2 inline comments as done.Feb 3 2021, 8:25 PM
This revision is now accepted and ready to land.Feb 4 2021, 6:05 PM
This revision was automatically updated to reflect the committed changes.