summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorYuki Saito2018-02-28 12:05:00 +0900
committerYuki Saito2018-02-28 12:05:00 +0900
commit01f3ffe3e9001fb77c560b3fe8f1977d3f297b04 (patch)
tree6a6c0004731d6c379682d5a869c46c8501e12116 /PKGBUILD
parentb5df787053de88e1665082e1f289c09a53fdfc06 (diff)
downloadaur-brother-mfc-j4910cdw.tar.gz
ON
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD199
1 files changed, 23 insertions, 176 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 39be550b2dd4..b487374e9826 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,182 +1,29 @@
-# The cups binary is 64 bit. Until Brother releases source for the 32 bit lpr
-# binary blobs, 64 bit users must enable multilib.
-
-# This has not been tested with non cups lprng.
-
-set -u
-_brotheru='MFC-J4910CDW'
-_brotherl="${_brotheru,,}" # mfc-0000dw
-_brotherlnd="${_brotherl//-/}" # mfc0000dw
-_brotherund="${_brotheru//-/}" # MFC0000DW
-_brsrcver='1.0.0'
-pkgname="brother-${_brotherl}"
-pkgver='3.0.1'
-pkgrel='1'
-pkgdesc="LPR and CUPS driver for the Brother ${_brotheru} printer"
+model="j4910cdw"
+pkgname="brother-mfc-$model"
+pkgver="20140312"
+pkgrel=1
+lprver="3.0.1-1"
+cwver="3.0.1-1"
+_revision=1
+pkgdesc="LPR, scanner and CUPS drivers for the Brother MFC-J4910CDW"
+url="http://support.brother.com/g/s/id/linux/en/index.html"
arch=('i686' 'x86_64')
-url='http://solutions.brother.com/linux/en_us/'
-license=('custom:Brother Industries')
-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.
-# gs: lpr rendering
-# pdf2ps: cups rendering
-# a2ps: rendering ascii text files
-# (not) pstops: pdf resizing
-# psnup: printing n-up pages
-# 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'
- 'brscan4: Scanner support'
-)
-# The cups wrapper uses the lpr driver.
-_brsource="${_brotherlnd}_cupswrapper_GPL_source_${_brsrcver}-${pkgrel}"
-source=(
- "http://download.brother.com/welcome/dlf102747/${_brotherlnd}cupswrapper-$pkgver-$pkgrel.i386.rpm"
- "http://download.brother.com/welcome/dlf102746/${_brotherlnd}lpr-$pkgver-$pkgrel.i386.rpm"
- "http://download.brother.com/welcome/dlf102750/${_brsource}.tar.gz"
- 'cupswrapper-license.txt'
- 'lpr-license.txt'
-)
-md5sums=(
- '4a0c04490130ed9ec0db6bd577274d82'
- '3e60363241584feb2f6fc4b66a6bf433'
- 'a57eeaca67ae67ccd0c9f2bb5986c2d7'
- '97ad0cffd216059e9d1d3121899d8646'
- '5e87a3dc0f3e3438c088eda0f3565f0d'
-)
-
-build() {
- set -u
- # Do not Install in '/usr/local'. Does not apply to all Brother models.
- # This may modify binary blobs which only
- # works when the old and new strings are exactly the same length.
- if [ -d "${srcdir}/usr/local/Brother" ]; then
- 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' ./)
- fi
-
- # setup cups-directories
- install -dm755 "${srcdir}/usr/lib/cups/filter"
- install -dm755 "${srcdir}/usr/share/cups/model"
- #install -dm755 "${srcdir}/usr/share/ppd" # For cups we don't need the ppd file here.
-
- # Get the dirs and the name of the wrapper. Either in /opt or /usr.
- # This is set up to adapt or crash. Unlike false, ${} shows the line number.
- cd "${srcdir}/opt" 2>/dev/null || cd "${srcdir}/usr"
- local _rcfile="$(find "`pwd`" -type f -ipath "*inf/br${_brotherund}rc")"
- 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
- 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 "${}"
- cd "${_basedir}/cupswrapper" 2>/dev/null || cd "${_basedir}/scripts" 2>/dev/null || cd "${_basedir}"
- local _wrapdir="$(pwd)"
- cd "${_wrapdir}"
- local _wrapper_source="$(echo cupswrapper${_brotherund}*)"
- if ! test -f "${_wrapper_source}"; then
- _wrapper_source="$(echo cupswrapper*)"
- test -f "${_wrapper_source}" || echo "${}"
- fi
- cd "${_basedir}"/brcups*
- local _makedir="$(pwd)"
- if cd "${_basedir}/PPD" 2>/dev/null || cd "${_basedir}/ppd" 2>/dev/null; then
- local _ppddir="$(pwd)"
- fi
-
- # Source is available for the cups binary, not the lpr binaries so we can't
- # get away from multilib. Any usage of /opt is hardcoded into some binaries
- # for which we can't find an equal length replacement so we can't easily get
- # rid of that either.
- cd "${_makedir}"
- if [ -s 'Makefile' ]; then
- make -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}/brcupsconfig3" "brcupsconfig.c"
- fi
-
- cd "${_bindir}"
- if [ ! -z "${_ppddir:-}" ]; then
- # Use the ppd supplied in the source
- cp -p "${_ppddir}"/*.ppd "${_bindir}/"
- chmod 644 "${_bindir}"/*.ppd
- fi
-
- # 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 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}"
-
- # 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 "${}"
- 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
-
- 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*
-
- # We did everything in the installer so we can get rid of it.
- rm -f "${_wrapper_source}"
- set +u
-}
+license=('unknown')
+install="brother-mfc-${model}.install"
+depends=('perl' 'a2ps' 'lib32-libcups')
+source=("http://download.brother.com/welcome/dlf100750/mfc${model}lpr-${lprver}.i386.deb"
+ "http://download.brother.com/welcome/dlf100752/mfc${model}cupswrapper-${cwver}.i386.deb")
+sha256sums=('4653a02abe48166d7d101a49b29eaeaff176498060d1d785f212e48cabb89b10'
+ '28d9321a23c0e70e7a52f8a76b17c1e30cdea59a6b6ff45356dd1ce8824b3df6')
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
- if [ -d "${srcdir}/${_dir}" ]; then
- cp -pR "${srcdir}/${_dir}" "${pkgdir}"
- fi
- done
-
- # /etc/printcap is managed by cups. This eliminates any need for a printcap helper.
- rm -f "`find "${pkgdir}" -type f -name 'setupPrintcap*'`"
-
- # Ensure we got a ppd and a filter for CUPS
- test "$(find "${pkgdir}/usr/share/cups/model" -type f -name '*.ppd')"
- test "$(find "${pkgdir}/usr/lib/cups/filter/" -type f)"
+ ar x mfc${model}lpr-${lprver}.i386.deb && tar xzvf data.tar.gz
+ ar x mfc${model}cupswrapper-${cwver}.i386.deb && tar xzvf data.tar.gz
- # Ensure there are no forbidden paths
- grep -alqr "/sbin" "${pkgdir}" && echo "${}"
- grep -alqr "/usr/tmp" "${pkgdir}" && echo "${}"
+ cd opt/brother/Printers/mfc${model}
+ perl -i -pe 's#/etc/init.d#/etc/rc.d#g' ./cupswrapper/cupswrappermfc${model}
+ perl -i -pe 's#printcap\.local#printcap#g' ./inf/setupPrintcapij
- 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"
- set +u
+ cp -rf $srcdir/usr/ $pkgdir/
+ cp -rf $srcdir/opt/ $pkgdir/
}
-set +u