Lattice Diamond on Ubuntu 18.04 アップデート

事前準備

アップデートスクリプトcp_packがcshを使用するため、cshをインストールしておきます。

 sudo apt-get install csh

作業フォルダとしてlattice_diamond_patchディレクトリを作成します。 diamond_3_10-base_x64-111-2-x86_64-linux.rpmをインストールしたフォルダ/usr/local/diamondをlattice_diamond_patchディレクトリにコピーし、ファイル属性はすべてユーザーに変更しておきます。

rpmパッケージの入手

Lattice Diamond のSoftware Update Centerでdiamond_3_10-sp3_x64-144-3-x86_64-linux.rpmをlattice_diamond_patchディレクトリにダウンロードします。

rpmパッケージの解凍

lattice_diamond_patchディレクトリで、次のコマンドを実行してファイルの内容を抽出します。

rpm2cpio *.rpm | cpio -idmv

ディレクトリ構成がlattice_diamond_patch/usr/local/diamond/spとなるように、抽出したフォルダをコピーします。 次に、RPMからインストール後のスクリプトレットが必要になります。

rpm -qp --scripts *.rpm > scripts.txt

このコマンドはすべてのスクリプトレットを出力します。 scripts.txtファイルをテキストエディタを開いて、postinstallセクションの内容をpostin.shというファイルに貼り付けます。

if [ -e /usr/local/diamond/3.10_x64/sp/cp_pack ]
then
    /usr/local/diamond/3.10_x64/sp/cp_pack 3.10 "" /usr/local
    rm -r -f /usr/local/diamond/3.10_x64/sp
fi
export temp=`rpm -ql diamond_3_10-base_x64 | head -1`
export temp1=`echo $temp | cut -f1 -d' '`
if [ "$temp" == "$temp1" ]
then
    export dir=`basename $temp`
    while [ $dir != "diamond" ]
    do
        export dir=$temp
        export temp=`dirname $dir`
        export dir=`basename $temp`
    done
    export TARGET=`dirname $temp`
else
    export TARGET=$RPM_INSTALL_PREFIX
fi
if [ $TARGET != /usr/local ]
then
    rm -r -f /usr/local/diamond/3.10_x64/bin
    rm -r -f /usr/local/diamond/3.10_x64/cae_library
    rm -r -f /usr/local/diamond/3.10_x64/data
    rm -r -f /usr/local/diamond/3.10_x64/docs
    rm -r -f /usr/local/diamond/3.10_x64/embedded_source
    rm -r -f /usr/local/diamond/3.10_x64/examples
    rm -r -f /usr/local/diamond/3.10_x64/ispfpga
    rm -r -f /usr/local/diamond/3.10_x64/module
    rm -r -f /usr/local/diamond/3.10_x64/synpbase
    rm -r -f /usr/local/diamond/3.10_x64/tcltk
    if [ -d /usr/local/diamond/3.10_x64 ]
    then
        rmdir --ignore-fail-on-non-empty /usr/local/diamond/3.10_x64
    fi
fi
if [ -e ${TARGET}/diamond/3.10_x64/sp/cp_pack ]
then
    ${TARGET}/diamond/3.10_x64/sp/cp_pack 3.10 "" ${TARGET}
    rm -r -f ${TARGET}/diamond/3.10_x64/sp
fi

postin.sh の /usr/local/の前に$PWDを追加し、rpm -ql diamond_3_10-base_x64 をrpm -ql diamond_3_10-base_x64.*.rpmに変更します。

if [ -e $PWD/usr/local/diamond/3.10_x64/sp/cp_pack ]
then
    $PWD/usr/local/diamond/3.10_x64/sp/cp_pack 3.10 "" $PWD/usr/local
    rm -r -f $PWD/usr/local/diamond/3.10_x64/sp
fi
export temp=`rpm -ql diamond_3_10-base_x64*.rpm | head -1`
export temp1=`echo $temp | cut -f1 -d' '`
if [ "$temp" == "$temp1" ]
then
export dir=`basename $temp`
while [ $dir != "diamond" ]
do
    export dir=$temp
    export temp=`dirname $dir`
    export dir=`basename $temp`
done
export TARGET=`dirname $temp`
else
export TARGET=$RPM_INSTALL_PREFIX
fi
if [ $TARGET != /usr/local ]
then
    rm -r -f $PWD/usr/local/diamond/3.10_x64/bin
    rm -r -f $PWD/usr/local/diamond/3.10_x64/cae_library
    rm -r -f $PWD/usr/local/diamond/3.10_x64/data
    rm -r -f $PWD/usr/local/diamond/3.10_x64/docs
    rm -r -f $PWD/usr/local/diamond/3.10_x64/embedded_source
    rm -r -f $PWD/usr/local/diamond/3.10_x64/examples
    rm -r -f $PWD/usr/local/diamond/3.10_x64/ispfpga
    rm -r -f $PWD/usr/local/diamond/3.10_x64/module
    rm -r -f $PWD/usr/local/diamond/3.10_x64/synpbase
    rm -r -f $PWD/usr/local/diamond/3.10_x64/tcltk
    if [ -d $PWD/usr/local/diamond/3.10_x64 ]
    then
        rmdir --ignore-fail-on-non-empty $PWD/usr/local/diamond/3.10_x64
    fi
fi
if [ -e ${TARGET}/diamond/3.10_x64/sp/cp_pack ]
then
    ${TARGET}/diamond/3.10_x64/sp/cp_pack 3.10 "" ${TARGET}
    rm -r -f ${TARGET}/diamond/3.10_x64/sp
fi

それが終わったら、ファイルを実行可能にして実行します。

chmod +x postin.sh
./postin.sh

インストール

それでは、ファイルを正しい場所にコピーしてください。

sudo cp -Rva --no-preserve=ownership ./usr/local/diamond /usr/local/

中間ステップ用に作成したlattice_diamondディレクトリは、インストールが完了したら削除できます。

Lattice Diamondの実行ファイルは以下になります。

/usr/local/diamond/3.10_x64/bin/lin64/diamond