2018年2月25日日曜日

[haskell] stack install cryptoniteがno such instruction: `rdrand %r8'エラーで失敗する問題の対処方法

手許の環境(mac)で、cryptoniteライブラリのビルドがエラーになる問題が発生したが、ネットの情報を元に解決できたので、その症状と手順をblogに残しておく。


エラーの症状:

stack install cryptoniteで以下のようなエラーが発生。
% stack install cryptonite
--  While building custom Setup.hs for package cryptonite-0.24 using:
      /Users/xxx/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_2.0.1.0_ghc-8.2.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-2.0.1.0 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
    Process exited with code: ExitFailure 1
    Logs have been written to: /Users/kurokawa/.stack/script/lts-10.4/.stack-work/logs/cryptonite-0.24.log

    Configuring cryptonite-0.24...
    Preprocessing library for cryptonite-0.24..
    Building library for cryptonite-0.24..
    [  1 of 120] Compiling Crypto.Cipher.DES.Primitive ( Crypto/Cipher/DES/Primitive.hs, .stack-work/dist/x86_64-osx/Cabal-2.0.1.0/build/Crypto/Cipher/DES/Primitive.o )

... snip ...

    [120 of 120] Compiling Crypto.Tutorial  ( Crypto/Tutorial.hs, .stack-work/dist/x86_64-osx/Cabal-2.0.1.0/build/Crypto/Tutorial.o )
    
    /private/var/folders/3f/7fg601f92_33t43jhn2p0v0w0000gn/T/stack47334/cryptonite-0.24/cbits/cryptonite_rdrand.c:89:0: error:
        no such instruction: `rdrand %r8'
       |
    89 |         asm volatile ("rdrand %0; setc %1" : "=r" (*buffer), "=qm" (err));
       | ^
    
    /private/var/folders/3f/7fg601f92_33t43jhn2p0v0w0000gn/T/stack47334/cryptonite-0.24/cbits/cryptonite_rdrand.c:89:0: error:
        no such instruction: `rdrand %r8'
       |
    89 |         asm volatile ("rdrand %0; setc %1" : "=r" (*buffer), "=qm" (err));
       | ^
    
    /private/var/folders/3f/7fg601f92_33t43jhn2p0v0w0000gn/T/stack47334/cryptonite-0.24/cbits/cryptonite_rdrand.c:89:0: error:
        no such instruction: `rdrand %r8'
       |
    89 |         asm volatile ("rdrand %0; setc %1" : "=r" (*buffer), "=qm" (err));
       | ^
    `gcc' failed in phase `Assembler'. (Exit code: 1)



原因:

ビルド環境のbinutil (or gcc)でrdrandインストラクションがサポートされていないと、このエラーが発生する。


解決方法:

cryptoniteのデフォルトはrdrandインストラクションを利用する設定になっているため、-support_rdrandを指定してrdrand利用コードを無効化する。
% stack install cryptonite --flag cryptonite:-support_rdrand
cryptonite-0.24: configure
cryptonite-0.24: build
cryptonite-0.24: copy/register
--flag cryptonite:-support_rdrandは、crptoniteパッケージのビルド処理において-support_rdrandフラグを適用することを意味する。
cabalをを利用 している環境では、以下の指定で同様の効果が得られるはず(未確認)。
% cabal configure --flag='-support_rdrand'
OR
% cabal install --constraint="cryptonite -support_rdrand"


参考:

2018年2月18日日曜日

[windows] Windows10セットアップ・設定項目のメモ

Windows10セットアップ時の設定項目、インストールアプリの備忘録。

スタートメニュー・タスクバーの設定

  • タスクバーの設定 
    • 小さいタスクバーボタンを使う:オン
    • [スタート]ボタンを右クリックするかWindowsキー+Xキーを押したときに表示されるメニューで、コマンドプロンプトをWindows PowerShellに置き換える:オフ
    • タスクバーボタンを結合する
      • 「タスクバーに入りきらない場合」を選択
    • タスクバーをすべての ディスプレイに表示する:オフ
    • システムアイコンのオン/オフの切り替え
      • 入力インジケーター: オフ
  •  Quick Launcherを表示する
  • スタートメニューにコントロールパネルを表示する
  • スタートメニューにピン止めするアプリ:
    • Windowsシステムツール
      • コントロールパネル
    • Windowsアクセサリ
      • ペイント
    • パワーポイント
    • エクセル
    • Acrobat Reader
    • VisualStudio
    • Astah

エクスプローラの設定

  • フォルダーオプション
    • 表示タブ
      • ナビゲーションウィンドウ
        • 開いているフォルダーまで展開にチェック
      • ファイルおよびフォルダー
        • タイトルバーに完全なパスを表示する :外す
          • タスクバーもすべてc:\xxxで始まり見分けがつかなくなる
        • ファイルとフォルダーの表示:「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択
        • フォルダーとデスクトップの項目の説明をポップアップで表示する:外す
        • フォルダーのヒントにファイルサイズ情報を表示する:外す
        • フォルダーの結合の競合を非表示にする:外す 
          • (移動・コピー時のマージ前の確認ダイアログ)参考
        • ログオン時に以前のフォルダーウィンドウを表示する:チェック
        • 暗号化や圧縮されたNTFSファイルをカラーで表示する:チェック
        • 空のドライブは表示しない:チェックを外す
        • 縮小版にファイルアイコンを利用する:チェックを外す
        • 常にアイコンを表示し、縮小版は表示しない:チェック
        • 登録されている拡張子は表示しない:チェックを外す
        • 別のプロセスでフォルダーウィンドウを開く:チェックを外す
        • 保護されたオペレーティングシステムファイルを表示しない:チェックを外す

デスクトップの設定

  • デスクトップ

ウィンドウズ設定(スタートメニュー→設定)

  • 更新とセキュリティ→Windows Update
    • アクティブ時間の変更
      • 8:00~2:00
    • 詳細オプション
      • Windowsの更新時に他のMicrosoft製品の更新プログラムも入手します:チェック
    • ※更新プログラムのインストールにおいて、自分で再起動の時刻を指定する(勝手に再起動されないようにする)
  • 個人用設定 
      • 透明効果:オフ
    • ロック画面
      • スクリーンセーバー設定
    • スタート
      • スタートにタイルを縮小して表示:オン
      • スタート画面またはタスクバーのジャンプリストに最近開いた項目を表示する:オン
  •  システム
    • マルチタスク
      • スナップ(Windows10 - スナップ機能のオン/オフ
        • ウィンドウを画面の横または隅にドラッグしたときに自動的に整列する:オフ
        • ※ウィンドウが画面の端に移動されたとき自動的に整列されないようにする
    • 電源とスリープ
      • 画面:1時間
      • スリープ:なし
  • デバイス

 コントロールパネルの設定

  • コンピューターの簡単操作
  • システム
    • システムの詳細設定 
      • 詳細設定タブ:以下のチェックを外す
        • アイコンの代わりに縮小版を表示する
        • ウィンドウを最大化や最小化するときにアニメーションで表示する
        • コンボボックスをスライドして開く
        • タスクバーでアニメーションを表示する
        • デスクトップのアイコン名に影をつける
        • ヒントをフェードまたはスライドで表示する
        • メニューをフェードまたはスライドして表示する
        • メニュー項目をクリック後にフェードアウトする
        • リストボックスを滑らかにスクロールする
        • 半透明の[選択]ツールを表示する
  • ハードウェアとサウンド
    • デバイスとプリンター
      • マウス
        •  ポインターオプションタブ
          • ポインターを自動的に規定のボタンの上に移動する:チェック
          • CTRLキーを押すとボタンの位置を表示する:アンチェック 
  • コントロール パネル\時計、言語、および地域
  • デバイス→入力→キーボードの詳細設定→言語バーのオプション
    • 言語
      • 詳細設定 
        • 既定の入力方式の上書き:ATOK
        • 入力言語の切り替えー言語バーのホットキーの変更
          • 「キーの詳細設定」 タブ
            • 言語バーのホットキーの変更
              • 入力言語を切り替える:(なし)へ
          • 「言語バー」タブ
            • 言語バー:タスクバーに固定する
              • ↑に設定しても、アクティブなアプリによって表示・非表示が切り替わることがある・・・
            • (対処方法)
              • 「タスクバーの設定→システムアイコンのオン/オフの切り替え」で「入力インジケーター」をoffにすることで、常時非表示になる
              • https://itojisan.xyz/trouble/12211/

その他




アプリケーションのインストール

  • FireFox
  • KeySwap
    • 以下の3項目の設定で幸せになれる。
      • 「caps lock」→「左ctrl(1D)」
      • 「変換」→「全角/半角(29)」
      • 「全角/半角」→「Esc(01)」
      • 「変換」 →「ひらがな(70)」
        • ※firefox上でjiraのコメント入力で「変換」を押下するとフォーカスを失ってしまうのでワークアラウンド・・・。 (ATOK参照)
    • ※ユーザーごとの設定はできない模様・・・。システム共通設定になります。
  • keyhac
  • ATOK(2017)
    • 環境設定
      •  入力補助
        • テンキーからの入力を必ず半角にする:チェック
        • キー操作でのカナロックON/OFFを無効とする:チェック
        • カナ入力時に自動的にカナロックを行う:アンチェック
        • スペースで入力する空白文字:半角
          • Sheft+スペース:スペースの逆
      • 表示
        • カーソル位置に入力モードを表示:しない
      • 半角全角変換
        • 入力中の文字に対しても有効にする:アンチェック
    • キーバインドの変更
      • 「変換」「無変換」「ひらがな」をATOKの起動・終了にバインド
    • ATOKイミクルの停止
  • TortoiseSVN
    • Settings
      • General
        • Context Menu
          • Checkout
          • Commit
          • Update to revision
          • Revert
  • powerpoint2016
    • 拡張ディスプレイでスライドを表示した再に発表者ビューをオフにする
    • オプション
      • 詳細設定
        • (編集オプション)
          • 文字列の選択時に、単語単位で選択する:チェックを外す
        • (切り取り、コピー、貼り付け)
          • スペースを自動的に削除または挿入する:チェックを外す
  • outlook2016/2013
    • ファイル ー オプション
      • 基本設定
        • ユーザー名
        • 頭文字
      • メール
        • <メッセージの作成>
        • メッセージ作成形式:テキスト
        • 編集オプション
          • オートコレクト
            • 文の先頭文字を大文字にする:外す
            • 表のセルの先頭文字を大文字にする:外す 
          • 入力オートフォーマット
            • 左右の区別がない引用符を、区別がある引用符に変更する:外す 
            • 序数(1st, 2nd, 3rd, ...)を上付き文字に変更する :外す
            • ハイフンをダッシュに変更する:外す
            • *, _で囲んだ文字列を太字、斜体に書式設定する:外す
            • 長音とダッシュを正しく使い分ける:外す
            • ------
            • 箇条書き(行頭文字&段落番号):外す
            • ------
            • Tab/Space/BackSpaceキーでインデントとタブの設定を変更する:外す
            • '記'などに対応する'以上'を挿入する:外す
            • 頭語に対応する結語を挿入する:外す
            • 参考)「入力オートフォーマット」は入力時の変換。「オートフォーマット」は入力後の一括変換機能。
        • 詳細設定
          • 切り取り、コピー、貼り付け
            • 貼り付け時に自動調整する:設定
              • 文と単語の感覚を自動的に調整する:外す
        •  署名
        • ひな形およびフォント
          • テキスト形式のメッセージの作成と読み込み:「MSゴシック」
        • <outlookウィンドウ>
        • 閲覧ウィンドウ
          • 次の時間ウィンドウで表示するとアイテムを開封済みにする:チェック
            • 0秒
          • 常にメッセージのプレビューを表示:チェック
            • (参考) https://pcclick.seesaa.net/article/467714241.html
        • <メッセージ受信>
          • マウスポインターを変更する:チェックを外す
        • <返信・転送>
          • 返信と転送を新しいウィンドウで開く:チェック
          • メッセージに返信するとき:元のメッセージの行頭にインデント記号を挿入する
        • <メッセージ送信>
          • 返信後、受信トレイの会議出席依頼と通知を自動的に削除する:外す
        • <メッセージ形式>
          • インターネットメールの受信者にリッチテキスト形式のメッセージを送信する際、以下の形式を使用する:テキスト形式に変換
          • 指定の文字数で自動的に文字列を折り返す: 132
        • <その他>
          • メッセージにアイテムを貼り付けるときに「貼り付けオプション」ボタンを表示する:外す
      • 検索 
        • 検索対象範囲
          • 「現在のフォルダー」にチェック
            • ※受信トレイのとき「現在のメールボックス」にならないようにする
    • ビューの設定
      • 「コンパクト」
        • 列の順序:「送信者」を「件名」の後ろにすると、メッセージ一覧で件名の方が大きいフォントで表示されるようになる
    • Outlook2013・2016でメール本文が表示されて見にくい場合の対処事例。Outlook2010以前のように差出人・件名の下に本文を表示させたくない。
  • DF
    • ファイル比較ソフト
  • Stirling
    • バイナリエディタ
  • 秀丸
  • Kindle for PC
    • インストール後「ネットワークに接続できません。ネットワークの設定とプロキシの構成を確認をしてください…」 というエラーが出る場合
      • 「ツール」-「オプション」-「コンテンツ」より「現在のコンテンツフォルダ」の場所を確認し、エクスプローラーからフォルダの中を空にするとよい
      •  VPN回線だとダメで、いったんVPNを切断してアプリを起動(amazonへ機器登録)すると接続でき、その後VPNにつないでもOKという情報あり。自分の環境でもドメインに接続した状態だと機器登録できなかったが、ドメインの外でインターネットにつなぐと機器登録できた。
  • Acrobat Reader
  • IObit Unlocker
  • ConEmu
    • Settings
      • Main - Task bar
        • Show overlay icon:  アンチェック
    • (iconの変更)
      • https://github.com/Maximus5/ConEmu/blob/master/PortableApps/App/AppInfo/appicon.ico
      • 上記ファイルをDLし、起動時に -icon オプションで icon ファイルを指定する
        •  "ConEmu.exe -icon appinfo.ico"


Q&A

  • PCのシャットダウン時にすべてのアプリを終了している状態にもかかわらず「起動中のアプリケーションがあります」 という警告が出る
    • Windows8以前の環境では問題なかったが、以下のアプリ をインストールしているのが原因だった。アンインストールしたところ、正常にシャットダウンできるようになった。