Skip to content

test

test #58

Workflow file for this run

#==========================================================================
# Copyright 2024 IHP PDK Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# SPDX-License-Identifier: Apache-2.0
#==========================================================================
#==========================================================================
# Name Regex:
# FMD_QNC_.*\.gds
#
# Supported file formats:
# - .gds
# - .zip
# - .gz (Archive may only contain one gds file)
#==========================================================================
name: DRC
on:
push:
pull_request:
branches: [ main]
workflow_dispatch:
inputs:
files:
description: 'Enter a comma-separated list of files'
required: true
default: 'file1.txt,file2.txt'
jobs:
# copy_repo:
# runs-on: ubuntu-22.04
# steps:
# - name: Get all files
# uses: actions/checkout@master
# - name: list
# run: ls
# install_Klayout:
# needs: copy_repo
# runs-on: ubuntu-22.04
# steps:
# - name: Get all files
# uses: actions/checkout@master
# - name: apt update
# run: sudo apt update -qq -y
# - name: Installing Klayout
# run: sudo dpkg -i ${{ github.workspace }}/drc/klayout_0.29.6-1_amd64.deb || true
# - name: apt install
# run: sudo apt install -f -y
# - name: check installation
# run: klayout -v
install-klayout:
runs-on: ubuntu-22.04
outputs:
klayout-installed: ${{ steps.verify.outputs.success }}
steps:
- name: Get all files
uses: actions/checkout@master
- name: Install KLayout
run: |
sudo apt-get update
# sudo apt-get install -y ./klayout_0.29.6-1_amd64.deb
sudo dpkg -i ${{ github.workspace }}/drc/klayout_0.29.6-1_amd64.deb || true
sudo apt install -f -y
- name: Verify Installation
id: verify
run: |
which klayout
mkdir -p custom-bin
cp /usr/bin/klayout custom-bin/
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: usr-bin-custom
path: custom-bin
process-with-klayout:
needs: install-klayout
runs-on: ubuntu-22.04
steps:
- name: Archive code coverage results
uses: actions/download-artifact@v4
with:
name: usr-bin-custom
- name: Restore Custom Binaries to /usr/bin
run: |
ls
sudo ./klayout
sudo cp * /usr/bin/
cd /usr/bin/
ls
- name: testList
run: |
ls
sudo klayout -v
# - name: Run KLayout task
# run: |
# echo "Running KLayout processing task..."
# # Beispiel-Befehl für KLayout
# klayout -v
# test_Klayout:
# needs: install_Klayout
# runs-on: ubuntu-22.04
# steps:
# - name: check installation
# run: klayout -v
# jobs:
# drc:
# runs-on: ubuntu-latest
# steps:
# - name: Get all files
# uses: actions/checkout@master
# - name: Get changed files Push
# if: github.event_name == 'push'
# id: get-changed-files-Push
# run: |
# git fetch origin ${{ github.event.before }}
# changed_files=$(git diff --diff-filter=ACMRT --name-only ${{ github.event.before }} ${{ github.sha }})
# files_json=$(echo "$changed_files" | jq -R -s -c 'split("\n") | map(select(length > 0))')
# echo $files_json
# echo "files=$files_json" >> $GITHUB_OUTPUT
# shell: bash
# - name: Get changed files Pull
# if: github.event_name == 'pull_request'
# id: get-changed-files-Pull
# run: |
# git fetch origin ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
# changed_files=$(git diff --diff-filter=ACMRT --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
# files_json=$(echo "$changed_files" | jq -R -s -c 'split("\n") | map(select(length > 0))')
# echo $files_json
# echo "files=$files_json" >> $GITHUB_OUTPUT
# shell: bash
# - name: Use manually input
# if: github.event_name == 'workflow_dispatch'
# id: manual-files
# run: |
# files_input="${{ github.event.inputs.files }}"
# files_json=$(echo "$files_input" | jq -R -s -c 'split(",") | map(select(length > 0))')
# echo $files_json
# echo "files=$files_json" >> $GITHUB_OUTPUT
# shell: bash
# - name: Installing p7zip
# run: |
# sudo apt-get install p7zip-full
# - name: drc
# run: |
# klayout -v;
# files=${{ steps.get-changed-files-pull.outputs.files || steps.get-changed-files-push.outputs.files || steps.manual-files.outputs.files }}
# mkdir ${{ github.workspace }}/drc/Results
# result=true;
# Zips=0
# # Function to convert a Gitlab action list into an array
# function listToArray() {
# local input_string="$1"
# # 1. Remove the brackets and quotation marks
# cleaned_input=$(echo "$input_string" | sed 's/\[//g' | sed 's/\]//g' | sed 's/"//g')
# # 2. Remove the commas and put spaces instead
# cleaned_input=$(echo "$cleaned_input" | sed 's/,/ /g')
# # 3. Remove the \n and put spaces instead
# cleaned_input=$(echo "$cleaned_input" | sed 's/\\n/ /g')
# # 3. Optional: Entferne Leerzeichen am Anfang und Ende, sowie den "\n"
# # cleaned_input=$(echo "$cleaned_input" | tr -d '\n')
# clean_array=($cleaned_input)
# echo "${clean_array[@]}"
# }
# function RunDRC() {
# command_output=$(mktemp)
# klayout -b -r ${{ github.workspace }}/drc/drc.lydrc -rd "in_gds"="$1" -rd "report_file"="$2" | tee "$command_output"
# OUTPUT=$(cat "$command_output")
# re="Number of DRC errors: [0-9]+"
# if [[ $OUTPUT =~ $re ]]; then
# NumberRe="[0-9]+"
# if [[ $BASH_REMATCH =~ $NumberRe ]]; then
# if (($BASH_REMATCH == 0))
# then
# echo "DRC pass";
# else
# echo "DRC fail";
# result=false;
# fi
# else
# echo "DRC fail";
# result=false;
# fi
# else
# echo "DRC fail";
# result=false;
# fi
# }
# file_array=($(listToArray "$files"))
# for file in "${file_array[@]}"; do
# echo "Processing file: $file"
# FileRe="\.gds"
# if [[ $file =~ $FileRe ]]; then
# ZipRe="\.zip"
# GDSRe="\.gds$"
# GDSGZRe="\.gds.gz$"
# if [[ $file =~ $ZipRe ]]; then
# ZIP_FILE="${{ github.workspace }}/${file}"
# # Target directory for unpacking
# EXTRACT_DIR="${ZIP_FILE%/*}/Folder$Zips"
# # Check whether the ZIP file exists
# if [[ ! -f "$ZIP_FILE" ]]; then
# echo "ZIP-Datei nicht gefunden: $ZIP_FILE"
# exit 1
# fi
# 7z x "$ZIP_FILE" -o"$EXTRACT_DIR"
# file_extension=gds
# file_array=($(find "$EXTRACT_DIR" -type f -iname "*$file_extension"))
# echo "Files found:"
# for ZipContentFile in "${file_array[@]}"; do
# echo "$ZipContentFile"
# echo "Run DRC for $ZipContentFile";
# path=$ZipContentFile;
# resultpath=${{ github.workspace }}/drc/Results/${ZipContentFile//[\/.]/_}.lyrdb;
# RunDRC ${path} ${resultpath}
# done
# Zips=$((Zips + 1))
# elif [[ $file =~ $GDSRe ]]; then
# echo "Run DRC for $file";
# path=${{ github.workspace }}/${file};
# resultpath=${{ github.workspace }}/drc/Results/${file//[\/.]/_}.lyrdb;
# RunDRC ${path} ${resultpath}
# elif [[ $file =~ $GDSGZRe ]]; then
# echo "Run DRC for $file";
# path=${{ github.workspace }}/${file};
# resultpath=${{ github.workspace }}/drc/Results/${file//[\/.]/_}.lyrdb;
# RunDRC ${path} ${resultpath}
# fi
# fi
# done
# if [[ $result == false ]]
# then
# exit 130
# fi
# shell: bash
# - name: Archive DRC Results
# uses: actions/upload-artifact@v4
# if: always()
# with:
# name: DRC-Results
# path: ${{ github.workspace }}/drc/Results