summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0f458e27fefc9dcf79f431010d468f8cba94490d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# Maintainer: Nico Rumpeltin <$forename at $surname dot de>
# Contributor: Gabriel Souza Franco <Z2FicmllbGZyYW5jb3NvdXphQGdtYWlsLmNvbQ==>
# Contributor: Matthias Blaicher <matthias at blaicher dot com>
# Contributor: Danny Dutton <duttondj@vt.edu>
#
# NOTE: If you plan on using the usbblaster make sure you are member of the plugdev group.
#
pkgbase=intel_fpga_lite
pkgname=(${pkgbase}-{base,ip,modelsim_ase,nios2eds,quartus,quartus-help,quartus-arria_lite,quartus-cyclone,quartus-cyclone10lp,quartus-cyclonev,quartus-max,quartus-max10} ${pkgbase})
_mainver=19.1
# Keep dot in _patchver
_patchver=.0
_buildver=670
_basever=.0.670
pkgver=${_mainver}${_patchver}.${_buildver}
pkgrel=4
pkgdesc="Quartus Prime Lite Edition design software for Intel FPGA's. Split packages"
arch=('x86_64')
url="http://fpgasoftware.intel.com/?edition=lite"
license=('custom')

_inteldir="/opt/intel_fpga_lite/${_mainver}"

makedepends=('patchelf')

source=("http://download.altera.com/akdlm/software/acdsinst/${_mainver}std${_patchver/.0/}/${_buildver}/ib_tar/Quartus-lite-${pkgver}-linux.tar"
        'quartus.sh' 'quartus.desktop' 'modelsim-ase.sh' 'modelsim-ase.desktop' '51-usbblaster.rules')
sha256sums=('3546e90f6496b17c3c3e3e8582a3991940ad73ed112740428864460cfab6e40a'
            'b076bf669bbfdd963c9fe23e2db424be4fd1c68d97a79e9ca808dd5726ce400b'
            '630286f589b5191869eaefe360ead393c4d15ba5e7f966d99d822f79cf2784b5'
            '363be8b0656b56f92c34ac0581a8a0f3bb1edaa9da361f50d1e60ec3334c13a7'
            '235002d3a3326cd91164f16f7a8a9e754134ca2157c66e4e8abe71e9cd62dce2'
            'dd9d33fa2698a0ec11ae86f4508f77e2e12bf4a21224f5b16640bc41d6c0999b')

options=(!strip !debug) # Stripping will takes ages, I'd avoid it

build() {
    rm -rf "${srcdir}/install"
    
    echo "Notice: Requires around 24GB of free space during package building!"
    echo "Notice: The package file also requires around 16GB of free space"
    echo "Extracting install binaries and scripts from downloaded tar..."

    DISPLAY="" bash ./setup.sh --mode unattended --unattendedmodeui none --accept_eula 1 --installdir "${srcdir}/install"
    
    # Remove useless unzip binaries
    find "${srcdir}/install" \( -name "unzip" -or -name "unzip32" \) -delete

    # Fix interpreter for the license manager
    for prog in quartus/linux64/{lmutil,lmgrd}; do
        patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 "${srcdir}/install/${prog}"
    done
    for prog in modelsim_ase/linuxaloem/{mgls/bin/,}{lmutil,lmgrd}; do
        patchelf --set-interpreter /lib/ld-linux.so.2 "${srcdir}/install/${prog}"
    done

    # Fix world writable permissions
    find "${srcdir}/install/nios2eds/documents" -perm -o+w -exec chmod go-w {} \+

    # Replace altera directory in integration files
    sed -i "s,_inteldir,${_inteldir},g" quartus.sh
    sed -i "s,_inteldir,${_inteldir},g" quartus.desktop
    sed -i "s,_inteldir,${_inteldir},g" modelsim-ase.sh
    sed -i "s,_inteldir,${_inteldir},g" modelsim-ase.desktop
    
    # Fix modelsim startup code for Linux Kernel >=4.0
    # see https://wiki.archlinux.org/index.php/Altera_Design_Software
    sed -i 's,linux_rh60,linux,g' "${srcdir}/install/modelsim_ase/vco"

    # Modelsim bundles a copy of tkImg linked to old versions of libs
    # Replace by system version
    rm -rf "${srcdir}/install/modelsim_ase/linuxaloem/Img1.3"
    ln -s /usr/lib32/Img[0-9]* "${srcdir}/install/modelsim_ase/linuxaloem/Img"

    # Remove pkgdir reference in sopc_builder
    sed -i "s,${pkgdir},,g" "${srcdir}/install/quartus/sopc_builder/.sopc_builder"

    # Suppress spurious warning about linux-gate.so.1
    sed -i '/msg_system/a suppress = 3116' "${srcdir}/install/modelsim_ase/modelsim.ini"

    # mv help
    mkdir -p "${srcdir}/install/help/"
    mv "${srcdir}/install/quartus/common/help/tutorial" "${srcdir}/install/help/"
    mv "${srcdir}/install/quartus/common/help/webhelp" "${srcdir}/install/help/"

    # mv devices
    mkdir -p "${srcdir}/install/devinfo"
    mv "${srcdir}/install/quartus/common/devinfo/arriaii" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/cycloneive" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/cycloneivgx" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/cyclone10lp" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/cyclonev" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/maxii" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/maxv" "${srcdir}/install/devinfo/"
    mv "${srcdir}/install/quartus/common/devinfo/55nm" "${srcdir}/install/devinfo/"
}

package_intel_fpga_lite-base() {
    pkgdesc="Quartus Prime Lite Edition design software for Intel FPGA's. Split packages"
    # According to the installer script, these dependencies are needed for the installer
    depends=('lib32-expat' 'lib32-fontconfig' 'lib32-freetype2' 'lib32-glibc'
             'lib32-gtk2' 'lib32-libcanberra' 'lib32-libpng' 'lib32-libice' 'lib32-libsm'
             'lib32-util-linux' 'lib32-ncurses' 'lib32-ncurses5-compat-libs' 'lib32-zlib'
             'lib32-libx11' 'lib32-libxau' 'lib32-libxdmcp' 'lib32-libxext' 'lib32-libxft'
             'lib32-libxrender' 'lib32-libxt' 'lib32-libxtst' 'lib32-tkimg' 'libpng12')

    # Copy license file
    install -D -m644 "${srcdir}/install/licenses/license.txt" "${pkgdir}/usr/share/licenses/intel_fpga_lite/LICENSE"
    mkdir -p "${pkgdir}${_inteldir}"
    mv "${srcdir}/install/licenses" "${pkgdir}${_inteldir}"
}

package_intel_fpga_lite-ip() {
    pkgdesc="ModelSim-Intel FPGA Starter Edition"
    depends=("intel_fpga_lite-base=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}"
    mv "${srcdir}/install/ip" "${pkgdir}${_inteldir}"
}

package_intel_fpga_lite-modelsim_ase(){
    pkgdesc="Nios II Embedded Design Suite"
    depends=("intel_fpga_lite-base=$pkgver-$pkgrel")

    install -D -m755 modelsim-ase.sh "${pkgdir}/etc/profile.d/modelsim-ase.sh"
    install -D -m644 modelsim-ase.desktop "${pkgdir}/usr/share/applications/modelsim-ase.desktop"
    mkdir -p "${pkgdir}${_inteldir}"
    mv "${srcdir}/install/modelsim_ase" "${pkgdir}${_inteldir}"
}

package_intel_fpga_lite-nios2eds(){
    pkgdesc="Nios II Embedded Design Suite"
    depends=("intel_fpga_lite-base=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}"
    mv "${srcdir}/install/nios2eds" "${pkgdir}${_inteldir}"
}

package_intel_fpga_lite-quartus(){
    pkgdesc="Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-base=$pkgver-$pkgrel" "intel_fpga_lite-ip=$pkgver-$pkgrel")

    install -D -m755 quartus.sh "${pkgdir}/etc/profile.d/quartus.sh"
    install -D -m644 quartus.desktop "${pkgdir}/usr/share/applications/quartus.desktop"
    # Install usb blaster udev rule
    install -D -m644 51-usbblaster.rules "${pkgdir}/etc/udev/rules.d/51-usbblaster.rules"

    mkdir -p "${pkgdir}${_inteldir}"
    mv "${srcdir}/install/quartus" "${pkgdir}${_inteldir}"
}

package_intel_fpga_lite-quartus-help(){
    pkgdesc="Help for Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/help/"
    mv "${srcdir}/install/help/tutorial" "${pkgdir}${_inteldir}/quartus/common/help/"
    mv "${srcdir}/install/help/webhelp" "${pkgdir}${_inteldir}/quartus/common/help/"
}

package_intel_fpga_lite-quartus-arria_lite(){
    pkgdesc="Arria Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/arriaii" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite-quartus-cyclone(){
    pkgdesc="Cyclone IV Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/cycloneive" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/cycloneivgx" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite-quartus-cyclone10lp(){
    pkgdesc="Cyclone 10 LP Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/cyclone10lp" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite-quartus-cyclonev(){
    pkgdesc="Cyclone V Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/cyclonev" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite-quartus-max(){
    pkgdesc="MAX II and MAX V Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/maxii" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/maxv" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite-quartus-max10(){
    pkgdesc="MAX 10 Support Quartus Prime Lite Edition"
    depends=("intel_fpga_lite-quartus=$pkgver-$pkgrel")

    mkdir -p "${pkgdir}${_inteldir}/quartus/common/devinfo/"
    mv "${srcdir}/install/devinfo/55nm" "${pkgdir}${_inteldir}/quartus/common/devinfo/"
}

package_intel_fpga_lite() {
    pkgdesc="Quartus Prime Lite Edition design software for Intel FPGA's. Split packages"
    depends=(${pkgbase}-{base,ip,modelsim_ase,nios2eds,quartus,quartus-help,quartus-arria_lite,quartus-cyclone,quartus-cyclone10lp,quartus-cyclonev,quartus-max,quartus-max10})
}