# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
gbs-build-p4-aarch64:
- runs-on: [ code-linux, code-default ]
+ runs-on: [ code-extra-default ]
container:
image: actions-docker.bart.sec.samsung.net/gbs
options: --user root --privileged
command: login
global_options: '-p ${{ secrets.P4PORT }} -u ${{ secrets.P4USER }}'
- # pull down codes (VD TrackRenderer DEV) from VD P4
+ # pull down codes (Build Config) from VD P4
# note that if P4USER is changed, new VD P4 workspace should be created before running this workflow.
# If the location of TrackRenderer DEV is changed, the P4 workspace should be updated too.
- - name: p4 sync TrackRenderer
+ - name: p4 sync build conf
uses: code-actions/perforce-setup-p4@v1
env:
P4CLIENT: DEV-TZTV-GithubAction-${{ secrets.P4USER }}
with:
command: sync
- arguments: -f
+ arguments: |
+ -f \
+ //SHARED/[FMS_BuildConf_Prj]/[INT]/[MAIN]/[ONEPROD_Prj]/...#head
- # VD TrackRenderer DEV is built first for the ESPP repository build, to avoid compile error due to header dependency.
- - name: Build TrackRenderer
+ # Set environmental variables which will be used for the next run steps.
+ - name: Set Env Variables
run: |
- cd /tmp/p4ws/TIZEN/ONEMAIN/DEV/PLATFORM/MMP_PPI_SRCN/PPI/capi-trackrenderer-tv
- wget http://168.219.244.109/tools/vbs/archive/0.25.2/Ubuntu_20.04/vbs-0.25.2.deb
- sudo dpkg -i vbs-0.25.2.deb
- export BASE_TIZEN_VER=$(echo ${{ secrets.BASE_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=5)
- export BASE_TIZEN_REL_VER=$(echo ${{ secrets.BASE_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=7)
- echo "base info: [$BASE_TIZEN_VER][$BASE_TIZEN_REL_VER]"
- export PROD_YEAR=$(echo ${{ secrets.PROD_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=7)
- export PROD_BRANCH=$(echo ${{ secrets.PROD_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=8)
- export PROD_CHIP=$(echo ${{ secrets.PROD_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=9)
- export PROD_REL_VER=$(echo ${{ secrets.PROD_REPO_URL_AARCH64 }} | cut --delimiter='/' --fields=10)
- echo "prod info: [$PROD_YEAR][$PROD_BRANCH][$PROD_CHIP][$PROD_REL_VER]"
- vbs build -A aarch64 -R ${{ secrets.BASE_REPO_URL_AARCH64 }} -R ${{ secrets.PROD_REPO_URL_AARCH64 }} -D /tmp/p4ws/buildconf/TV/TIZEN_OscarP64_build.conf --include-all --skip-p4check --clean
+ export BASE_REPO_URL=${{ secrets.BASE_REPO_URL_AARCH64 }}
+ export PROD_REPO_URL=${{ secrets.PROD_REPO_URL_AARCH64 }}
+ export BASE_TIZEN_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=5)
+ export BASE_TIZEN_REL_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_YEAR=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_BRANCH=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=8)
+ export PROD_CHIP=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=9)
+ export PROD_REL_VER=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=10)
+ export DATE=$(date +'%Y-%m-%d')
+ echo "BASE_REPO_URL=$BASE_REPO_URL" >> "$GITHUB_ENV"
+ echo "PROD_REPO_URL=$PROD_REPO_URL" >> "$GITHUB_ENV"
+ echo "BASE_TIZEN_VER=$BASE_TIZEN_VER" >> "$GITHUB_ENV"
+ if [ $BASE_TIZEN_REL_VER = 'latest' ]; then
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER" >> "$GITHUB_ENV"
+ fi
+ echo "PROD_YEAR=$PROD_YEAR" >> "$GITHUB_ENV"
+ echo "PROD_BRANCH=$PROD_BRANCH" >> "$GITHUB_ENV"
+ echo "PROD_CHIP=$PROD_CHIP" >> "$GITHUB_ENV"
+ if [ $PROD_REL_VER = 'latest' ]; then
+ echo "PROD_REL_VER=$PROD_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "PROD_REL_VER=$PROD_REL_VER" >> "$GITHUB_ENV"
+ fi
+ export DATE_OF_LATEST=$(date +'%m%d')
+ export GBS_ROOT_CACHE_KEY_BASE=$BASE_TIZEN_VER-$BASE_TIZEN_REL_VER-$PROD_YEAR-$PROD_BRANCH-$PROD_CHIP-$PROD_REL_VER
+ if [ $BASE_TIZEN_REL_VER = 'latest' ] || [ $PROD_REL_VER = 'latest' ]; then
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE-$DATE_OF_LATEST" >> "$GITHUB_ENV"
+ else
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE" >> "$GITHUB_ENV"
+ fi
+
+ # Sometimes binfmt setting is invalid and it causes build error, so reset the setting before building.
+ - name: Reset binfmt_misc
+ run: |
+ ls -al /proc/sys/fs/binfmt_misc
+ if [ -z "$(ls -A /proc/sys/fs/binfmt_misc)" ]; then
+ echo "binfmt_misc is empty: disable and re-enable binfmt service"
+ sudo /usr/sbin/update-binfmts --disable
+ sudo systemctl disable binfmt-support.service
+ sudo systemctl enable binfmt-support.service
+ sudo /usr/sbin/update-binfmts --enable
+ else
+ echo "binfmt_misc is not empty: just reset binfmt settings"
+ fi
+ sudo sh -c "echo -1 > /proc/sys/fs/binfmt_misc/status"
+ echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ echo ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ ls -al /proc/sys/fs/binfmt_misc
+ cat /proc/sys/fs/binfmt_misc/aarch64
+
+ # When cache with the key exists, the cache is restored at this step. So no need of clean build.
+ - name: Caching GBS-ROOT
+ id: cache-gbs-root
+ uses: code-actions/cache@v3
+ with:
+ path: ~/GBS-ROOT
+ key: ${{ env.GBS_ROOT_CACHE_KEY }}
+
+ # When there is no cache, create the download path.
+ - name: Create Directory for Artifact
+ if: steps.cache-gbs-root.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/GBS-ROOT/local/repos/tizen/aarch64/RPMS
+
+ # Download TrackRenderer RPM from workflow artifact storage.
+ - name: Download TrackRenderer RPM
+ uses: code-actions/dawidd6-action-download-artifact@v2
+ with:
+ workflow: tr-build.yml
+ workflow_conclusion: success
+ name: trackrenderer-rpm-aarch64
+ path: ~/GBS-ROOT/local/repos/tizen/aarch64/RPMS
+ check_artifacts: true
+ search_artifacts: true
+ if_no_artifact_found: ignore
# Finally, build this repository's ESPP code. No need of --clean option, we reuse previously built GBS-ROOT for speed-up
- name: Build ESPP
run: |
- cd -
- gbs build -A aarch64 -R ${{ secrets.BASE_REPO_URL_AARCH64 }} -R ${{ secrets.PROD_REPO_URL_AARCH64 }} -D /tmp/p4ws/buildconf/TV/TIZEN_OscarP64_build.conf --include-all
+ gbs build -A aarch64 -R ${{ env.BASE_REPO_URL }} -R ${{ env.PROD_REPO_URL }} \
+ -D /tmp/p4ws/buildconf/TV/TIZEN_${{ env.PROD_CHIP }}_build.conf \
+ --include-all
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
gbs-build-p4-i586:
- runs-on: [ code-linux, code-default ]
+ runs-on: [ code-extra-default ]
container:
image: actions-docker.bart.sec.samsung.net/gbs
options: --user root --privileged
command: login
global_options: '-p ${{ secrets.P4PORT }} -u ${{ secrets.P4USER }}'
- # pull down codes (VD TrackRenderer DEV) from VD P4
+ # pull down codes (Build Config) from VD P4
# note that if P4USER is changed, new VD P4 workspace should be created before running this workflow.
# If the location of TrackRenderer DEV is changed, the P4 workspace should be updated too.
- - name: p4 sync TrackRenderer
+ - name: p4 sync build conf
uses: code-actions/perforce-setup-p4@v1
env:
P4CLIENT: DEV-TZTV-GithubAction-${{ secrets.P4USER }}
with:
command: sync
- arguments: -f
+ arguments: |
+ -f \
+ //SHARED/[FMS_BuildConf_Prj]/[INT]/[MAIN]/[ONEPROD_Prj]/...#head
- # VD TrackRenderer DEV is built first for the ESPP repository build, to avoid compile error due to header dependency.
- - name: Build TrackRenderer
+ # Set environmental variables which will be used for the next run steps.
+ - name: Set Env Variables
run: |
- cd /tmp/p4ws/TIZEN/ONEMAIN/DEV/PLATFORM/MMP_PPI_SRCN/PPI/capi-trackrenderer-tv
- wget http://168.219.244.109/tools/vbs/archive/0.25.2/Ubuntu_20.04/vbs-0.25.2.deb
- sudo dpkg -i vbs-0.25.2.deb
- export BASE_TIZEN_VER=$(echo ${{ secrets.BASE_REPO_URL_I586 }} | cut --delimiter='/' --fields=5)
- export BASE_TIZEN_REL_VER=$(echo ${{ secrets.BASE_REPO_URL_I586 }} | cut --delimiter='/' --fields=7)
- echo "base info: [$BASE_TIZEN_VER][$BASE_TIZEN_REL_VER]"
- export PROD_YEAR=$(echo ${{ secrets.PROD_REPO_URL_I586 }} | cut --delimiter='/' --fields=7)
- export PROD_BRANCH=$(echo ${{ secrets.PROD_REPO_URL_I586 }} | cut --delimiter='/' --fields=8)
- export PROD_CHIP=$(echo ${{ secrets.PROD_REPO_URL_I586 }} | cut --delimiter='/' --fields=9)
- export PROD_REL_VER=$(echo ${{ secrets.PROD_REPO_URL_I586 }} | cut --delimiter='/' --fields=10)
- echo "prod info: [$PROD_YEAR][$PROD_BRANCH][$PROD_CHIP][$PROD_REL_VER]"
- vbs build -A i586 -R ${{ secrets.BASE_REPO_URL_I586 }} -R ${{ secrets.PROD_REPO_URL_I586 }} -D /tmp/p4ws/buildconf/TV/TIZEN_emulator32_build.conf --include-all --skip-p4check --clean
+ export BASE_REPO_URL=${{ secrets.BASE_REPO_URL_I586 }}
+ export PROD_REPO_URL=${{ secrets.PROD_REPO_URL_I586 }}
+ export BASE_TIZEN_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=5)
+ export BASE_TIZEN_REL_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_YEAR=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_BRANCH=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=8)
+ export PROD_CHIP=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=9)
+ export PROD_REL_VER=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=10)
+ export DATE=$(date +'%Y-%m-%d')
+ echo "BASE_REPO_URL=$BASE_REPO_URL" >> "$GITHUB_ENV"
+ echo "PROD_REPO_URL=$PROD_REPO_URL" >> "$GITHUB_ENV"
+ echo "BASE_TIZEN_VER=$BASE_TIZEN_VER" >> "$GITHUB_ENV"
+ if [ $BASE_TIZEN_REL_VER = 'latest' ]; then
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER" >> "$GITHUB_ENV"
+ fi
+ echo "PROD_YEAR=$PROD_YEAR" >> "$GITHUB_ENV"
+ echo "PROD_BRANCH=$PROD_BRANCH" >> "$GITHUB_ENV"
+ echo "PROD_CHIP=$PROD_CHIP" >> "$GITHUB_ENV"
+ if [ $PROD_REL_VER = 'latest' ]; then
+ echo "PROD_REL_VER=$PROD_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "PROD_REL_VER=$PROD_REL_VER" >> "$GITHUB_ENV"
+ fi
+
+ export DATE_OF_LATEST=$(date +'%m%d')
+ export GBS_ROOT_CACHE_KEY_BASE=$BASE_TIZEN_VER-$BASE_TIZEN_REL_VER-$PROD_YEAR-$PROD_BRANCH-$PROD_CHIP-$PROD_REL_VER
+ if [ $BASE_TIZEN_REL_VER = 'latest' ] || [ $PROD_REL_VER = 'latest' ]; then
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE-$DATE_OF_LATEST" >> "$GITHUB_ENV"
+ else
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE" >> "$GITHUB_ENV"
+ fi
+
+ # Sometimes binfmt setting is invalid and it causes build error, so reset the setting before building.
+ - name: Reset binfmt_misc
+ run: |
+ ls -al /proc/sys/fs/binfmt_misc
+ if [ -z "$(ls -A /proc/sys/fs/binfmt_misc)" ]; then
+ echo "binfmt_misc is empty: disable and re-enable binfmt service"
+ sudo /usr/sbin/update-binfmts --disable
+ sudo systemctl disable binfmt-support.service
+ sudo systemctl enable binfmt-support.service
+ sudo /usr/sbin/update-binfmts --enable
+ else
+ echo "binfmt_misc is not empty: just reset binfmt settings"
+ fi
+ sudo sh -c "echo -1 > /proc/sys/fs/binfmt_misc/status"
+ echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ echo ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ ls -al /proc/sys/fs/binfmt_misc
+ echo "emulator build"
+
+ # When cache with the key exists, the cache is restored at this step. So no need of clean build.
+ - name: Caching GBS-ROOT
+ id: cache-gbs-root
+ uses: code-actions/cache@v3
+ with:
+ path: ~/GBS-ROOT
+ key: ${{ env.GBS_ROOT_CACHE_KEY }}
+
+ # When there is no cache, create the download path.
+ - name: Create Directory for Artifact
+ if: steps.cache-gbs-root.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/GBS-ROOT/local/repos/tizen/i586/RPMS
+
+ # Download TrackRenderer RPM from workflow artifact storage.
+ - name: Download TrackRenderer RPM
+ uses: code-actions/dawidd6-action-download-artifact@v2
+ with:
+ workflow: tr-build.yml
+ workflow_conclusion: success
+ name: trackrenderer-rpm-i586
+ path: ~/GBS-ROOT/local/repos/tizen/i586/RPMS
+ check_artifacts: true
+ search_artifacts: true
+ if_no_artifact_found: ignore
# Finally, build this repository's ESPP code. No need of --clean option, we reuse previously built GBS-ROOT for speed-up
- name: Build ESPP
run: |
- cd -
- gbs build -A i586 -R ${{ secrets.BASE_REPO_URL_I586 }} -R ${{ secrets.PROD_REPO_URL_I586 }} -D /tmp/p4ws/buildconf/TV/TIZEN_emulator32_build.conf --include-all
+ gbs build -A i586 -R ${{ env.BASE_REPO_URL }} -R ${{ env.PROD_REPO_URL }} \
+ -D /tmp/p4ws/buildconf/TV/TIZEN_${{ env.PROD_CHIP }}_build.conf \
+ --include-all
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
gbs-build-p4:
- runs-on: [ code-linux, code-default ]
+ runs-on: [ code-extra-default ]
container:
image: actions-docker.bart.sec.samsung.net/gbs
options: --user root --privileged
command: login
global_options: '-p ${{ secrets.P4PORT }} -u ${{ secrets.P4USER }}'
- # pull down codes (VD TrackRenderer DEV) from VD P4
+ # pull down codes (Build Config) from VD P4
# note that if P4USER is changed, new VD P4 workspace should be created before running this workflow.
# If the location of TrackRenderer DEV is changed, the P4 workspace should be updated too.
- - name: p4 sync TrackRenderer
+ - name: p4 sync build conf
uses: code-actions/perforce-setup-p4@v1
env:
P4CLIENT: DEV-TZTV-GithubAction-${{ secrets.P4USER }}
with:
command: sync
- arguments: -f
+ arguments: |
+ -f \
+ //SHARED/[FMS_BuildConf_Prj]/[INT]/[MAIN]/[ONEPROD_Prj]/...#head
- # VD TrackRenderer DEV is built first for the ESPP repository build, to avoid compile error due to header dependency.
- - name: Build TrackRenderer
+ # Set environmental variables which will be used for the next run steps.
+ - name: Set Env Variables
run: |
- cd /tmp/p4ws/TIZEN/ONEMAIN/DEV/PLATFORM/MMP_PPI_SRCN/PPI/capi-trackrenderer-tv
- wget http://168.219.244.109/tools/vbs/archive/0.25.2/Ubuntu_20.04/vbs-0.25.2.deb
- sudo dpkg -i vbs-0.25.2.deb
- export BASE_TIZEN_VER=$(echo ${{ secrets.BASE_REPO_URL }} | cut --delimiter='/' --fields=5)
- export BASE_TIZEN_REL_VER=$(echo ${{ secrets.BASE_REPO_URL }} | cut --delimiter='/' --fields=7)
- echo "base info: [$BASE_TIZEN_VER][$BASE_TIZEN_REL_VER]"
- export PROD_YEAR=$(echo ${{ secrets.PROD_REPO_URL }} | cut --delimiter='/' --fields=7)
- export PROD_BRANCH=$(echo ${{ secrets.PROD_REPO_URL }} | cut --delimiter='/' --fields=8)
- export PROD_CHIP=$(echo ${{ secrets.PROD_REPO_URL }} | cut --delimiter='/' --fields=9)
- export PROD_REL_VER=$(echo ${{ secrets.PROD_REPO_URL }} | cut --delimiter='/' --fields=10)
- echo "prod info: [$PROD_YEAR][$PROD_BRANCH][$PROD_CHIP][$PROD_REL_VER]"
- vbs build -A armv7l -R ${{ secrets.BASE_REPO_URL }} -R ${{ secrets.PROD_REPO_URL }} -D /tmp/p4ws/buildconf/TV/TIZEN_PontusM_build.conf --include-all --skip-p4check --clean
+ export BASE_REPO_URL=${{ secrets.BASE_REPO_URL }}
+ export PROD_REPO_URL=${{ secrets.PROD_REPO_URL }}
+ export BASE_TIZEN_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=5)
+ export BASE_TIZEN_REL_VER=$(echo $BASE_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_YEAR=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=7)
+ export PROD_BRANCH=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=8)
+ export PROD_CHIP=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=9)
+ export PROD_REL_VER=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=10)
+ export DATE=$(date +'%Y-%m-%d')
+ echo "BASE_REPO_URL=$BASE_REPO_URL" >> "$GITHUB_ENV"
+ echo "PROD_REPO_URL=$PROD_REPO_URL" >> "$GITHUB_ENV"
+ echo "BASE_TIZEN_VER=$BASE_TIZEN_VER" >> "$GITHUB_ENV"
+ if [ $BASE_TIZEN_REL_VER = 'latest' ]; then
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "BASE_TIZEN_REL_VER=$BASE_TIZEN_REL_VER" >> "$GITHUB_ENV"
+ fi
+ echo "PROD_YEAR=$PROD_YEAR" >> "$GITHUB_ENV"
+ echo "PROD_BRANCH=$PROD_BRANCH" >> "$GITHUB_ENV"
+ echo "PROD_CHIP=$PROD_CHIP" >> "$GITHUB_ENV"
+ if [ $PROD_REL_VER = 'latest' ]; then
+ echo "PROD_REL_VER=$PROD_REL_VER ($DATE)" >> "$GITHUB_ENV"
+ else
+ echo "PROD_REL_VER=$PROD_REL_VER" >> "$GITHUB_ENV"
+ fi
+ export DATE_OF_LATEST=$(date +'%m%d')
+ export GBS_ROOT_CACHE_KEY_BASE=$BASE_TIZEN_VER-$BASE_TIZEN_REL_VER-$PROD_YEAR-$PROD_BRANCH-$PROD_CHIP-$PROD_REL_VER
+ if [ $BASE_TIZEN_REL_VER = 'latest' ] || [ $PROD_REL_VER = 'latest' ]; then
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE-$DATE_OF_LATEST" >> "$GITHUB_ENV"
+ else
+ echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE" >> "$GITHUB_ENV"
+ fi
+
+ # Sometimes binfmt setting is invalid and it causes build error, so reset the setting before building.
+ - name: Reset binfmt_misc
+ run: |
+ ls -al /proc/sys/fs/binfmt_misc
+ if [ -z "$(ls -A /proc/sys/fs/binfmt_misc)" ]; then
+ echo "binfmt_misc is empty: disable and re-enable binfmt service"
+ sudo /usr/sbin/update-binfmts --disable
+ sudo systemctl disable binfmt-support.service
+ sudo systemctl enable binfmt-support.service
+ sudo /usr/sbin/update-binfmts --enable
+ else
+ echo "binfmt_misc is not empty: just reset binfmt settings"
+ fi
+ sudo sh -c "echo -1 > /proc/sys/fs/binfmt_misc/status"
+ echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ echo ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ ls -al /proc/sys/fs/binfmt_misc
+ cat /proc/sys/fs/binfmt_misc/arm
+
+ # When cache with the key exists, the cache is restored at this step. So no need of clean build.
+ - name: Caching GBS-ROOT
+ id: cache-gbs-root
+ uses: code-actions/cache@v3
+ with:
+ path: ~/GBS-ROOT
+ key: ${{ env.GBS_ROOT_CACHE_KEY }}
+
+ # When there is no cache, create the download path.
+ - name: Create Directory for Artifact
+ if: steps.cache-gbs-root.outputs.cache-hit != 'true'
+ run: |
+ mkdir -p ~/GBS-ROOT/local/repos/tizen/armv7l/RPMS
+
+ # Download TrackRenderer RPM from workflow artifact storage.
+ - name: Download TrackRenderer RPM
+ uses: code-actions/dawidd6-action-download-artifact@v2
+ with:
+ workflow: tr-build.yml
+ workflow_conclusion: success
+ name: trackrenderer-rpm-armv7l
+ path: ~/GBS-ROOT/local/repos/tizen/armv7l/RPMS
+ check_artifacts: true
+ search_artifacts: true
+ if_no_artifact_found: ignore
# Finally, build this repository's ESPP code. No need of --clean option, we reuse previously built GBS-ROOT for speed-up
- name: Build ESPP
run: |
- cd -
- gbs build -A armv7l -R ${{ secrets.BASE_REPO_URL }} -R ${{ secrets.PROD_REPO_URL }} -D /tmp/p4ws/buildconf/TV/TIZEN_PontusM_build.conf --include-all
+ gbs build -A armv7l -R ${{ env.BASE_REPO_URL }} -R ${{ env.PROD_REPO_URL }} \
+ -D /tmp/p4ws/buildconf/TV/TIZEN_${{ env.PROD_CHIP }}_build.conf \
+ --include-all
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
tr-build:
- runs-on: [ code-linux, code-default ]
+ runs-on: [ code-extra-default ]
container:
image: actions-docker.bart.sec.samsung.net/gbs
options: --user root --privileged
command: login
global_options: '-p ${{ secrets.P4PORT }} -u ${{ secrets.P4USER }}'
- # pull down codes (VD TrackRenderer DEV) from VD P4
- # note that if P4USER is changed, new VD P4 workspace should be created before running this workflow.
+ # Pull down codes (VD TrackRenderer DEV) from VD P4
+ # Note that if P4USER is changed, new VD P4 workspace should be created before running this workflow.
# If the location of TrackRenderer DEV is changed, the P4 workspace should be updated too.
- name: p4 sync TrackRenderer
uses: code-actions/perforce-setup-p4@v1
//TIZEN/[MAIN]/[ONEPROD_Prj]/[DEV]/[PLATFORM]/[MMP_PPI_SRCN]/PPI/capi-trackrenderer-tv/...#head \
//SHARED/[FMS_BuildConf_Prj]/[INT]/[MAIN]/[ONEPROD_Prj]/...#head
+ # Set environmental variables which will be used for the next run steps.
- name: Set Env Variables
run: |
if [ ${{ inputs.build_arch }} = 'armv7l' ]; then
export PROD_BRANCH=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=8)
export PROD_CHIP=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=9)
export PROD_REL_VER=$(echo $PROD_REPO_URL | cut --delimiter='/' --fields=10)
-
export DATE=$(date +'%Y-%m-%d')
echo "BASE_REPO_URL=$BASE_REPO_URL" >> "$GITHUB_ENV"
echo "PROD_REPO_URL=$PROD_REPO_URL" >> "$GITHUB_ENV"
echo "GBS_ROOT_CACHE_KEY=$GBS_ROOT_CACHE_KEY_BASE" >> "$GITHUB_ENV"
fi
+ # Sometimes binfmt setting is invalid and it causes build error, so reset the setting before building.
+ - name: Reset binfmt_misc
+ run: |
+ ls -al /proc/sys/fs/binfmt_misc
+ if [ -z "$(ls -A /proc/sys/fs/binfmt_misc)" ]; then
+ echo "binfmt_misc is empty: disable and re-enable binfmt service"
+ sudo /usr/sbin/update-binfmts --disable
+ sudo systemctl disable binfmt-support.service
+ sudo systemctl enable binfmt-support.service
+ sudo /usr/sbin/update-binfmts --enable
+ else
+ echo "binfmt_misc is not empty: just reset binfmt settings"
+ fi
+ sudo sh -c "echo -1 > /proc/sys/fs/binfmt_misc/status"
+ echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ echo ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-binfmt:P' | sudo tee /proc/sys/fs/binfmt_misc/register
+ ls -al /proc/sys/fs/binfmt_misc
+ if [ ${{ inputs.build_arch }} = 'armv7l' ]; then
+ cat /proc/sys/fs/binfmt_misc/arm
+ elif [ ${{ inputs.build_arch }} = 'aarch64' ]; then
+ cat /proc/sys/fs/binfmt_misc/aarch64
+ else
+ echo "emulator build"
+ fi
+
+ # When cache with the key exists, the cache is restored at this step. So no need of clean build.
- name: Caching GBS-ROOT
uses: code-actions/cache@v3
with:
path: ~/GBS-ROOT
key: ${{ env.GBS_ROOT_CACHE_KEY }}
- # VD TrackRenderer DEV is built first for the ESPP repository build, to avoid compile error due to header dependency.
+ # Build VD TrackRenderer from P4 DEV
- name: Build TrackRenderer
run: |
cd /tmp/p4ws/TIZEN/ONEMAIN/DEV/PLATFORM/MMP_PPI_SRCN/PPI/capi-trackrenderer-tv
-D /tmp/p4ws/buildconf/TV/TIZEN_${{ env.PROD_CHIP }}_build.conf \
--include-all --skip-p4check
- # Upload the created RPM on Github workflow artifact storage. It will be used by other workflows.
+ # Upload the created TrackRenderer RPM on Github workflow artifact storage. It will be used by ESPP build.
- name: Upload TrackRenderer RPM
uses: code-actions/upload-artifact@v3
with: