Numer wersji Quartus® II Tcl Get Subversion

author-image

Według

W tym przykładowym skrypcie pokazano, w jaki sposób możesz uzyskać dostęp do numeru wersji oprogramowania kontrolnego wersji twojego projektu. Numer wersji można napisać w pliku projektowym skompilowanym w twoim projekcie FPGA. Dzięki dodatkowej logice projektowej numer wersji może zostać zgłoszony przez FPGA. Informacje te mogą być bardzo przydatne podczas debugowania, zwłaszcza jeśli przełączasz się między wieloma plikami programowania. Możesz z łatwością dowiedzieć się, która wersja projektu działa na FPGA, na podstawie numeru wersji na FPGA.

W tym przykładzie użyto numeru wersji subwersji dla Twojego projektu. Wykorzystuje polecenie svn info, aby uzyskać informacje o określonym pliku. Polecenie svn info drukuje informacje o elementach w Kopii roboczej i zawiera linię z numerem wersji w następującym formularzu:

Wersja: numer <oddziału>

W tym przykładzie zastosowano dwie procedury, aby uruchomić polecenie svn info i analizować dane wyjściowe, aby uzyskać numer wersji. Procedura get_subversion_revision uruchamia polecenie informacji svn. Wezwij procedurę o nazwie pliku do użycia z poleceniem svn info. Procedura zwraca się z błędem, jeśli polecenie nie może zostać uruchomione. W innym przypadku procedura nie zwraca żadnego zwrotu, lecz ustawia pewne zmienne globalne. Jeśli limit czasu polecenia svn info, wartość wykonanej zmiennej globalnej wynosi -1. Jeśli znaleziono numer wersji, wartość wykonanej zmiennej globalnej wynosi 1, a numer wersji znajduje się w revision_number zmiennej globalnej. Numer wersji można wyświetlić w wiadomości, tak jak w tym przykładzie, lub zapisać go w pliku projektowym.

Procedura get_version_info jest procedurą pomocniczą, która analizuje polecenie wyjściowe wiersza na raz. Zawiera wyrażenie regularne odpowiadające wierszowi numeru wersji i wyodrębnia numer wersji.

proc get_subversion_revision { file_name } {

    global done

    # Maksymalna liczba sekund na oczekiwanie na info svn
    # polecenie ukończenia
    zestawu timeout_seconds 30

    # Polecenie informacji svn z nazwy pliku, który jest
    uruchomiony, ustawić cmd "svn info ${file_name}"

    # Próba uzyskania informacji o wersji.
    # Jeśli polecenia nie można uruchomić, zwróć błąd.
    # W przeciwnym razie skonfiguruj zdarzenie pliku w celu przetworzenia danych wyjściowych poleceń.
    if { [catch {open "|$cmd"} input] } {
        return -code error $input
    } else {

        fileevent $input readable [list get_revision_info $input ]

        # Skonfiguruj limit czasu, aby proces nie mógł się zawiesić, jeśli
        repozytorium # jest wyładowane.
        ustaw limit czasu [po [ expr { $timeout_seconds * 1000 } ] \
            [zestaw listy wykonany -1] ]

        # Nie kontynuuj, dopóki nie zostanie znaleziony numer wersji,
        liczba lub limit czasu operacji. I tak anuluj limit czasu.
        aktualizacja wykonywana
        po anulowaniu $timeout } } get_revision_info proc {

inp } { globalne

    revision_number, jeśli { [eof $inp] } {
        catch {close $inp}
        set done 1 }
    elseif { $done } { gets
        $inp line } else { gets $inp line # Użyj wyrażenia
        regularnego, aby dopasować linię do
        numeru
        wersji # if { [regexp {^Revision:\s+(\d+)\s*$} $line match revision_number] } {
            set done 1
        } } set done

0 set revision_number
"" # Nazwa pliku jest

zazwyczaj plikiem projektu.
  
  


Zestaw .qpf
file_name [lindex $quartus(args) 0],

jeśli { [catch { get_subversion_revision $file_name } msg] } {
    post_message —type critical_warning "Nie uruchamiaj polecenia, aby uzyskać
        numer wersji\ $msg" }
inaczej {

    jeśli { -1 == $done } {
        post_message -wpisz critical_warning "Limit czasu uzyskiwania numeru wersji."
    } elseif { [string equal "" $revision_number] } {
        post_message $msg critical_warning —typem critical_warning
            \ "Nie można znaleźć numeru wersji w danych wyjściowych informacji svn $file_name."
    } jeszcze { post_message
        "Wersja dla $file_name to $revision_number"
    }
}

Skrypt można uruchomić w wierszu poleceń systemowych za pomocą następującego polecenia (przy założeniu, że skrypt znajduje się w pliku o nazwie svn_revision.tcl):

quartus_sh -t svn_revision.tcl myproject.qpf

Skrypt generuje taki komunikat, aby wyświetlić tę wersję:

Informacje: wersja dla myproject.qpf to 417

Możesz wyświetlić wiadomość z numerem wersji w globalnej zmiennej revision_number, tak jak w tym przykładzie, lub zapisać ją w pliku projektowym.

Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.