| #!/bin/bash |
| # |
| # Copyright (c) 2020, The OpenThread Authors. |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # 3. Neither the name of the copyright holder nor the |
| # names of its contributors may be used to endorse or promote products |
| # derived from this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| # POSSIBILITY OF SUCH DAMAGE. |
| # |
| |
| # |
| # Build openthread-br inside docker. |
| # |
| # The binaries will be put into volume named openwrt-bin. |
| # |
| |
| set -euxo pipefail |
| |
| PACKAGE_NAME=openthread-br |
| readonly PACKAGE_NAME |
| |
| CONTAINER_NAME=openwrt-sdk |
| readonly CONTAINER_NAME |
| |
| do_prepare() |
| { |
| docker create --name "${CONTAINER_NAME}" --rm -v openwrt-bin:/home/build/openwrt/bin -it openwrt/sdk:22.03.3 |
| docker cp . "${CONTAINER_NAME}":/home/build/ot-br-posix |
| echo 'src-link openthread /home/build/ot-br-posix/etc/openwrt' >feeds.conf |
| |
| docker start "${CONTAINER_NAME}" |
| docker exec "${CONTAINER_NAME}" scripts/feeds update base |
| docker exec "${CONTAINER_NAME}" scripts/feeds update packages |
| docker exec "${CONTAINER_NAME}" scripts/feeds install libjson-c libubox libubus libavahi-client |
| |
| docker cp feeds.conf "${CONTAINER_NAME}":/home/build/openwrt/feeds.conf |
| docker exec "${CONTAINER_NAME}" sudo chown -R build:build /home/build/ot-br-posix /home/build/openwrt/feeds.conf /home/build/openwrt/bin |
| docker exec "${CONTAINER_NAME}" scripts/feeds update openthread |
| docker exec "${CONTAINER_NAME}" make defconfig |
| docker exec "${CONTAINER_NAME}" scripts/feeds install openthread-br |
| } |
| |
| do_build() |
| { |
| docker exec "${CONTAINER_NAME}" make V=sc package/openthread-br/compile |
| docker exec "${CONTAINER_NAME}" find . -name "${PACKAGE_NAME}*.ipk" | grep "${PACKAGE_NAME}" |
| } |
| |
| do_clean() |
| { |
| local exit_code=$? |
| rm feeds.conf || true |
| docker stop "${CONTAINER_NAME}" || true |
| exit $exit_code |
| } |
| |
| main() |
| { |
| if [[ $# == 0 ]]; then |
| trap do_clean EXIT |
| do_prepare |
| do_build |
| else |
| case "$1" in |
| prepare) |
| do_prepare |
| ;; |
| build) |
| do_build |
| ;; |
| clean) |
| do_clean |
| ;; |
| esac |
| fi |
| } |
| |
| main "$@" |