biber for OpenBSD — Build Process
Perlbrew
Once installed, perlbrew can be started as follows on OpenBSD:
Add a file named
kshrc
in$HOME/perl5/perlbrew/etc/
with the following contents:export PERLBREW_SHELLRC_VERSION=0.98 export PERLBREW_ROOT=/home/robert/perl5/perlbrew __perlbrew_reinit() { if [[ ! -d "$PERLBREW_HOME" ]]; then mkdir -p "$PERLBREW_HOME" fi [ -f "$PERLBREW_HOME/init" ] && rm "$PERLBREW_HOME/init" echo '# DO NOT EDIT THIS FILE' > "$PERLBREW_HOME/init" command perlbrew env $1 | \grep PERLBREW_ >> "$PERLBREW_HOME/init" . "$PERLBREW_HOME/init" __perlbrew_set_path } __perlbrew_set_path () { export PATH=${PERLBREW_PATH:-$PERLBREW_ROOT/bin}:$PATH hash -r } __perlbrew_set_env() { code= code="$($perlbrew_command env $@)" || return $? eval "$code" } __perlbrew_activate() { [[ -n $(alias perl 2>/dev/null) ]] && unalias perl 2>/dev/null if [[ -n "${PERLBREW_PERL:-}" ]]; then __perlbrew_set_env "${PERLBREW_PERL:-}${PERLBREW_LIB:+@}$PERLBREW_LIB" fi __perlbrew_set_path } __perlbrew_deactivate() { __perlbrew_set_env unset PERLBREW_PERL unset PERLBREW_LIB __perlbrew_set_path } perlbrew () { exit_status= short_option= export SHELL if [[ $1 == -* ]]; then short_option=$1 shift else short_option="" fi case $1 in (use) if [[ -z "$2" ]] ; then echo -n "Currently using ${PERLBREW_PERL:-system perl}" [ -n "$PERLBREW_LIB" ] && echo -n "@$PERLBREW_LIB" echo else __perlbrew_set_env "$2" && { __perlbrew_set_path ; true ; } exit_status="$?" fi ;; (switch) if [[ -z "$2" ]] ; then command perlbrew switch else perlbrew use $2 && { __perlbrew_reinit $2 ; true ; } exit_status=$? fi ;; (off) __perlbrew_deactivate echo "perlbrew is turned off." ;; (switch-off) __perlbrew_deactivate __perlbrew_reinit echo "perlbrew is switched off." ;; (*) command perlbrew $short_option "$@" exit_status=$? ;; esac hash -r return ${exit_status:-0} } [[ -z "${PERLBREW_ROOT:-}" ]] && export PERLBREW_ROOT="$HOME/perl5/perlbrew" [[ -z "${PERLBREW_HOME:-}" ]] && export PERLBREW_HOME="$HOME/.perlbrew" if [[ ! -n "${PERLBREW_SKIP_INIT:-}" ]]; then if [[ -f "${PERLBREW_HOME:-}/init" ]]; then . "$PERLBREW_HOME/init" fi fi if [[ -f "${PERLBREW_ROOT:-}/bin/perlbrew" ]]; then perlbrew_command="${PERLBREW_ROOT:-}/bin/perlbrew" else perlbrew_command="perlbrew" fi __perlbrew_activate
Put somewhere in your
$PATH
a file nameduseperlbrew
with the following contents:#!/bin/sh # perlbrew . $HOME/perl5/perlbrew/etc/kshrc perlbrew use perl-5.36.3 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/perl5/perlbrew/perls/perl-5.36.3/lib
As can be seen, the files above assume perlbrew
v0.98 and
perl-5.36.3
. Adapt. These two files allow to initialize a perlbrew
session as follows:
. useperlbrew
Remember to intall cpanm
:
perlbrew install-cpanm
biber
Prerequisite:
XSLT C Library
. Do as root:pkg_add libxslt
Clone the git repository of
biber
:git clone https://github.com/plk/biber.git
Proceed with the installation of
biber
as described in the documentation available on CTAN:cd biber git checkout vX.YY # eg. v2.20 for biber 2.20 cpanm Module::Build perl Build.PL ./Build installdeps ./Build install
Now build and install
PAR::Packer
:cpanm PAR::Packer
Finally, build
biber
executable for OpenBSD as follows:mkdir dist/openbsd_amd64 && cd dist/openbsd_amd64
Add in this directory a new file named
build.sh
with the following contents:#!/bin/sh PERLB_VERSION=$(perlbrew info | grep Name: | sed 's/Name://') PAR_VERBATIM=1 pp \ --module=deprecate \ --module=BibTeX::Parser \ --module=Text::BibTeX \ --module=Biber::Input::file::bibtex \ --module=Biber::Input::file::biblatexml \ --module=Biber::Output::dot \ --module=Biber::Output::bbl \ --module=Biber::Output::bibtex \ --module=Biber::Output::biblatexml \ --module=Pod::Simple::TranscodeSmart \ --module=Pod::Simple::TranscodeDumb \ --module=List::MoreUtils::XS \ --module=List::SomeUtils::XS \ --module=List::MoreUtils::PP \ --module=HTTP::Status \ --module=HTTP::Date \ --module=Encode:: \ --module=File::Find::Rule \ --module=IO::Socket::SSL \ --module=IO::String \ --module=PerlIO::utf8_strict \ --module=Text::CSV_XS \ --module=DateTime \ --addfile="../../data/biber-tool.conf;lib/Biber/biber-tool.conf" \ --addfile="../../data/schemata/config.rnc;lib/Biber/config.rnc" \ --addfile="../../data/schemata/config.rng;lib/Biber/config.rng"\ --addfile="../../data/schemata/bcf.rnc;lib/Biber/bcf.rnc" \ --addfile="../../data/schemata/bcf.rng;lib/Biber/bcf.rng" \ --addfile="../../lib/Biber/LaTeX/recode_data.xml;lib/Biber/LaTeX/recode_data.xml" \ --addfile="../../data/bcf.xsl;lib/Biber/bcf.xsl" \ --addfile="$HOME/perl5/perlbrew/perls/${PERLB_VERSION}/lib/libbtparse.so;../libbtparse.so" \ --cachedeps=scancache \ --output=biber-openbsd \ ../../bin/biber
Finally, to produce
biber-openbsd
, makebuild.sh
executable and run it:chmod +x build.sh ./build.sh