Skip to content

Commit

Permalink
Merged SDK + binary blobs for GT-BE98
Browse files Browse the repository at this point in the history
  • Loading branch information
gnuton committed Jun 23, 2024
1 parent 2c7fb7f commit 439e3ea
Show file tree
Hide file tree
Showing 1,325 changed files with 246,828 additions and 0 deletions.
223 changes: 223 additions & 0 deletions .github/workflows/github-actions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
name: Images
run-name: "Building images 🚀"
on: [push]
jobs:
build-job:
name: Build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
cfg:
- { model: "gt-be98_pro", sdk: "src-rt-5.04behnd.4916", ui: "default", skip: false }
- { model: "gt-be98", sdk: "src-rt-5.04behnd.4916", ui: "default", skip: false }
if: "!contains(github.event.commits[0].message, '[SKIP_CI]')"
container:
image: gnuton/asuswrt-merlin-toolchains-docker:latest
env:
MERLINUPDATE: "y"
MODEL: ${{ matrix.cfg.model }}
SDK: ${{ matrix.cfg.sdk }}
UI: ${{ matrix.cfg.ui }}
SKIP_BUILD: ${{ matrix.cfg.skip }}
GIT_REPO: "https://github.com/gnuton/asuswrt-merlin.ng.git"
PROJECT_DIR: "/project/asuswrt-merlin.ng"
ARTIFACTS_DIR: "/project/artifacts"
CHANGELOG_FILE: "/tmp/CHANGELOG"
PROJECTBASEDIR: "/project" # REMOVE_ME: Fixes https://github.com/SonarSource/sonarcloud-github-action/pull/58
options: --user docker
volumes:
- /mnt:/project # HACK: Use /mnt partition since bigger than others. This prevents to run out of space
steps:
- name: Run debug commands - post
run: |
cd /
echo "--- Disk available ----"
df -h
- name: Fix permissions in docker image
if: matrix.cfg.skip == false
run: |
sudo chown -R docker:docker /github/home /home/docker /project
- name: "Fetch code"
if: matrix.cfg.skip == false
run: |
cd /project
if [[ $GITHUB_REF_TYPE == "tag" ]]; then
export TAG="${GITHUB_REF#refs/tags/}"
echo "Fetching code from tag $TAG"
else
export BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}"
echo "Fetching code from branch $BRANCH"
fi
if git clone --depth 1 --branch "${TAG:-$BRANCH}" "$GIT_REPO"; then
echo "Code fetched successfully."
else
echo "Failed to fetch code. Check the repository and settings."
exit 1
fi
ls /home/docker
- name: "Set version"
if: matrix.cfg.skip == false
run: |
cd ${PROJECT_DIR}
export CIRCLE_TAG="${GITHUB_REF#refs/*/}"
if [[ $GITHUB_REF_TYPE == "branch" ]]; then
echo "Nothing to do. Not a release. Branch detected: ${CIRCLE_TAG}"
else
TAG=$(echo ${CIRCLE_TAG} | sed 's/^[^.]*\.//')
MAJOR_VER=$(echo "${TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\1/')
MINOR_VER=$(echo "${TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\2/')
sed -i "s/SERIALNO=.*/SERIALNO=${MAJOR_VER}/g" release/src-rt/version.conf
sed -i "s/EXTENDNO=.*/EXTENDNO=${MINOR_VER}/g" release/src-rt/version.conf
echo "Release detected. Updating version.conf with MAJOR_VER=${MAJOR_VER} and MINOR_VER=${MINOR_VER}"
fi
- name: Generate changelog
if: matrix.cfg.skip == false
run: |
cd ${PROJECT_DIR}
python tools/get-last-notes.py > "${CHANGELOG_FILE}"
cat "${CHANGELOG_FILE}"
- name: "Build"
if: matrix.cfg.skip == false
run: |
echo "----- Space available -----"
df -h
echo "----- I am: $(id) -----"
cd ${PROJECT_DIR}/release/${SDK}
echo "----- Files in dir: $(pwd) -----"
ls -alh
echo "----- Setting toolchains for ${SDK} -----"
if [[ ${SDK} == "src-rt-5.04axhnd.675x" ]]; then
source /home/docker/envs/bcm-hnd-ax-4.19.sh
elif [[ ${SDK} == "src-rt-5.02axhnd.675x" ]]; then
source /home/docker/envs/bcm-hnd.sh
elif [[ ${SDK} == "src-rt-5.02axhnd" ]]; then
source /home/docker/envs/bcm-hnd.sh
elif [[ ${SDK} == "src-rt-5.04behnd.4916" ]]; then
source /home/docker/envs/bcm-hnd-ax-4.19be_soft.sh
else
echo "SDK not supported"
exit -1
fi
echo "----- hack-ish fix ---------"
sudo ln -sf /home/docker/am-toolchains/brcm-arm-hnd /opt/toolchains
echo "----- Check envs dir ---------"
ls -alh /home/docker/envs/
echo "----- Debugging env vars -----"
env
echo "------ Setting UI as $UI ---------"
if [[ ${UI} == "tuf" ]]; then
echo "Enabling TUF UI"
sed -i 's/TUF_UI=n/TUF_UI=y/' ${PROJECT_DIR}/release/src-rt/target.mak
fi
echo "----- BUILD ${MODEL}-----"
make "${MODEL}"
# #### Just for testing ####
# mkdir -p "${PROJECT_DIR}/release/${SDK}/image/"
# echo "TEST" > "${PROJECT_DIR}/release/${SDK}/image/${MODEL}_${UI}_puresqubi.w"
- name: "Prepare artifacts"
if: matrix.cfg.skip == false
run: |
mkdir -p "${ARTIFACTS_DIR}"
export IMAGE_PATH=${PROJECT_DIR}/release/${SDK}/image/
echo "Removing images with boot loader."
rm -rf ${IMAGE_PATH}/*cferom*
files=("${IMAGE_PATH}"/*squashfs.pkgtb "${IMAGE_PATH}"/*.w)
if [ ${#files[@]} -gt 0 ]; then
for f in "${files[@]}"; do
if [ -f "$f" ] && [ "${f##*.}" != "md5" ]; then
echo "Creating MD5 signature for $f"
md5sum "$f" > "$f.md5"
echo "Copying image $f to workspace"
cp "$f" "${ARTIFACTS_DIR}"
cp "$f.md5" "${ARTIFACTS_DIR}"
fi
done
else
echo "No *.squashfs.pkgtb or *.w files found in ${IMAGE_PATH}"
fi
# Changelogs are the same for each models since we are building from the same branch. We do use only the one generated by DSL-AX82U for now.
if [[ ${MODEL} == "dsl-ax82u" ]]; then
cp "${CHANGELOG_FILE}" "${ARTIFACTS_DIR}"
fi
- name: "Archive artifacts"
if: matrix.cfg.skip == false
uses: actions/upload-artifact@v2
with:
name: release-${{ matrix.cfg.model }}-${{ matrix.cfg.ui }}
path: "/project/artifacts"
release-job:
name: Publish
needs: build-job
runs-on: ubuntu-latest
if: startsWith(github.event.ref, 'refs/tags/')
steps:
- name: Download packages
uses: actions/download-artifact@v2
- name: Get release version
run: |
echo "version=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "prerelease=$( [[ ${GITHUB_REF#refs/*/} == *alpha* || ${GITHUB_REF#refs/*/} == *beta* ]] && echo True || echo False )" >> $GITHUB_ENV
- name: Publish archives and packages
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.version }}
body_path: /home/runner/work/asuswrt-merlin.ng/asuswrt-merlin.ng/release-dsl-ax82u-default/CHANGELOG
draft: true
prerelease: ${{ env.prerelease }}
files: /home/runner/work/asuswrt-merlin.ng/asuswrt-merlin.ng/release*/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


manifest-job:
name: Publish Manifest
needs: build-job
runs-on: ubuntu-latest
if: startsWith(github.event.ref, 'refs/tags/') && !contains(github.event.ref, 'alpha') && !contains(github.event.ref, 'beta')
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Setup git config
run: |
# setup the username and email. I tend to use 'GitHub Actions Bot' with no email by default
git config --global user.email "[email protected]"
git config --global user.name "Circle CI BOT"
git config --global push.default simple
- name: Download packages
uses: actions/download-artifact@v2
- name: "Publish Manifest"
env:
UPDATE_DIR: "updates"
CHANGELOG_FILE: "release-dsl-ax82u-default/CHANGELOG"
run: |
export CIRCLE_TAG="${GITHUB_REF#refs/*/}"
MAJOR_VER=$(echo "${CIRCLE_TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\1/')
MINOR_VER=$(echo "${CIRCLE_TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\2/')
RELEASE_NOTE_FILE=$(echo "${MAJOR_VER}_${MINOR_VER}_note.txt" | sed "s/\./_/")
echo "Generating manifest file..."
echo "DSL-AX82U#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX82U#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX82U_V2#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX5400#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "TUF-AX5400#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "TUF-AX3000#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "TUF-AX3000_V2#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX95Q#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AXE95Q#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX5400#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
echo "RT-AX58U_V2#FW${MAJOR_VER}#EXT${MINOR_VER}" >> ${UPDATE_DIR}/manifest2.txt
cp ${CHANGELOG_FILE} ${UPDATE_DIR}/"${RELEASE_NOTE_FILE}"
echo "Uploading to github manifest and ${RELEASE_NOTE_FILE}"
git add ${UPDATE_DIR}
git commit -m "Updating Notes and manifest to version:${MAJOR_VER} ${MINOR_VER} [SKIP_CI]" -a
git push origin
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
all:

install:

dynamic:

clean:


Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
LIB = libarcher.so

default: conditional_build


CURR_DIR := $(shell pwd)
BUILD_DIR:=$(HND_SRC)
include $(BUILD_DIR)/make.common

ifneq ($(strip $(BUILD_ARCHERCTL)),)
conditional_build: all
else
conditional_build:
@echo "Skipping $(LIB)"
endif

ARCH=$(PROFILE_ARCH)
LIB_INSTALL_DIR := $(BCM_FSBUILD_DIR)/private/lib
ALLOWED_INCLUDE_PATHS := -I.\
-I$(BUILD_DIR)/userspace/public/include \
-I$(HND_SRC)/userspace/private/include \
-I$(SHARED_DIR)/opensource/include/bcm963xx \
-I$(SHARED_DIR)/private/include/$(OALDIR) \
-I$(INC_BRCMDRIVER_PRIV_PATH)/$(BRCM_BOARD) \
-I$(INC_BRCMDRIVER_PUB_PATH)/$(BRCM_BOARD)



export ARCH CFLAGS LIB_INSTALL_DIR CFLAGS DESKTOP_LINUX BRCM_RELEASETAG

# Final location of LIB for system image. Only the BRCM build system needs to
# know about this.
FINAL_LIB_INSTALL_DIR := $(INSTALL_DIR)/lib$(BCM_INSTALL_SUFFIX_DIR)

all:
mkdir -p $(INSTALL_DIR)/lib/private/
mkdir -p objs
$(MAKE) -C objs -f ../Makefile install
mkdir -p $(FINAL_LIB_INSTALL_DIR)
cp -p $(LIB_INSTALL_DIR)/$(LIB)* $(FINAL_LIB_INSTALL_DIR)

clean:
rm -f $(FINAL_LIB_INSTALL_DIR)/$(LIB)*
-mkdir -p objs
-$(MAKE) -C objs -f ../Makefile clean
rm -rf objs

CONSUMER_RELEASE_BINARYONLY_PREPARE: binaryonly_prepare

binaryonly_prepare:
mkdir -p objs
-$(MAKE) -C objs -f ../Makefile binaryonly_prepare


shell:
bash -i

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

# Set VPATH because we want to compile in a seperate dir than source.
name := $(lastword $(MAKEFILE_LIST))
mdir := $(realpath $(dir $(name)))
VPATH=$(mdir)


LIB = libarcher.so

SAVED = $(LIB)_$(ARCH).shipped

OBJS = archer_api.o

BRCM_RELEASETAG ?= "unknown"
CFLAGS += -Werror -Wfatal-errors -DBRCM_RELEASETAG=\"$(BRCM_RELEASETAG)\" -I$(HND_SRC)/userspace/private/include -Wno-stringop-truncation

$(LIB) :

# from Bcmbuild.mk
LIB_INSTALL_DIR := $(BCM_FSBUILD_DIR)/private/lib

install: $(LIB)
mkdir -p $(LIB_INSTALL_DIR)
install -p -t $(LIB_INSTALL_DIR) $(LIB)
mkdir -p $(INSTALLDIR)/lib
install -p -m 755 -t $(INSTALLDIR)/lib $(LIB)

clean:
rm -f *.o *.d $(LIB)
rm -f $(LIB_INSTALL_DIR)/$(LIB)
rm -f $(INSTALLDIR)/lib/$(LIB)

ifneq ($(wildcard $(mdir)/*.c),)

$(LIB): $(OBJS)
$(CC) -shared $(BCM_LD_FLAGS) -Wl,--whole-archive,-soname,$(notdir $@) -o $@ $(OBJS) -Wl,--no-whole-archive

else

ifneq ($(wildcard prebuilt/libarcher.so),)
$(LIB):
cp prebuilt/libarcher.so libarcher.so
else
$(LIB): $(SAVED)
cat $< > $@
endif

endif

binaryonly_prepare:
-cp $(LIB) $(mdir)/$(SAVED)
-$(MAKE) -f $(name) clean
rm -rf $(mdir)/*.c $(mdir)/*.h


# Generate and use dependencies.
CFLAGS += -MD
-include $(OBJS:%.o=%.d)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Binary file not shown.
Loading

0 comments on commit 439e3ea

Please sign in to comment.