CloudStackをWindowsでビルドしてみる cygwinなので諦めた Eclipseでコンパイルできれば良いか - shidax/docs GitHub Wiki

はじめに

これは CloudStack Advent Calendar 2014 12/20日のエントリです。

CloudStackに関して完全に素人ですので、コードを入手してビルドするところから始めます。これは 12/7のエントリで @giraffeforestg さんがビルドを実施されているので、自分はWindowsでビルドしてみます。

Cygwinのインストール

CloudStackの開発環境をWindowsで構築する を参考に構築していきます。

まずはcygwinのインストールで、この時以下を入れろとのことです。

  • git
  • vim or emacs
  • libsasl2
  • ca-certificates
  • openssh
  • python
  • genisoimage
  • mkisofs

...

...

んーーー cygwinか、、cygwinか、、、どうだろう

なので、今回は

CloudStackの開発環境をWindowsで構築する を参考にせずに構築します。

CloudStackのコードをEclipseで入手

久しぶりに最新のEclipseをダウンロード

http://www.eclipse.org/downloads/

Eclipse IDE for Java Developer Luna SR1

最近のEclipseはどうも最初からGit対応しているんですね。知らなかった。Maven対応も最初から入ってますが、Maven-EGitのプラグインを入れておきます。

Git PerspectiveでCloudStackのソースをCloneします。 Clone先はgithubのミラーにしてみました。

こんな感じ

リポジトリ設定

Mavenプロジェクトとしてインポート

Maven-EGitのプラグインが入っていいるとGitのコードツリー上からPOMファイルを見つけて、Mavenプロジェクトとしてインポートすることができます。こんな感じです。

右クリック

インポートウィザード

あとはとりあえず全選択してインポート実行。自分の環境は1時間位かかった結果、Eclipseが異常終了しました。安定のOOMですね。

また、インポート後に

Plugin execution not covered by lifecycle configuration:

というのが頻発しまして、ほとんどビルド通らなかったので cloudstackプロジェクト配下のpomに

            <pluginExecution>
            	<pluginExecutionFilter>
            		<groupId>org.apache.maven.plugins</groupId>
            		<artifactId>maven-checkstyle-plugin</artifactId>
            		<versionRange>[2.11,)</versionRange>
            		<goals>
            			<goal>check</goal>
            		</goals>
            	</pluginExecutionFilter>
            	<action>
            		<ignore></ignore>
            	</action>
            </pluginExecution>

これをpomに追加しました。EclipseのQuickFixで出来ます。

CloudStackプロジェクト群を見てみる

ひとまず、出来たプロジェクトと、コンパイルが通っているものと取っていないものを整理してみます。

  • cloud-apidoc : 非Javaプロジェクト : APIドキュメント
  • cloud-devcloud : 非Javaプロジェクト : 各devcloudを包含するプロジェクト
  • cloud-devcloud-kvm : 非Javaプロジェクト : なんだかPythonコードとか入っている。
  • cloud-developer : 非Javaプロジェクト : データ投入のSQLが入っている
  • cloud-engine : 非Javaプロジェクト : 各cloud-engineを包含するプロジェクト
  • cloud-marvin : 非Javaプロジェクト : Pythonコードの山。 marvin ?
  • cloud-maven-standard : 非Javaプロジェクト : POMしかない
  • cloud-systemvm : 非Javaプロジェクト : 設定ファイルとシェル、HTML等のUIコンポーネント。systemvmなのに??
  • cloud-tools : 非Javaプロジェクト : ツール群。これはなんとなくわかる
  • cloudstack : 非Javaプロジェクト : ルートプロジェクト
  • cloudstack-framework : 非Javaプロジェクト : 各フレームワークコンポーネントをまとめるプロジェクト
  • cloudstack-plugins : 非Javaプロジェクト : 各プラグインをまとめるプロジェクト
  • cloudstack-service-console-proxy : 非Javaプロジェクト : 各コンソールプロキシをまとめるプロジェクト
  • cloudstack-service-secondary-storage : 非Javaプロジェクト : 各セカンダリーストレージをまとめるプロジェクト
  • cloudstack-services : 非Javaプロジェクト : コンソールプロキシ、IAM、セカンダリーストレージをまとめるプロジェクト
  • checkstyle : Javaプロジェクト : CheckStyleやPMDの設定ファイルとPOM
  • cloud-agent : Javaプロジェクト : コンパイル成功
  • cloud-api : Javaプロジェクト : コンパイル成功。SpringとGsonかな
  • cloud-awsapi : Javaプロジェクト : コンパイル成功
  • cloud-client-ui : Javaプロジェクト : コンパイル成功。Webサーバの設定ファイルがある
  • cloud-console-proxy : Javaプロジェクト : コンパイル成功。RDPとVNCみたいなのは見えた
  • cloud-controller-secondary-storage : Javaプロジェクト : コンパイル成功
  • cloud-core : Javaプロジェクト : コンパイル成功
  • cloud-engine-api : Javaプロジェクト : コンパイル成功
  • cloud-engine-components-api : Javaプロジェクト : コンパイル成功
  • cloud-engine-network : Javaプロジェクト : コンパイル成功
  • cloud-engine-orchestration : Javaプロジェクト : コンパイル成功
  • cloud-engine-schema : Javaプロジェクト : コンパイル成功
  • cloud-engine-service : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage-cache : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage-datamotion : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage-image : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage-integration-test : Javaプロジェクト : コンパイル失敗。vmware-vimというライブラリが取得できず
  • cloud-engine-storage-snapshot : Javaプロジェクト : コンパイル成功
  • cloud-engine-storage-volume : Javaプロジェクト : コンパイル成功
  • cloud-framework-cluster : Javaプロジェクト : コンパイル成功
  • cloud-framework-config : Javaプロジェクト : コンパイル成功
  • cloud-framework-db : Javaプロジェクト : コンパイル成功
  • cloud-framework-events : Javaプロジェクト : コンパイル成功
  • cloud-framework-ipc : Javaプロジェクト : コンパイル成功
  • cloud-framework-jobs : Javaプロジェクト : コンパイル成功
  • cloud-framework-managed-context : Javaプロジェクト : コンパイル成功
  • cloud-framework-rest : Javaプロジェクト : コンパイル成功
  • cloud-framework-security : Javaプロジェクト : コンパイル成功
  • cloud-framework-spring-lifecycle : Javaプロジェクト : コンパイル成功
  • cloud-framework-spring-module : Javaプロジェクト : コンパイル成功
  • cloud-mom-inmemory : Javaプロジェクト : コンパイル成功
  • cloud-mom-rabbitmq : Javaプロジェクト : コンパイル成功
  • cloud-plugin-acl-static-role-based : Javaプロジェクト : コンパイル成功
  • cloud-plugin-api-discovery : Javaプロジェクト : コンパイル成功
  • cloud-plugin-api-limit-account-based : Javaプロジェクト : コンパイル成功
  • cloud-plugin-api-solidfire-intg-test : Javaプロジェクト : コンパイル成功
  • cloud-plugin-database-mysqlha : Javaプロジェクト : コンパイル成功
  • cloud-plugin-dedicated-resources : Javaプロジェクト : コンパイル成功
  • cloud-plugin-example-dns-notifier : Javaプロジェクト : コンパイル成功
  • cloud-plugin-explicit-dedication : Javaプロジェクト : コンパイル成功
  • cloud-plugin-host-allocator-random : Javaプロジェクト : コンパイル成功
  • cloud-plugin-host-anti-affinity : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-baremetal : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-hyperv : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-kvm : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-ovm : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-simulator : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-ucs : Javaプロジェクト : コンパイル成功
  • cloud-plugin-hypervisor-vmware : Javaプロジェクト : コンパイル失敗。これもライブラリ取得失敗
  • cloud-plugin-hypervisor-xenserver : Javaプロジェクト : コンパイル成功
  • cloud-plugin-netapp : Javaプロジェクト : コンパイル失敗。manageontabライブラリが取れず
  • cloud-plugin-network-cisco-vnmc : Javaプロジェクト : コンパイル失敗。vmwareライブラリ取得失敗
  • cloud-plugin-network-contrail : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-elb : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-f5 : Javaプロジェクト : コンパイル失敗。F5のicontrolライブラリが取れず
  • cloud-plugin-network-globodns : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-internallb : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-midonet : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-netscaler : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-nvp : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-opendaylight : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-ovs : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-palo-alto : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-srx : Javaプロジェクト : コンパイル失敗。F5のicontrolライブラリが取れず
  • cloud-plugin-network-ssp : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-vcs : Javaプロジェクト : コンパイル失敗。JAXBのコード生成失敗?
  • cloud-plugin-network-vns : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-vsp : Javaプロジェクト : コンパイル成功
  • cloud-plugin-network-vxlan : Javaプロジェクト : コンパイル成功
  • cloud-plugin-planner-implicit-dedication : Javaプロジェクト : コンパイル成功
  • cloud-plugin-planner-skip-heurestics : Javaプロジェクト : コンパイル成功
  • cloud-plugin-planner-user-concentrated-pod : Javaプロジェクト : コンパイル成功
  • cloud-plugin-planner-user-dispersing : Javaプロジェクト : コンパイル成功
  • cloud-plugin-snmp-alerts : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-allocator-random : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-image-default : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-image-s3 : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-image-sample : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-image-swift : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-volume-cloudbyte : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-volume-default : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-volume-nexenta : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-volume-sample : Javaプロジェクト : コンパイル成功
  • cloud-plugin-storage-volume-solidfire : Javaプロジェクト : コンパイル成功
  • cloud-plugin-syslog-alerts : Javaプロジェクト : コンパイル成功
  • cloud-plugin-user-authenticator-ldap : Javaプロジェクト : コンパイル成功
  • cloud-plugin-user-authenticator-md5 : Javaプロジェクト : コンパイル成功
  • cloud-plugin-user-authenticator-plaintext : Javaプロジェクト : コンパイル成功
  • cloud-plugin-user-authenticator-saml2 : Javaプロジェクト : コンパイル成功
  • cloud-plugin-user-authenticator-sha256salted : Javaプロジェクト : コンパイル成功
  • cloud-quickcloud : 非Javaプロジェクト : Springの設定ファイルが一つだけ
  • cloud-secondary-storage : Javaプロジェクト : コンパイル成功
  • cloud-server : Javaプロジェクト : コンパイル成功。これがメインのプロジェクトですかね
  • cloud-testclient : 非Javaプロジェクト : Selenuimのテストケースとか
  • cloud-usage : Javaプロジェクト : コンパイル成功
  • cloud-utils : Javaプロジェクト : コンパイル成功
  • cloud-vmware-base : Javaプロジェクト : コンパイル失敗。vmwareライブラリ取得失敗
  • cloudstack-service-console-proxy-rdpclient : Javaプロジェクト : コンパイル成功
  • Wix-cloudstack-maven-plugin : Mavenプラグインプロジェクト

すんげー多いですね、プロジェクトが

ひとまずコンパイル失敗しているのは主にVMware周りだけですね。思ったよりスンナリ行きました。

プロジェクト構成から窺い知るCloudStackアーキテクチャ

どうも大きく分けると以下があるみたいですね

  • Core
  • Agent
  • Server
  • API
  • Engine
  • Framework
  • Plugin

んー、Agent、Engineあたりがちょっとイメージ出来ないですね。

と、今日も時間切れ。ひとまずWindows上のEclipseでコンパイルするところまでは出来ました。

⚠️ **GitHub.com Fallback** ⚠️