SHARE
TWEET

mplabx-bin 3.65 that works

methril Jul 5th, 2017 171 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Maintainer: mickael9 <mickael9 at gmail dot com>
  2. # Contributor: Peter Ivanov <ivanovp@gmail.com>
  3. # Contributor: joat
  4. # Contributor: Rafael Campos Las Heras<methril at gmail dot com>
  5. # Submitter: BxS <bxsbxs at gmail dot com>
  6.  
  7. pkgname=microchip-mplabx-bin
  8. pkgver=3.65
  9. _mplabcomm_version=3.25.01
  10. pkgrel=1
  11. pkgdesc="IDE for Microchip PIC and dsPIC development"
  12. arch=(i686 x86_64)
  13. url='http://www.microchip.com/mplabx'
  14. license=(custom)
  15. depends=(gtk2 alsa-lib libxslt libxtst "java-runtime>=7" "java-openjfx")
  16. makedepends=(fakechroot desktop-file-utils)
  17. makedepends_x86_64=(lib32-fakeroot)
  18. optdepends=('microchip-mplabxc8-bin: C compiler for PIC10 PIC12 PIC16 PIC18 MCUs'
  19.             'microchip-mplabxc16-bin: C compiler for PIC24 MCUs and dsPIC DSCs'
  20.             'microchip-mplabxc32-bin: C Compiler for PIC32 MCUs'
  21.             'microchip-mplabc18-bin: C compiler for PIC18 MCUs'
  22.             'sdcc: C compiler for PIC16/18 MCUs'
  23.             )
  24. provides=(mplab)
  25. conflicts=(mplab)
  26. options=(!strip docs libtool emptydirs !zipman !upx)
  27. install="${pkgname}.install"
  28.  
  29. _mplabx_dir="/opt/microchip/mplabx/v${pkgver}"
  30. _mplabx_installer="MPLABX-v${pkgver}-linux-installer"
  31.  
  32. #_mplabcomm_dir="/opt/microchip/mplabcomm"
  33. _mplabcomm_installer="MPLABCOMM-v${_mplabcomm_version}-linux-installer"
  34. _mplabcomm_dir="/opt/microchip/mplabcomm/v${_mplabcomm_version}"
  35.  
  36. source=("http://ww1.microchip.com/downloads/en/DeviceDoc/${_mplabx_installer}.tar"
  37.         "LICENSE")
  38. source_x86_64=("fakechroot-i686.pkg.tar.xz::http://www.archlinux.org/packages/extra/i686/fakechroot/download/")
  39.  
  40. md5sums=('c73ac7afbfe079c5ec389b7eed2d1f50'
  41.          'a34a85b2600a26f1c558bcd14c2444bd')
  42. md5sums_x86_64=('a12f5c06479f3cd0678e705e08b95233')
  43.  
  44. backup=("etc/mplab_ide.conf")
  45.  
  46. PKGEXT='.pkg.tar'
  47.  
  48. package() {
  49.   mkdir -p "${pkgdir}"/{etc,usr/{bin,lib},tmp}
  50.  
  51.   # Create a fake chroot in $pkgdir to run the installer into
  52.   ln -s /usr/bin "${pkgdir}/"
  53.  
  54.   echo "root:x:0:0:root:/root:/bin/bash" > "${pkgdir}/etc/passwd"
  55.   echo "root:x:0:root" > "${pkgdir}/etc/group"
  56.  
  57.   echo "Extracting installers..."
  58.   sh ${_mplabx_installer}.sh --tar xf ./${_mplabx_installer}.run
  59.   mv ${_mplabx_installer}.run "${pkgdir}/tmp"
  60.   chmod 0755 "${pkgdir}/tmp/${_mplabx_installer}.run"
  61.  
  62.   # Create install script in chroot
  63.   cat << EOF > "${pkgdir}/tmp/install.sh"
  64. #!/bin/sh
  65. LD_LIBRARY_PATH="${srcdir}/usr/lib/libfakeroot/fakechroot:\$LD_LIBRARY_PATH"
  66. PATH=/bin
  67. echo Running MPLABX installer...
  68. tmp/${_mplabx_installer}.run --mode unattended
  69. EOF
  70.  
  71.   chmod 0755 "${pkgdir}/tmp/install.sh"
  72.  
  73.   # Run the installer in the fake chroot
  74.   fakechroot chroot "${pkgdir}" tmp/install.sh
  75.  
  76.   # Remove uninstaller files
  77.   rm -f "${pkgdir}${_mplabx_dir}"/Uninstall_*
  78.  
  79.   # Fix ugly fonts
  80.   sed -i 's/^default_options="/default_options="-J-Dawt.useSystemAAFontSettings=on /' "${pkgdir}${_mplabx_dir}/mplab_ide/etc/mplab_ide.conf"
  81.  
  82.   # Fix broken udev rules
  83.   sed -i '/^BUS!="usb"/c \ACTION!="add", SUBSYSTEM!="usb_device", GOTO="jlink_rules_end"\r' "${pkgdir}/etc/udev/rules.d/99-jlink.rules"
  84.  
  85.   # Rename udev rules to avoid conflict with jlink-software-and-documentation
  86.   mv "${pkgdir}"/etc/udev/rules.d/{99-jlink,98-jlink-mplabx}.rules
  87.  
  88.   # Patch jdkhome to use system JRE
  89.   local conf
  90.   for conf in mplab_ipe/mplab_ipe mplab_ipe/ipecmd.sh mplab_ide/etc/mplab_ide.conf; do
  91.     sed -i '/^jdkhome=/c \jdkhome=/usr/lib/jvm/default-runtime/' "${pkgdir}${_mplabx_dir}/${conf}"
  92.   done
  93.   sed -i '/^"$jdkhome"bin\/java/c\ java -jar '${_mplabx_dir}'/mplab_ipe/ipe.jar' "${pkgdir}${_mplabx_dir}/mplab_ipe/mplab_ipe"
  94.  
  95.   # Move config file to /etc (and add a symlink into the old location)
  96.   mv "${pkgdir}${_mplabx_dir}/mplab_ide/etc/mplab_ide.conf" "${pkgdir}/etc/"
  97.  
  98.   ln -sf /etc/mplab_ide.conf "${pkgdir}${_mplabx_dir}/mplab_ide/etc/"
  99.  
  100.   # Remove bundled JRE
  101.   rm -rf "${pkgdir}${_mplabx_dir}/sys/java"
  102.   rmdir "${pkgdir}${_mplabx_dir}/sys" # the intent here is to fail if something else than java is put into sys.
  103.  
  104.   # Move libs away from /usr/local/lib
  105.   mv "${pkgdir}"/usr/local/lib/*.so{,.*} "${pkgdir}"/usr/lib/
  106.   rm -rf "${pkgdir}/usr/local/"
  107.  
  108.   # Symlink executables
  109.   ln -sf "${_mplabx_dir}/mplab_ide/bin/mplab_ide" "${pkgdir}/usr/bin/"
  110.   ln -sf "${_mplabx_dir}/mplab_ide/bin/mdb.sh" "${pkgdir}/usr/bin/mdb"
  111.   ln -sf "${_mplabx_dir}/mplab_ide/bin/prjMakefilesGenerator.sh" "${pkgdir}/usr/bin/prjMakefilesGenerator"
  112.   ln -sf "${_mplabx_dir}/mplab_ipe/mplab_ipe" "${pkgdir}/usr/bin/"
  113.   ln -sf "${_mplabcomm_dir}"/lib/mchplinusbdevice "${pkgdir}/etc/.mplab_ide/"
  114.  
  115.   # Symlink libs from MPLABCOMM
  116.   local lib
  117.   for lib in "${pkgdir}${_mplabcomm_dir}"/lib/*.so{,.*}; do
  118.     local bname=$(basename "$lib")
  119.     ln -sf "${_mplabcomm_dir}"/lib/"${bname}"  "${pkgdir}/usr/lib/"
  120.   done
  121.  
  122.   # Correctly link .so.* -> .so for all libs
  123.   for lib in "${pkgdir}"/usr/lib/*.so.*; do
  124.     local bname=$(basename "$lib")
  125.     local soname=${bname%.so.*}
  126.     ln -sf ${bname} "${pkgdir}/usr/lib/${soname}.so"
  127.   done
  128.  
  129.   # Fix hardcoded /usr/local/lib reference in libjlinkpic32.so
  130.   sed -i 's#/usr/local/lib/libjlinkpic32.so#/usr/lib/libjlinkpic32.so\x00\x00\x00\x00\x00\x00#' "${pkgdir}/usr/lib/libSEGGERAccessLink.so"
  131.  
  132.   # Tweak .desktop files for better desktop integration
  133.   echo "StartupWMClass=MPLAB X IDE v${pkgver}" >> "${pkgdir}/usr/share/applications/mplab.desktop"
  134.   echo "StartupWMClass=com-microchip-ipe-ui-ProdProgrammerApp" >> "${pkgdir}/usr/share/applications/mplab_ipe.desktop"
  135.  
  136.   # Install license files
  137.   install -Dm 644 "${srcdir}"/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
  138.   install -Dm 644 "${pkgdir}${_mplabcomm_dir}"/MPLABCOMMLicense.txt "${pkgdir}/usr/share/licenses/${pkgname}/MPLABCOMMLicense.txt"
  139.  
  140.   # Cleanup
  141.   rm "${pkgdir}"/{bin,etc/{group,passwd}}
  142.   rm -r "${pkgdir}/tmp"
  143.   # wtf
  144.   rm -f "${pkgdir}${_mplabcomm_dir}"/"${_mplabcomm_version}"/MPLABCOMM-*.run
  145. }
RAW Paste Data
Pastebin PRO Autumn Special!
Get 40% OFF on Pastebin PRO accounts!
Top