#!/bin/sh # $version can be 21.02 or 19.07. version=19.07.7 if [ ! -d /tmp/openwrt ]; then cd /tmp git clone https://github.com/openwrt/openwrt.git cd openwrt fi cd /tmp/openwrt git -c advice.detachedHead=false checkout v$version export TOPDIR=$PWD cd target/linux >targets.git for target in *; do [ -d $target ] || continue subtargets=$(make -C $target --no-print-directory DUMP=1 TARGET_BUILD=1 val.SUBTARGETS 2>/dev/null) [ "$subtargets" ] || subtargets=generic for subtarget in $subtargets; do echo $(make -C $target --no-print-directory DUMP=1 TARGET_BUILD=1 SUBTARGET=$subtarget 2>/dev/null | egrep '^(Target:|Target-Arch-Packages:)' | cut -d: -f2) >>targets.git done done targets=$(curl -s https://downloads.openwrt.org/releases/$version/targets/ | grep '<td class="n"><a href=' | cut -d'"' -f4 | sed 's,/,,') >targets.sdk for target in $targets; do subtargets=$(curl -s https://downloads.openwrt.org/releases/$version/targets/$target/ | grep '<td class="n"><a href=' | cut -d'"' -f4 | sed 's,/,,') for subtarget in $subtargets; do arch=$(curl -s https://downloads.openwrt.org/releases/$version/targets/$target/$subtarget/profiles.json | grep arch_packages | cut -d'"' -f4) echo $target/$subtarget $arch >>targets.sdk done done cat >parse-targets.py <<EOF arch_by_target_git = {} arch_by_target_sdk = {} for line in open('targets.git'): fields = line.split() if not fields: continue arch_by_target_git[fields[0]] = fields[1] for line in open('targets.sdk'): fields = line.split() if len(fields) == 2: if arch_by_target_git[fields[0]] != fields[1]: raise Exception(line + ': wrong arch') arch_by_target_sdk[fields[0]] = fields[1] else: arch_by_target_sdk[fields[0]] = '' for arch in sorted(set(arch_by_target_git.values())): targets = [] for t in arch_by_target_git: if arch_by_target_git[t] != arch: continue if t in arch_by_target_sdk: targets.append(t) else: targets.append('~~' + t + '~~') print('|', arch, '|?|', ' '.join(sorted(set(targets))), '|') EOF python3 parse-targets.py