# Some of this comes from www/firefox-esr as apropos, since Tor # browser is a fork of ESR. It is a good idea to look at that # Makefile when editing this one (ESR versions not always the same). COMMENT = modified version of Firefox ESR for browsing over Tor MOZILLA_VERSION = ${TB_VERSION} REVISION = 1 MOZILLA_PROJECT = ${BROWSER_NAME} MOZILLA_CODENAME = browser EXTRACT_SUFX = .tar.xz PKGNAME = ${TB_PREFIX}-browser-${TB_VERSION:S/a/alpha/} DISTNAME = src-firefox-tor-browser-102.12.0esr-12.0-1-build2 FIX_EXTRACT_PERMISSIONS = Yes DISTFILES += ${DISTNAME}.tar.xz \ tor-browser-linux64-${TB_VERSION}_ALL.tar.xz \ tor-expert-bundle-${TB_VERSION}-linux-x86_64.tar.gz SO_VERSION = 8.0 MOZILLA_LIBS = xul clearkey lgpllibs mozavcodec mozavutil mozgtk MOZILLA_LIBS += freebl3 nss3 nssckbi MOZILLA_LIBS += nssutil3 smime3 softokn3 ssl3 MOZILLA_LIBS += nspr4 mozsqlite3 plc4 plds4 ipcclientcerts # mozilla public license for the browser PERMIT_PACKAGE= Yes MASTER_SITES = https://dist.torproject.org/torbrowser/${TB_VERSION}/ \ https://archive.torproject.org/tor-package-archive/torbrowser/${TB_VERSION}/ MODULES = www/mozilla lang/python MODPY_RUNDEP = No COMPILER = ports-clang # tor-browser needs built-in nss, sqlite MOZILLA_USE_BUNDLED_NSPR = Yes MOZILLA_USE_BUNDLED_NSS = Yes # 63 requires node because why not #1483595 BUILD_DEPENDS += lang/node # 63 requires cbindgen #1478813 BUILD_DEPENDS += devel/cbindgen>=0.23.0 # wasi BUILD_DEPENDS += lang/wasi-sdk/compiler-rt \ lang/wasi-sdk/libcxxabi \ lang/wasi-sdk/libcxx \ lang/wasi-libc # uses pledge() # Extra: Xcomposite.4 Xcursor.5 Xdamage.4 Xfixes.6 Xi.12 Xrender.6 WANTLIB += Xrandr # Regression tests are too hard to adapt to run here NO_TEST = Yes WRKDIST = ${WRKDIR}/${DISTNAME:S/src-//} CONFIGURE_STYLE = simple CONFIGURE_SCRIPT = ${MODPY_BIN} ${WRKSRC}/configure.py CONFIGURE_ARGS += --prefix=${PREFIX} MAKE_ENV += BUILD_VERBOSE_LOG="1" CARGOFLAGS="-j${MAKE_JOBS}" CONFIGURE_ENV += LDFLAGS=-Wl,--threads=${MAKE_JOBS} # app-name etc. for tor-browser CONFIGURE_ARGS += --with-app-name=${BROWSER_NAME} \ --with-tor-browser-version=${TB_VERSION} \ --enable-tor-browser-data-outside-app-dir # for nss build system MAKE_ENV += BUILD_OPT=1 \ LOCALBASE="${LOCALBASE}" \ NSS_ENABLE_ECC=1 \ XCFLAGS="-I${LOCALBASE}/include ${CFLAGS}" RUN_DEPENDS += net/obfs4proxy>=0.0.14 \ net/snowflake_proxy>=2.4.1 \ net/tor>=0.4.7.13 CONFIGURE_ARGS += --enable-release #1386371 CONFIGURE_ARGS += --enable-sandbox CONFIGURE_ARGS += --enable-forkserver CONFIGURE_ARGS += --with-wasi-sysroot=${LOCALBASE}/share/wasi-sysroot CONFIGURE_ARGS += --enable-lto=thin CONFIGURE_ARGS += --with-libclang-path=${LOCALBASE}/lib # XXX badly formed debug DWZ = : #DEBUG_PACKAGES = ${BUILD_PACKAGES} DEBUG_CONFIGURE_ARGS += --enable-debug-symbols \ --disable-install-strip post-extract: mv ${WRKDIR}/tor-browser ${WRKSRC}/tor-browser-linux64/ post-patch: # hack config/baseconfig.mk to not use MOZ_APP_VERSION in a few places sed -i.bak -e 's/-$$(MOZ_APP_VERSION)/-${TB_VERSION}/' \ ${WRKSRC}/config/baseconfig.mk # drop in sh front end to configure.py so CONFIGURE_STYLE=simple works ${SUBST_PROGRAM} ${FILESDIR}/configure ${WRKSRC}/configure ${SUBST_PROGRAM} ${FILESDIR}/configure ${WRKSRC}/js/src/configure ${SUBST_CMD} ${WRKSRC}/browser/app/profile/000-tor-browser.js # Not using a patch for this; patch context would contain UTF-8 sed -i 's/#ifdef XP_LINUX/#if defined(XP_LINUX) || defined(XP_OPENBSD)/' \ ${WRKSRC}/browser/app/profile/000-tor-browser.js ln -fs ${WRKSRC}/mozconfig-linux-x86_64 ${WRKSRC}/.mozconfig # add default bridges for Pluggable Transports that we support .for pt in meek-azure obfs4 snowflake I=1; \ cat ${WRKDIR}/tor/pluggable_transports/bridges_list.${pt}.txt | while read -r line ; do \ echo "pref(\"extensions.torlauncher.default_bridge.${pt}.$$I\", \"$$line\");" >>${WRKSRC}/browser/app/profile/000-tor-browser.js; \ I=$$((I + 1)); \ done .endfor ${SUBST_CMD} ${WRKSRC}/xpcom/build/BinaryPath.h sed -i 's/"files":{[^}]*}/"files":{}/' \ ${WRKSRC}/third_party/rust/mp4parse/.cargo-checksum.json BROWSER_DIR = ${PREFIX}/lib/${BROWSER_NAME} TRUEBROWSER_DIR = ${TRUEPREFIX}/lib/${BROWSER_NAME} BROWSER_CFG = ${BROWSER_DIR}/${BROWSER_NAME}.cfg BROWSER_INI = ${BROWSER_DIR}/distribution/distribution.ini SUBST_VARS += TRUEBROWSER_DIR post-install: # install prefs, bookmarks, app config file for Tor browser ${INSTALL_DATA_DIR} ${BROWSER_DIR}/browser/defaults/preferences ${SUBST_DATA} ${FILESDIR}/all-openbsd.js \ ${BROWSER_DIR}/browser/defaults/preferences/all-openbsd.js ${INSTALL_DATA_DIR} ${BROWSER_DIR}/browser/defaults/profile ${INSTALL_DATA} ${FILESDIR}/bookmarks.html \ ${BROWSER_DIR}/browser/defaults/profile # tor-browser JS config file ${INSTALL_DATA} ${FILESDIR}/${BROWSER_NAME}.cfg ${BROWSER_CFG} chown ${SHAREOWN}:${SHAREGRP} ${BROWSER_CFG} chmod ${SHAREMODE} ${BROWSER_CFG} # install distribution.ini file ${INSTALL_DATA_DIR} ${BROWSER_DIR}/distribution echo "[Global]\nid=OpenBSD\nversion=${OSREV}\n" > ${BROWSER_INI} echo "about=Packaged by ${MAINTAINER}\n" >> ${BROWSER_INI} # install desktop file ${INSTALL_DATA_DIR} ${PREFIX}/share/applications/ ${SUBST_DATA} ${FILESDIR}/${BROWSER_NAME}.desktop \ ${PREFIX}/share/applications/${BROWSER_NAME}.desktop # install icon for desktop file ${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps/ ${INSTALL_DATA} ${BROWSER_DIR}/browser/chrome/icons/default/default128.png \ ${PREFIX}/share/pixmaps/${BROWSER_NAME}.png # link default48.png to default.png to be used by default # by non-icccm compliant wm ln -f ${BROWSER_DIR}/browser/chrome/icons/default/default{48,}.png # install torrc-defaults for Tor Launcher ${INSTALL_DATA_DIR} ${PREFIX}/share/${BROWSER_NAME} ${SUBST_DATA} ${FILESDIR}/torrc-defaults \ ${PREFIX}/share/${BROWSER_NAME}/torrc-defaults # install fonts.conf and fonts ${INSTALL_DATA_DIR} ${BROWSER_DIR}/browser/fontconfig ${SUBST_DATA} \ ${WRKSRC}/tor-browser-linux64/Browser/TorBrowser/Data/fontconfig/fonts.conf \ ${BROWSER_DIR}/browser/fontconfig/fonts.conf ${INSTALL_DATA_DIR} ${BROWSER_DIR}/browser/fonts cp ${WRKSRC}/tor-browser-linux64/Browser/fonts/* \ ${BROWSER_DIR}/browser/fonts # install wrapper script (remove symlink first) rm ${PREFIX}/bin/${BROWSER_NAME} ${SUBST_PROGRAM} ${FILESDIR}/${BROWSER_NAME} \ ${PREFIX}/bin/${BROWSER_NAME} .for f in unveil pledge .for t in content gpu main rdd socket utility utility-audioDecoder ${INSTALL_DATA} ${FILESDIR}/${f}.${t} ${BROWSER_DIR}/browser/defaults/preferences/ .endfor .endfor .include