summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Severance2017-06-05 19:43:10 -0400
committerChris Severance2017-06-05 19:43:10 -0400
commit9ef8d18fc12ae51c993cadeb94a18d963baa6a88 (patch)
treebde35dc7a7715c208299cf0e786cd8d3e85b922d
parent58bf58b33a9b5a1251d9a51b99bd193dd3f5c97f (diff)
downloadaur-9ef8d18fc12ae51c993cadeb94a18d963baa6a88.tar.gz
Update printer name to fix autodetect
-rw-r--r--.SRCINFO20
-rw-r--r--PKGBUILD146
-rw-r--r--lpr-license.txt11
3 files changed, 112 insertions, 65 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c0c4f69f24c2..0e52ed59c903 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,11 +1,14 @@
+# Generated by mksrcinfo v8
+# Mon Jun 5 23:41:37 UTC 2017
pkgbase = brother-mfc7360n
pkgdesc = LPR and CUPS driver for the Brother MFC-7360N printer
- pkgver = 2.0.4
- pkgrel = 2
- url = http://solutions.brother.com/linux/en_us/
+ pkgver = 2.0.4_2
+ pkgrel = 1
+ url = http://www.brother.com/
arch = i686
arch = x86_64
- license = custom:Brother Industries
+ license = GPL
+ license = custom
depends = cups
depends = ghostscript
depends = psutils
@@ -13,12 +16,15 @@ pkgbase = brother-mfc7360n
depends = sed
depends = grep
optdepends = ttf-dejavu: printing text files from lpr
- source = http://download.brother.com/welcome/dlf006760/brmfc7360ncups_src-2.0.4-2.tar.gz
- source = http://download.brother.com/welcome/dlf006238/cupswrapperMFC7360N-2.0.4-2.i386.rpm
+ optdepends = brscan4: Scanner support
+ source = http://www.brother.com/pub/bsc/linux/dlf/cupswrapperMFC7360N-2.0.4-2.i386.rpm
source = http://www.brother.com/pub/bsc/linux/dlf/mfc7360nlpr-2.1.0-1.i386.rpm
- sha256sums = 0330ea2d74627026736842beade0b504816265cdd61b1b1b49a234a1e2c8011c
+ source = http://www.brother.com/pub/bsc/linux/dlf/brmfc7360ncups_src-2.0.4-2.tar.gz
+ source = lpr-license.txt
sha256sums = 358e37e1d8cfdce25b1ebe17f21fd2cf3abcdc45263c7e007e36c8be74ae2fbf
sha256sums = b3ffe2e882d08763795e2cc18b35e724e5157a57edf6c76696401c4c810af3a9
+ sha256sums = 0330ea2d74627026736842beade0b504816265cdd61b1b1b49a234a1e2c8011c
+ sha256sums = 576f8d52351b450f417322885106490cdf7b97b45c7f6262f5eafaddf63adf29
depends_x86_64 = lib32-glibc
pkgname = brother-mfc7360n
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
diff --git a/lpr-license.txt b/lpr-license.txt
new file mode 100644
index 000000000000..2955b4c00406
--- /dev/null
+++ b/lpr-license.txt
@@ -0,0 +1,11 @@
+License Agreement
+
+This Agreement provides terms and conditions for license grant from Brother Industries, Ltd ("Brother"). Brother, who owns all copyrights to the software that is distributed with this Agreement ("Software") to recipients thereof ("User"), for use of the Software. User shall have the right to use the Software only in accordance with the terms and conditions of this Agreement. Any use by User of the Software shall be deemed as its agreement hereto.
+Note:
+Please click on "I Accept" while holding down "Shift" or right click on "I Accept" and select "Save Target As,,," from the menu.
+
+Brother retains any and all copyrights to the Software. In no case this Agreement shall be construed to assign or otherwise transfer from Brother to User any copyrights or other intellectual property rights to whole or any part of the Software.
+
+Brother grants User a non-exclusive license: to reproduce and/or distribute (via Internet or in any other manner) the Software. Further, Brother grants User a non-exclusive license to modify, alter, translate or otherwise prepare derivative works of the Software and to reproduce and distribute (via Internet or in any other manner) such modification, alteration, translation or other derivative works for any purpose.
+
+The license of the Software from Brother hereunder is granted "AS IS." BROTHER HEREBY DISCLAIMS ANY WARRANTIES WITH RESPECT TO THE SOFTWARE, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTY FOR THE QUALITY, MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE OR NON-INFRINGEMENT. Brother shall have no liability in contract, tort (including negligence or breach of statutory duty) or otherwise for any interruption of use, loss of data, or for any indirect, incidental, punitive or consequential loss or damage, or for any loss of profit, revenue, data, goodwill or anticipated savings that arises under, out of, or in contemplation of this Agreement or otherwise arises due to any error, inaccuracy or defect in the Software even if Brother has been advised of the possibility of such loss or damage. Further, Brother shall have no liability to disclose and/or distribute the source code of the Software to User under any circumstances. In no case shall the above license by Brother to modify, alter, translate or otherwise prepare derivative works of the Software be construed as Brother's implied agreement or undertakings to disclose and/or distribute the source code of the Software.