Skip to content

Commit

Permalink
www/ladybird: SerenityOS Web Browser
Browse files Browse the repository at this point in the history
Ladybird is a web browser built on the LibWeb and LibJS engines from
SerenityOS with a cross-platform GUI in Qt.

See this blog post for some more background:
https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/

WWW: https://ladybird.dev
  • Loading branch information
clausecker committed Nov 24, 2023
1 parent b632464 commit eafa04a
Show file tree
Hide file tree
Showing 6 changed files with 1,245 additions and 0 deletions.
1 change: 1 addition & 0 deletions www/Makefile
Expand Up @@ -295,6 +295,7 @@
SUBDIR += kineto
SUBDIR += kiwix-tools
SUBDIR += kohana
SUBDIR += ladybird
SUBDIR += lagrange
SUBDIR += larbin
SUBDIR += libapreq2
Expand Down
85 changes: 85 additions & 0 deletions www/ladybird/Makefile
@@ -0,0 +1,85 @@
PORTNAME= ladybird
PORTVERSION= g20231120
CATEGORIES= www
MASTER_SITES= https://github.com/unicode-org/cldr-json/releases/download/${CLDRVERSION}/:cldr \
https://www.unicode.org/Public/${UCDVERSION}/ucd/:ucd \
https://www.unicode.org/Public/emoji/${UCDVERSION:R}/:emoji \
https://curl.se/ca/:cacert
DISTFILES= cldr-${CLDRVERSION}-json-modern.zip:cldr \
UCD.zip:ucd \
emoji-test.txt:emoji \
cacert-${CACERTVERSION}.pem:cacert
DIST_SUBDIR= ${PORTNAME}-${PORTVERSION}
EXTRACT_ONLY= ${_DISTFILES:M*${GH_ACCOUNT}*}

MAINTAINER= fuz@FreeBSD.org
COMMENT= SerenityOS web browser
WWW= https://ladybird.dev/

LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE

# see Userland/Libraries/LibWeb/Loader/ResourceLoader.h
ONLY_FOR_ARCHS= aarch64 amd64 i386 riscv64
ONLY_FOR_ARCHS_REASON= other architectures not recognised by build system
BROKEN_FreeBSD_12= C++ template fuckery

BUILD_DEPENDS= ${LOCALBASE}/share/public_suffix_list/public_suffix_list.dat:dns/public_suffix_list
LIB_DEPENDS= libpulse.so:audio/pulseaudio
RUN_DEPENDS= ${LOCALBASE}/share/fonts/Liberation/LiberationMono-Bold.ttf:x11-fonts/liberation-fonts-ttf

USES= cmake:testing compiler:c++20-lang gl localbase:ldflags python:build qt:6
USE_GITHUB= yes
GH_ACCOUNT= SerenityOS
GH_PROJECT= serenity
GH_TAGNAME= cc9de38ea4ccf06024913b78b6283d8e4bc26536
USE_GL= egl
USE_LDCONFIG= yes
USE_QT= base tools:build wayland multimedia

CACERTVERSION= 2023-08-22
CLDRVERSION= 44.0.1
UCDVERSION= 15.1.0

CMAKE_ARGS= SERENITY_CACHE_DIR=${_DISTDIR}
CMAKE_OFF= ENABLE_LAGOM_CCACHE \
ENABLE_COMMONMARK_SPEC_DOWNLOAD \
ENABLE_CACERT_DOWNLOAD \
ENABLE_TIME_ZONE_DATABASE_DOWNLOAD \
INCLUDE_WASM_SPEC_TESTS \
INCLUDE_FLAC_SPEC_TESTS \
ENABLE_NETWORK_DOWNLOADS
CMAKE_SOURCE_PATH= ${WRKSRC}/Ladybird

BINARY_ALIAS= python3=${PYTHON_CMD}
DESKTOP_ENTRIES= "Ladybird" "SerenityOS web browser" "ladybird" "${PREFIX}/bin/Ladybird" "Network;WebBrowser;" false

PLIST_FILES= ${PLIST_FILES_${ARCH}}
PLIST_FILES_amd64= lib/liblagom-x86.so \
lib/liblagom-x86.so.0 \
lib/liblagom-x86.so.0.0.0

post-extract:
${MKDIR} ${CONFIGURE_WRKSRC}/caches/PublicSuffix
${LN} -s ${LOCALBASE}/share/public_suffix_list/public_suffix_list.dat \
${CONFIGURE_WRKSRC}/caches/PublicSuffix/

post-configure:
${MKDIR} ${CONFIGURE_WRKSRC}/caches/CLDR ${CONFIGURE_WRKSRC}/caches/UCD
${TAR} -x -C ${CONFIGURE_WRKSRC}/caches/CLDR -f ${_DISTDIR}/cldr-${CLDRVERSION}-json-modern.zip
${TAR} -x -C ${CONFIGURE_WRKSRC}/caches/UCD -f ${_DISTDIR}/UCD.zip
${CP} ${_DISTDIR}/emoji-test.txt ${CONFIGURE_WRKSRC}/caches/UCD
${CP} ${_DISTDIR}/cacert-${CACERTVERSION}.pem ${CONFIGURE_WRKSRC}/Lagom/cacert.pem

post-install:
${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps
${INSTALL_DATA} ${WRKSRC}/Ladybird/Icons/ladybird.png \
${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps/
.for font in Mono Sans Serif
. for shape in Bold BoldItalic Italic Regular
${LN} -shf ${LOCALBASE}/share/fonts/Liberation/Liberation${font}-${shape}.ttf \
${STAGEDIR}${PREFIX}/share/res/fonts/
. endfor
.endfor

.include <bsd.port.mk>
11 changes: 11 additions & 0 deletions www/ladybird/distinfo
@@ -0,0 +1,11 @@
TIMESTAMP = 1700523273
SHA256 (ladybird-g20231120/cldr-44.0.1-json-modern.zip) = 6daf783158fb3b09aa026a048e1f5ed5773148387b1edadfad33f303371f332a
SIZE (ladybird-g20231120/cldr-44.0.1-json-modern.zip) = 47935704
SHA256 (ladybird-g20231120/UCD.zip) = cb1c663d053926500cd501229736045752713a066bd75802098598b7a7056177
SIZE (ladybird-g20231120/UCD.zip) = 8248819
SHA256 (ladybird-g20231120/emoji-test.txt) = d876ee249aa28eaa76cfa6dfaa702847a8d13b062aa488d465d0395ee8137ed9
SIZE (ladybird-g20231120/emoji-test.txt) = 639405
SHA256 (ladybird-g20231120/cacert-2023-08-22.pem) = 23c2469e2a568362a62eecf1b49ed90a15621e6fa30e29947ded3436422de9b9
SIZE (ladybird-g20231120/cacert-2023-08-22.pem) = 221470
SHA256 (ladybird-g20231120/SerenityOS-serenity-g20231120-cc9de38ea4ccf06024913b78b6283d8e4bc26536_GH0.tar.gz) = 389e98bd4ae264bcde4268e026d0072ea7cd9d48e5582fa73fe91dce92752834
SIZE (ladybird-g20231120/SerenityOS-serenity-g20231120-cc9de38ea4ccf06024913b78b6283d8e4bc26536_GH0.tar.gz) = 65705758
17 changes: 17 additions & 0 deletions www/ladybird/files/patch-Userland_Libraries_LibJS_CMakeLists.txt
@@ -0,0 +1,17 @@
--- Userland/Libraries/LibJS/CMakeLists.txt.orig 2023-11-20 19:50:53 UTC
+++ Userland/Libraries/LibJS/CMakeLists.txt
@@ -270,13 +270,8 @@ set(SOURCES

serenity_lib(LibJS js)
target_link_libraries(LibJS PRIVATE LibCore LibCrypto LibFileSystem LibRegex LibSyntax LibLocale LibUnicode LibTimeZone LibJIT)
-if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
+if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64")
target_link_libraries(LibJS PRIVATE LibX86)
-endif()
-
-# TODO: This is probably also needed on RISC-V.
-if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86.*")
- target_link_libraries(LibJS PRIVATE atomic)
endif()

target_compile_options(LibJS PRIVATE -fno-omit-frame-pointer)
5 changes: 5 additions & 0 deletions www/ladybird/pkg-descr
@@ -0,0 +1,5 @@
Ladybird is a web browser built on the LibWeb and LibJS engines from
SerenityOS with a cross-platform GUI in Qt.

See this blog post for some more background:
https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/

0 comments on commit eafa04a

Please sign in to comment.