summaryrefslogtreecommitdiff
path: root/libre/qemu-user-static/PKGBUILD
blob: 56e51c5f28766559eac7d3ac01915702f50a1deb (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
# Maintainer (aur): crab2313 <crab2313@gmail.com>
# Contributor: Stefan Agner <stefan@agner.ch>
# Maintainer: Luke Shumaker <lukeshu@parabola.nu>
# Contributor: Márcio Silva <coadde@hyperbola.info>
# Contributor: bill-auger <bill-auger@programmer.net>

# "Do I need to rebuild?" : A flowchart
#
#                    ,--> pixman-static ------------------------------------,
#                    |      0.34.0-1.static2                                |
# qemu-user-static --+------------------------+----> pcre-static -----------+--> glibc
#  2.12.0-1.static1  |                        |        8.42-1.static1       |      2.27-3
#                    `--> glib2-static -------+----> libffi-static ---------+
#                           2.56.1-1.static1  |        3.2.1-2.static2      |
#                                             +----> libutil-linux-static --+
#                                             |        2.32-3.static1       |
#                                             `----> zlib ------------------'
#                                                      1:1.2.11-2

pkgbase=qemu-user-static
pkgname=(qemu-user-static qemu-user-static-binfmt)
pkgdesc="Statically linked binaries of Qemu with user emulation. Useful for containers/chroot environment with binfmt."
pkgver=7.0.0
pkgrel=1
arch=(armv7h i686 x86_64)
license=(GPL2 LGPL2.1)
url="http://wiki.qemu.org/"
depends=()
makedepends=(python meson glib2-static pcre-static)
source=(https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig})
sha512sums=('44ecd10c018a3763e1bc87d1d35b98890d0d5636acd69fe9b5cadf5024d5af6a31684d60cbe1c3370e02986434c1fb0ad99224e0e6f6fe7eda169992508157b1'
            'SKIP')
validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584')

case $CARCH in
  i?86) _corearch=i386 ;;
  x86_64) _corearch=x86_64 ;;
esac

# If non empty, always run the configure script
: "${FORCE_CONFIGURE:=1}"

prepare() {
  mkdir -p build-user-static

  cd qemu-${pkgver}
  #sed -i 's/vte-2\.90/vte-2.91/g' configure
}

_configure() {
    local libre_opts=(
      --disable-blobs # disable installing firmware files used by system
    )

    ../qemu-${pkgver}/configure \
            --prefix=/usr \
            --sysconfdir=/etc \
            --localstatedir=/var \
            --libexecdir=/usr/lib/qemu \
            --enable-linux-user \
            --disable-debug-info \
            --disable-bsd-user \
            --disable-werror \
            --disable-system \
            --disable-tools \
            --disable-docs \
            --disable-gtk \
            --disable-gnutls \
            --disable-nettle \
            --disable-gcrypt \
            --disable-glusterfs \
            --disable-libnfs \
            --disable-libiscsi \
            --disable-vnc \
            --disable-kvm \
            --disable-libssh \
            --disable-vde \
            --disable-sdl \
            --disable-opengl \
            --disable-xen \
            --disable-fdt \
            --disable-vhost-net \
            --disable-vhost-crypto \
            --disable-vhost-user \
            --disable-vhost-vsock \
            --disable-vhost-scsi \
            --disable-tpm \
            --disable-qom-cast-debug \
            --disable-capstone \
            --disable-zstd \
            --disable-linux-io-uring \
            --disable-bpf \
            ${libre_opts[*]} \
            --static
}

build() (
  cd build-user-static
  [[ ! $FORCE_CONFIGURE && -e ../qemu-${pkgver}/config.log ]] || _configure
  make ARFLAGS="rc"
)

package_qemu-user-static() {
  pkgdesc="QEMU user-mode emulation (static binaries)"
  options=(!strip)

  make -C build-user-static DESTDIR="$pkgdir" install "${@:2}"

  # remove conflicting /var/run directory
  cd "$pkgdir"
  rm -rf var

  # Remove BIOS files etc...
  rm -rf usr/share

  # Rename static qemu binaries
  cd "${pkgdir}/usr/bin/"
  tidy_strip
  ls -1 | while read f; do
    mv "$f" "$f-static"
  done
}

package_qemu-user-static-binfmt() {
  pkgdesc="binfmt registration for QEMU user-mode emulation"
  depends=("qemu-user-static=$pkgver")
  conflicts=(qemu-user)

  cd build-user-static

  install -d "$pkgdir"/usr/lib/binfmt.d

  ./scripts/qemu-binfmt-conf.sh \
       --qemu-path /usr/bin \
       --qemu-suffix -static \
       --systemd ALL \
       --exportdir "$pkgdir"/usr/lib/binfmt.d \
       --credential yes
}