summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 2311d6e7b1674fb8b6baa1928d3ee2e27ddd1cea (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
# Maintainer: yjun <jerrysteve1101@gmail.com>
# Maintainer: Maik93 <michael.mugnai@gmail.com>
# Maintainer: taotieren <admin@taotieren.com>
# Maintainer: GPereira <goncalo_pereira@outlook.pt>
# Maintainer: CloverGit <clovergit@hotmail.com>

pkgname=stm32cubeprog
pkgver=2.23.0
pkgrel=4
pkgdesc='An all-in-one multi-OS software tool for programming STM32 products.'
arch=('x86_64')
url='https://www.st.com/en/development-tools/stm32cubeprog.html'
license=('custom:SLA0048')

depends=(
  'gtk3'
  'libglvnd'
)

optdepends=(
  'stlink: udev rules for ST-LINK devices'
)

makedepends=(
  'gendesk'
  'icoutils'
)

provides=('stm32cubeprogrammer')
options=('!strip' '!debug')

source=(
  "SetupSTM32CubeProgrammer_linux_64-${pkgver}.zip::https://www.st.com/cloudfront/publish/stm32cubeprg-lin-v${pkgver//./-}/${pkgver}/en/SetupSTM32CubeProgrammer_linux_64.zip"
  'SLA0048_STM32CubeProg.pdf'
)

sha256sums=('6a9e60a5a048c45eb3241f9bb66bdc2e6cbd0119fb2e42568dc059fc6167442a'
            'c6d92c00dee63e0f4a54d8ea62f82a646243c3e1480142ae3e7f4ca5d77d5702')

prepare() {
  cd "${srcdir}"

  chmod u+x jre/bin/java

  gendesk -f -n \
    --pkgname "${pkgname}" \
    --pkgdesc "${pkgdesc}" \
    --path "/opt/${pkgname}/bin" \
    --name "STM32CubeProgrammer" \
    --exec "/opt/${pkgname}/bin/STM32CubeProgrammer" \
    --icon "${pkgname}" \
    --categories "Development"

  # STM32CubeMX also bundles a copy of STM32TrustedPackageCreator. However,
  # UM2238 identifies it as part of the STM32CubeProgrammer tool set.
  # Therefore, this package provides its public command wrappers and desktop entry,
  # while the copy bundled with STM32CubeMX remains private to that package.
  gendesk -f -n \
    --pkgname "${pkgname}-trusted-package-creator" \
    --pkgdesc "STM32 Trusted Package Creator" \
    --path "/opt/${pkgname}/bin" \
    --name "STM32 Trusted Package Creator" \
    --exec "/opt/${pkgname}/bin/STM32TrustedPackageCreator" \
    --icon "stm32trustedpackagecreator" \
    --categories "Development"
}

build() {
  cd "${srcdir}"

  rm -rf build icon
  mkdir -p build icon

  ./jre/bin/java "-DINSTALL_PATH=${srcdir}/build" -jar "SetupSTM32CubeProgrammer-${pkgver}.exe" -options-system

  icotool -x "build/util/Programmer.ico" -o "icon"
  icotool -x "build/util/STM32TrustedPackageCreator.ico" -o "icon"
}

package() {
  install -dm755 "${pkgdir}/opt/${pkgname}"
  cp -a --no-preserve=ownership "${srcdir}/build/." "${pkgdir}/opt/${pkgname}"

  # icons
  for entry in \
    'Programmer:stm32cubeprog' \
    'STM32TrustedPackageCreator:stm32trustedpackagecreator'; do
    prefix=${entry%%:*}
    icon_name=${entry#*:}

    for icon_file in "${srcdir}/icon/${prefix}_"*x32.png; do
      size=${icon_file##*_}
      size=${size%%x*}

      install -Dm644 "${icon_file}" \
        "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/${icon_name}.png"
    done
  done

  # documentation
  install -Dm644 "${pkgdir}/opt/${pkgname}/doc/Readme.txt" -t "${pkgdir}/usr/share/doc/${pkgname}"
  install -Dm644 "${pkgdir}/opt/${pkgname}/doc/license.txt" -t "${pkgdir}/usr/share/licenses/${pkgname}"
  install -Dm644 "${srcdir}/SLA0048_STM32CubeProg.pdf" -t "${pkgdir}/usr/share/licenses/${pkgname}"

  # desktop entries
  install -Dm644 "${srcdir}/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
  install -Dm644 "${srcdir}/${pkgname}-trusted-package-creator.desktop" \
    "${pkgdir}/usr/share/applications/${pkgname}-trusted-package-creator.desktop"

  # command wrappers
  for entry in \
    'stm32cubeprogrammer:STM32CubeProgrammer' \
    'stm32_programmer_cli:STM32_Programmer.sh' \
    'stm32_keygen_cli:STM32_KeyGen_CLI' \
    'stm32_signingtool_cli:STM32_SigningTool_CLI' \
    'stm32trustedpackagecreator:STM32TrustedPackageCreator' \
    'stm32trustedpackagecreator_cli:STM32TrustedPackageCreator_CLI'; do
    wrapper_name=${entry%%:*}
    target_name=${entry#*:}

    install -Dm755 /dev/stdin "${pkgdir}/usr/bin/${wrapper_name}" <<EOF
#!/bin/sh
exec "/opt/${pkgname}/bin/${target_name}" "\$@"
EOF
  done

  # remove unused installer components
  rm -rf \
    "${pkgdir}/opt/${pkgname}/updater" \
    "${pkgdir}/opt/${pkgname}/.installationinformation"
}
# vim: set sw=2 ts=2 et: