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