xref: /openbmc/openbmc-tools/ipkdbg/build-opkg (revision 636a6d42)
1c7a446e2SAndrew Jeffery#!/bin/sh
2c7a446e2SAndrew Jeffery
3c7a446e2SAndrew Jefferyset -eu
4c7a446e2SAndrew Jeffery
5c7a446e2SAndrew Jefferyset -x
6c7a446e2SAndrew Jeffery
7c7a446e2SAndrew Jeffery# : ${OPKG_LIBS:="-llzma -lldap -llber -lz -pthread"}
8*636a6d42SJian Zhang: ${OPKG_LIBS:="-lz -pthread -lzstd"}
9c7a446e2SAndrew Jeffery
10c7a446e2SAndrew Jefferygenerate_configure_id() {
11c7a446e2SAndrew Jeffery    echo "$@" | sha256sum | awk '{ printf "build-opkg-%s", $1 }'
12c7a446e2SAndrew Jeffery}
13c7a446e2SAndrew Jeffery
14c7a446e2SAndrew Jefferymark_configured() {
15c7a446e2SAndrew Jeffery    rm -f build-opkg-*
16c7a446e2SAndrew Jeffery    touch $1
17c7a446e2SAndrew Jeffery}
18c7a446e2SAndrew Jeffery
19c7a446e2SAndrew Jeffery# libarchive
20c7a446e2SAndrew Jeffery[ -f libarchive-3.5.2.tar.gz ] || wget http://libarchive.org/downloads/libarchive-3.5.2.tar.gz
21c7a446e2SAndrew Jeffery[ -d libarchive-3.5.2 ] || tar -xvf libarchive-3.5.2.tar.gz
22c7a446e2SAndrew Jefferycd libarchive-3.5.2
23c7a446e2SAndrew JefferyLIBARCHIVE_OPTS="\
24c7a446e2SAndrew Jeffery--without-zlib \
25c7a446e2SAndrew Jeffery--without-bz2lib \
26c7a446e2SAndrew Jeffery--without-libb2 \
27c7a446e2SAndrew Jeffery--without-lz4 \
28c7a446e2SAndrew Jeffery--without-lzo2 \
29c7a446e2SAndrew Jeffery--without-cng \
30c7a446e2SAndrew Jeffery--without-nettle \
31c7a446e2SAndrew Jeffery--without-xml2 \
32c7a446e2SAndrew Jeffery--without-expat \
33*636a6d42SJian Zhang--with-zstd \
34c7a446e2SAndrew Jeffery--disable-acl \
35c7a446e2SAndrew Jeffery--disable-xattr \
36c7a446e2SAndrew Jeffery--enable-posix-regex-lib=libc \
37c7a446e2SAndrew Jeffery--disable-rpath \
38c7a446e2SAndrew Jeffery--disable-bsdcat \
39c7a446e2SAndrew Jeffery--disable-bsdtar \
40c7a446e2SAndrew Jeffery--disable-bsdcpio \
41c7a446e2SAndrew Jeffery--with-pic"
42c7a446e2SAndrew JefferyLIBARCHIVE_ID=$(generate_configure_id "$LIBARCHIVE_OPTS")
43c7a446e2SAndrew Jeffery[ -f $LIBARCHIVE_ID ] || ( ./configure $LIBARCHIVE_OPTS && mark_configured $LIBARCHIVE_ID )
44c7a446e2SAndrew Jefferymkdir -p root && make -j$(nproc) install DESTDIR=$(realpath root)
45c7a446e2SAndrew Jefferycd ..
46c7a446e2SAndrew Jeffery
47c7a446e2SAndrew Jeffery# curl
48c7a446e2SAndrew Jeffery[ -f curl-7.79.1.tar.bz2 ] || wget https://curl.haxx.se/download/curl-7.79.1.tar.bz2
49c7a446e2SAndrew Jeffery[ -d curl-7.79.1 ] || tar -xvf curl-7.79.1.tar.bz2
50c7a446e2SAndrew Jefferycd curl-7.79.1
51c7a446e2SAndrew JefferyCURL_OPTS=--with-openssl
52c7a446e2SAndrew JefferyCURL_ID=$(generate_configure_id "$CURL_OPTS")
53c7a446e2SAndrew Jeffery[ -f $CURL_ID ] || ( ./configure $CURL_OPTS && mark_configured $CURL_ID )
54c7a446e2SAndrew Jefferymkdir -p root && make -j$(nproc) install DESTDIR=$(realpath root)
55c7a446e2SAndrew Jefferycd ..
56c7a446e2SAndrew Jeffery
57c7a446e2SAndrew Jeffery# opkg
58*636a6d42SJian Zhang[ -f opkg-0.6.3.tar.gz ] || wget http://downloads.yoctoproject.org/releases/opkg/opkg-0.6.3.tar.gz
59*636a6d42SJian Zhang[ -d opkg-0.6.3 ] || tar -xvf opkg-0.6.3.tar.gz
60*636a6d42SJian Zhangcd opkg-0.6.3
61c7a446e2SAndrew JefferyOPKG_OPTS="\
62c7a446e2SAndrew Jeffery--with-static-libopkg \
63c7a446e2SAndrew Jeffery--without-libsolv \
64c7a446e2SAndrew Jeffery--enable-curl \
65c7a446e2SAndrew Jeffery--enable-openssl \
66*636a6d42SJian Zhang--enable-zstd \
67c7a446e2SAndrew Jeffery--disable-gpg \
68c7a446e2SAndrew Jeffery--disable-dependency-tracking"
69c7a446e2SAndrew JefferyOPKG_ID=$(generate_configure_id "$OPKG_OPTS" "$OPKG_LIBS")
70c7a446e2SAndrew Jeffery[ -f $OPKG_ID ] || ( \
71c7a446e2SAndrew Jeffery        AR_FLAGS=Tcru \
72c7a446e2SAndrew Jeffery        PKG_CONFIG_PATH=$(realpath ../libarchive-3.5.2/root/usr/local/lib/pkgconfig/):$(realpath ../curl-7.79.1/root/usr/local/lib/pkgconfig/) \
73c7a446e2SAndrew Jeffery        CURL_CFLAGS=-I$(realpath ../curl-7.79.1/root/usr/local/include/) \
74c7a446e2SAndrew Jeffery        CURL_LIBS=$(realpath ../curl-7.79.1/root/usr/local/lib/libcurl.a) \
75c7a446e2SAndrew Jeffery        LIBARCHIVE_CFLAGS=-I$(realpath ../libarchive-3.5.2/root/usr/local/include/) \
76c7a446e2SAndrew Jeffery        LIBARCHIVE_LIBS=$(realpath ../libarchive-3.5.2/root/usr/local/lib/libarchive.a) \
77c7a446e2SAndrew Jeffery        LIBS="$OPKG_LIBS" \
78c7a446e2SAndrew Jeffery        ./configure $OPKG_OPTS && mark_configured $OPKG_ID \
79c7a446e2SAndrew Jeffery    )
80c7a446e2SAndrew Jefferymake -j$(nproc)
81c7a446e2SAndrew Jefferycd ..
82