summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD146
1 files changed, 88 insertions, 58 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 53394362ba02..dc147782954c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,6 @@
# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com
# Contributor: giacomo giacomogiorgianni gmail
# Contributor: brenton <brenton taylorbyte com>
-# Category: system
# There's a new generic lpr driver 3.1.0-1 available but it looks like some
# work to get it compatible with the cups driver.
@@ -26,14 +25,13 @@ pkgname="brother-${_brotherlnd}"
# I'd like to add a dash to the package name and the printer driver but that
# could invalidate a lot of cups settings and documents and make us different
# from other distros.
-pkgver='2.0.4'
-pkgrel='2'
-_lprpkgver='2.1.0'
-_lprpkgrel='1'
+pkgver='2.0.4_2'
+pkgrel='1'
+_lprpkgver='2.1.0_1'
pkgdesc="LPR and CUPS driver for the Brother ${_brotheru} printer"
arch=('i686' 'x86_64')
-url='http://solutions.brother.com/linux/en_us/'
-license=('custom:Brother Industries')
+url='http://www.brother.com/'
+license=('GPL' 'custom')
depends=('cups' 'ghostscript' 'psutils' 'a2ps' 'sed' 'grep')
depends_x86_64=('lib32-glibc')
# We look at the scripts and find these programs from which we decide on the depends above.
@@ -45,21 +43,24 @@ depends_x86_64=('lib32-glibc')
# sed grep awk
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670055
# Printing a text file fails when Liberation is the only TrueType font available
-optdepends=('ttf-dejavu: printing text files from lpr')
-#install="${pkgname}.install"
-# The cups wrapper uses the lpr driver.
-_brsource="br${_brotherlnd}cups_src-${pkgver}-${pkgrel}"
+optdepends=(
+ 'ttf-dejavu: printing text files from lpr'
+ 'brscan4: Scanner support'
+)
+_brsource="br${_brotherlnd}cups_src-${pkgver//_/-}"
+_dlf="http://www.brother.com/pub/bsc/linux/dlf"
source=(
- "http://download.brother.com/welcome/dlf006760/${_brsource}.tar.gz"
- "http://download.brother.com/welcome/dlf006238/cupswrapper${_brotherund}-${pkgver}-${pkgrel}.i386.rpm"
- "http://www.brother.com/pub/bsc/linux/dlf/${_brotherlnd}lpr-${_lprpkgver}-${_lprpkgrel}.i386.rpm"
- #"http://download.brother.com/welcome/dlf101124/brgenml1lpr-3.1.0-1.i386.rpm"
+ "${_dlf}/cupswrapper${_brotherund}-${pkgver//_/-}.i386.rpm"
+ "${_dlf}/${_brotherlnd}lpr-${_lprpkgver//_/-}.i386.rpm"
+ "${_dlf}/${_brsource}.tar.gz"
+ 'lpr-license.txt'
)
-sha256sums=('0330ea2d74627026736842beade0b504816265cdd61b1b1b49a234a1e2c8011c'
- '358e37e1d8cfdce25b1ebe17f21fd2cf3abcdc45263c7e007e36c8be74ae2fbf'
- 'b3ffe2e882d08763795e2cc18b35e724e5157a57edf6c76696401c4c810af3a9')
+sha256sums=('358e37e1d8cfdce25b1ebe17f21fd2cf3abcdc45263c7e007e36c8be74ae2fbf'
+ 'b3ffe2e882d08763795e2cc18b35e724e5157a57edf6c76696401c4c810af3a9'
+ '0330ea2d74627026736842beade0b504816265cdd61b1b1b49a234a1e2c8011c'
+ '576f8d52351b450f417322885106490cdf7b97b45c7f6262f5eafaddf63adf29')
-build() {
+prepare() {
set -u
# Do not Install in '/usr/local'. Does not apply to all Brother models.
# This may modify binary blobs which only
@@ -68,7 +69,7 @@ build() {
install -dm755 "${srcdir}/usr/share"
mv "${srcdir}/usr/local/Brother/" "${srcdir}/usr/share/brother"
rm -rf "${srcdir}/usr/local"
- sed -i -e 's:/usr/local/Brother:/usr/share/brother:g' $(grep -lr '/usr/local/Brother' ./)
+ sed -e 's:/usr/local/Brother:/usr/share/brother:g' -i $(grep -lr '/usr/local/Brother' ./)
fi
# setup cups-directories
@@ -83,6 +84,9 @@ build() {
test -f "${_rcfile}" || echo "${}"
local _bindir="$(find "`pwd`" -type d -name 'cupswrapper')"
test -d "${_bindir}" || echo "${}" # die if blank or invalid before we rm something we don't want to
+ pushd "${_bindir}" > /dev/null
+ local _brcupsconf=(brcupsconf*); _brcupsconf="${_brcupsconf[0]}"
+ test -x "${_brcupsconf}" || echo "${}"
rm -f "${_bindir}"/* # We download the cups driver only to throw it all away. All I want is the dir name without hunting for it in the installer.
local _basedir="${srcdir}/${_brsource}"
test -d "${_basedir}" || echo "${}"
@@ -106,15 +110,14 @@ build() {
# rid of that either.
cd "${_makedir}"
if [ -s 'Makefile' ]; then
- make -s
+ 'ma''ke' -s
cp -p 'brcupsconfpt1' "${_bindir}"
else
- # Not sure why it's called brcupsconfig3 some places and brcupsconfig4 in others.
- # The version in their binary matches the version in the source so it looks good to me.
# gcc options are pulled from other Brother makefiles.
- gcc -pipe -Wall -W -O2 -s -o "${_bindir}/brcupsconfig4" "brcupsconfig.c"
+ gcc -pipe -Wall -W -O2 -s -o "${_bindir}/${_brcupsconf}" "brcupsconfig.c"
fi
+ # Some models supply the ppd in the install script
cd "${_bindir}"
if [ ! -z "${_ppddir:-}" ]; then
# Use the ppd supplied in the source
@@ -125,51 +128,85 @@ build() {
# Some Brother installers create files here
mkdir -p "${srcdir}/var/tmp"
- # Fix any sbin reference in the lpr driver. The cups driver uses bin.
- sed -i -e 's:/sbin/:/bin/:g' $(find "${srcdir}/usr" -type f -name "psconvert2")
+ # Fix lpr driver.
+ sed -e '# Fix sbin reference' \
+ -e 's:/sbin/:/bin/:g' \
+ -e '#Fix hash bang' \
+ -e 's:#/bin/sh:#!/bin/sh:g' \
+ -i $(find "${srcdir}/usr" -type f -name 'psconvert2')
# Fix page shifted off center that affects some printers
# Letter prints off center shifted down and right with PaperType=A4
# I can only test printing A4 on Letter paper. A4 appears to print correctly with PaperType=Letter
- sed -i -e 's:^\(PaperType\)=.\+$:\1=Letter:g' "${_rcfile}"
+ sed -e 's:^\(PaperType\)=.\+$:\1=Letter:g' -i "${_rcfile}"
# Modify the installer so we can finish the install here in PKGBUILD.
cp -p "${_wrapdir}/${_wrapper_source}" "${_bindir}/"
#cp -p "${_wrapper_source}" "${_wrapper_source}.Arch" # debug: diff compare with Total Commander
- sed -i -e '# Install to _srcdir. Some folders may not apply to this model.' \
- -e 's:/usr:${_srcdir}&:g' \
- -e 's:/opt:${_srcdir}&:g' \
- -e 's:/var:${_srcdir}&:g' \
- -e "# Stop the Install script after the files are generated. cups doesn't require a reload to see the printer driver." \
- -e 's:^if \[ -e /etc/init:exit 0 #Arch Linux Compatible\n&:g' \
- "${_wrapper_source}"
- grep -lq "#Arch Linux Compatible" "${_wrapper_source}" || echo "${}"
+ sed -e '# Install to _srcdir. Some folders may not apply to this model.' \
+ -e 's:/usr:"${_srcdir}"&:g' \
+ -e 's:/opt:"${_srcdir}"&:g' \
+ -e 's:/var:"${_srcdir}"&:g' \
+ -e 's:/etc:"${_srcdir}"&:g' \
+ -e 's:""${_srcdir}":"${_srcdir}:g' \
+ -e "# Stop the Install script after the files are generated. cups doesn't require a reload to see the printer driver." \
+ -e 's:^sleep.*$:exit 0 # & #Arch Linux Compatible:g' \
+ -e '# not using set -u allows bugs like this to slip by' \
+ -e '#/Nup=/ s:`:\\`:g' \
+ -e 's: $errorcode: \\$errorcode:g' \
+ -e '# This printer requires the permissions fix that isnt multi user compatible.' \
+ -e 's:/usr/local/Brother:/usr/share/brother:g' \
+ -i "${_wrapper_source}"
+ grep -lq "#Arch Linux Compatible$" "${_wrapper_source}" || echo "${}"
test -f "${_wrapper_source}.Arch" && echo "${}" # Halt for debugging
# Generate PPD and wrapper. Use sh -x to debug
# Possible bug: copying to /usr/share/ppd is disabled.
- export _srcdir="${srcdir}"
- sh -e "${_wrapper_source}" -i
- unset _srcdir
-
+ _srcdir="${srcdir}" \
+ sh -u -e "${_wrapper_source}" -i
+ chmod 644 "${srcdir}/usr/share/cups/model"/*.ppd # Some installers make ppd executable
rm -rf "${srcdir}/var"
# Remove srcdir from the generated wrapper file.
# No paths in the generated ppd.
- sed -i -e '# Remove the ${_srcdir} variety' \
- -e 's:${_srcdir}::' \
- -e '# Remove the /home/... variety' \
- -e "s:${srcdir}::" "${srcdir}/usr/lib/cups/filter/"*lpdwrapper*
+ sed -e '# Remove the ${_srcdir} variety' \
+ -e 's:${_srcdir}::' \
+ -e '# Remove the /home/... variety' \
+ -e "s:${srcdir}::" \
+ -e '# Remove surplus quotes' \
+ -e 's:""/:/:g' \
+ -i "${srcdir}/usr/lib/cups/filter"/*lpdwrapper*
# We did everything in the installer so we can get rid of it.
- rm -f "${_wrapper_source}"
- set +u
+ rm "${_wrapper_source}"
+
+ cd "${srcdir}"
+ # Misnamed printer does not sort or autodetect properly
+ sed -e "s:Brother ${_brotherund} :Brother ${_brotheru} :g" -i 'usr/share/cups/model'/*.ppd
+
+ # Check to see if the lpd wrapper is referenced by the ppd
+ # Check to see if our compiled code is referenced by the lpd wrapper
+ local _nppdfound=0
+ local _ncodefound=0
+ local _lwrapper
+ for _lwrapper in 'usr/lib/cups/filter'/*; do
+ if grep -q "$(basename "${_lwrapper}")" 'usr/share/cups/model'/*.ppd; then
+ _nppdfound=$((_nppdfound+1))
+ fi
+ if grep -q "${_brcupsconf}" "${_lwrapper}"; then
+ _ncodefound=$((_ncodefound+1))
+ fi
+ done
+ test "${_nppdfound}" -ne 0 || echo "${}"
+ test "${_ncodefound}" -ne 0 || echo "${}"
+
+ set +u
}
package() {
set -u
local _dir
# /var/spool is not used anywhere in this package. Maybe it's needed for non cups lprng.
- for _dir in usr opt; do # var
+ for _dir in 'usr' 'opt'; do # 'var'
if [ -d "${srcdir}/${_dir}" ]; then
cp -pR "${srcdir}/${_dir}" "${pkgdir}"
fi
@@ -183,18 +220,11 @@ package() {
test "$(find "${pkgdir}/usr/lib/cups/filter/" -type f)"
# Ensure there are no forbidden paths
- grep -alqr "/sbin" "${pkgdir}" && echo "${}"
- grep -alqr "/usr/tmp" "${pkgdir}" && echo "${}"
-
- #install -Dm644 'cupswrapper-license.txt' "${pkgdir}/usr/share/licenses/${pkgname}/cupswrapper-licence.txt"
- #install -Dm644 'lpr-license.txt' "${pkgdir}/usr/share/licenses/${pkgname}/lpr-licence.txt"
-
- # Change mode to avoid warning on reinstall
- # This is no longer necessary. Running the installer here in PKGBUILD sets
- # the proper permissions for the package.
- #install -d -m777 "${pkgdir}/usr/local/Brother/inf/"
- # It looks like this is so everyone can write to brMFC7360Nrc (brPRINTERrc)
- # I suspect this isn't safe for multiple users.
+ ! grep -alqr "/sbin" "${pkgdir}" || echo "${}"
+ ! grep -alqr "/usr/tmp" "${pkgdir}" || echo "${}"
+
+ install -Dpm644 <(sed -e 's:\r::g' "${_brsource}/Copying") "${pkgdir}/usr/share/licenses/${pkgname}/cupswrapper-licence.txt"
+ install -Dpm644 'lpr-license.txt' "${pkgdir}/usr/share/licenses/${pkgname}/lpr-licence.txt"
set +u
}
set +u