1 | # Copyright 1999-2009 Gentoo Foundation |
---|
2 | # Distributed under the terms of the GNU General Public License v2 |
---|
3 | # $Header: ... ebo Exp $ |
---|
4 | |
---|
5 | #inherit flag-o-matic subversion eutils |
---|
6 | inherit subversion |
---|
7 | |
---|
8 | DESCRIPTION="A Modelica modeling, compilation and simulation environment." |
---|
9 | HOMEPAGE="http://www.ida.liu.se/labs/pelab/modelica/OpenModelica.html" |
---|
10 | |
---|
11 | # the original package tarball disappeared, so build it from SVN source |
---|
12 | ESVN_REPO_URI="https://openmodelica.ida.liu.se/svn/OpenModelica/trunk" |
---|
13 | ESVN_OPTIONS=" --username anonymous --password none" |
---|
14 | S=${WORKDIR}/trunk |
---|
15 | |
---|
16 | |
---|
17 | LICENSE="OSMC" |
---|
18 | SLOT="0" |
---|
19 | KEYWORDS="~amd64 ~x86" |
---|
20 | IUSE="+corba doc threads fortran" |
---|
21 | |
---|
22 | DEPEND="sys-apps/sed |
---|
23 | sys-apps/coreutils |
---|
24 | sys-apps/findutils |
---|
25 | app-arch/tar |
---|
26 | media-libs/coin |
---|
27 | media-libs/SoQt" |
---|
28 | RDEPEND="dev-lang/rml |
---|
29 | =dev-java/antlr-2* |
---|
30 | sys-libs/readline |
---|
31 | threads? ( dev-libs/boost ) |
---|
32 | corba? ( >=net-misc/mico-2.3.12 |
---|
33 | =x11-libs/qt-4* |
---|
34 | >=virtual/jre-1.4 ) |
---|
35 | ${DEPEND}" |
---|
36 | |
---|
37 | pkg_setup() { |
---|
38 | export RMLHOME="${ROOT}usr" |
---|
39 | export ANTLRHOME="${ROOT}usr" |
---|
40 | export CLASSPATH="${ROOT}usr/share/antlr/lib/antlr.jar" |
---|
41 | |
---|
42 | # This package is very sensitive to parallelisation of the build |
---|
43 | # process. Do not do it and you will be safe. |
---|
44 | MAKEOPTS="${MAKEOPTS} -j1" |
---|
45 | } |
---|
46 | |
---|
47 | src_unpack() { |
---|
48 | subversion_src_unpack || die "subversion unpack failed" |
---|
49 | |
---|
50 | cd "${S}" |
---|
51 | chmod +x configure |
---|
52 | chmod +x Compiler/rml2sig/rmldep-new.sh |
---|
53 | |
---|
54 | # FIXME: |
---|
55 | #epatch "${FILESDIR}/${P}-build_fixes.patch" |
---|
56 | epatch "${FILESDIR}/OpenModelica-1.4.5-build_fixes.patch" |
---|
57 | |
---|
58 | # Convert DOS line endings to UNIX, or script will not work. |
---|
59 | sed -i -e "s|\r$||g" configure |
---|
60 | } |
---|
61 | |
---|
62 | src_compile() { |
---|
63 | econf \ |
---|
64 | --without-CORBA \ |
---|
65 | $(use_with corba CORBA) \ |
---|
66 | $(use_with threads MODPAR) \ |
---|
67 | $(use_with threads BOOST) \ |
---|
68 | || die "Configure failed." |
---|
69 | |
---|
70 | # Correct the documentation installation directory: the package |
---|
71 | # does not give a 'make doc' alternative, so we simply install it |
---|
72 | # into a folder that will be discarded if documentation is not |
---|
73 | # desired. |
---|
74 | if use doc ; then |
---|
75 | sed -i -r "s|^(INSTALL_DOCDIR.*)/omc/doc|\1/doc/${P}|" "${S}/Makefile" |
---|
76 | else |
---|
77 | sed -i -r "s|^(INSTALL_DOCDIR).*/omc/doc|\1 = ${T}/rubbish|" "${S}/Makefile" |
---|
78 | fi |
---|
79 | |
---|
80 | emake || die "Build of the OpenModelica Compiler failed." |
---|
81 | |
---|
82 | if use corba ; then |
---|
83 | cd "${S}/OMShell" |
---|
84 | qmake OMShell.pro || die "QMake could not be run on OMShell.pro." |
---|
85 | emake || die "Build of the OpenModelica GUI Shell failed." |
---|
86 | else |
---|
87 | ewarn "You deactivated CORBA support for OpenModelica. This means also" |
---|
88 | ewarn "that the Qt-based GUI will not be built." |
---|
89 | fi |
---|
90 | } |
---|
91 | |
---|
92 | src_install() { |
---|
93 | sed -i -r "s#^((lib|data)dir\s*=)\s*/usr(.*)#\1 \${prefix}\3#" Makefile |
---|
94 | make prefix="${D}/usr" install |
---|
95 | dobin "${S}/OMShell/OMShell" |
---|
96 | # Yes, it looks stupid to put data files in /bin, but that's |
---|
97 | # where OpenModelica expects them to be. |
---|
98 | dobin "${S}/OMNotebook/OMNotebookQT4/commands.xml" |
---|
99 | dobin "${S}/OMNotebook/OMNotebookQT4/modelicacolors.xml" |
---|
100 | dobin "${S}/OMNotebook/OMNotebookQT4/stylesheet.xml" |
---|
101 | |
---|
102 | # removed... see below |
---|
103 | #dodoc "${S}/build/bin/ptplot\ copyright.txt" |
---|
104 | dodoc "${S}/OSMC-License.txt" |
---|
105 | |
---|
106 | # Untar the Modelica standard library and set permissions |
---|
107 | LIBRARYDIR="${D}/usr/share/${PN}" |
---|
108 | mkdir ${LIBRARYDIR} |
---|
109 | cd ${LIBRARYDIR} |
---|
110 | tar xzf "${S}/Compiler/VC7/Setup/zips/ModelicaLib.tar.gz" |
---|
111 | for DIR in $( find ${LIBRARYDIR} -type d ) |
---|
112 | do |
---|
113 | chmod 755 ${DIR} |
---|
114 | done |
---|
115 | for FILE in $( find ${LIBRARYDIR} -type f ) |
---|
116 | do |
---|
117 | chmod 644 ${FILE} |
---|
118 | done |
---|
119 | |
---|
120 | # Build environment variables |
---|
121 | echo "OPENMODELICAHOME=${ROOT}usr" > "${T}/99OpenModelica" |
---|
122 | echo "OPENMODELICALIBRARY=${ROOT}usr/share/${PN}/ModelicaLibrary" >> "${T}/99OpenModelica" |
---|
123 | doenvd "${T}/99OpenModelica" |
---|
124 | |
---|
125 | # Do some spring cleaining: some files must be removed. |
---|
126 | cd "${D}/usr" |
---|
127 | # Note that lib/ could be lib64/ or lib32/. |
---|
128 | rm -f lib*/libQt*.a lib*/libf2c* |
---|
129 | # This has been dodoc'ed above. |
---|
130 | rm -f bin/ptplot\ copyright.txt |
---|
131 | # Remove files that are not useful in UNIX. |
---|
132 | rm -f bin/Compile.* bin/doPlot.* bin/omc_* |
---|
133 | # Remove one header that belongs to another package. |
---|
134 | rm -f include/f2c.h |
---|
135 | |
---|
136 | # Adjust some permissions |
---|
137 | chmod 755 "${D}/usr/bin/Compile" |
---|
138 | chmod 755 "${D}/usr/bin/doPlot" |
---|
139 | # ... And fix some line endings |
---|
140 | sed -i -e "s|\r$||g" "${D}/usr/bin/Compile" |
---|
141 | sed -i -e "s|\r$||g" "${D}/usr/bin/doPlot" |
---|
142 | } |
---|
143 | |
---|
144 | pkg_postinst() { |
---|
145 | if use corba ; then |
---|
146 | ewarn "Remember to run 'source /etc/profile' as a user before starting the" |
---|
147 | ewarn "graphical interface OMShell, otherwise it will not be able to" |
---|
148 | ewarn "find the compiler and the Modelica standard library." |
---|
149 | ewarn |
---|
150 | ewarn "Note that OMShell generates a number of garbage files (C++ files," |
---|
151 | ewarn "result listings, executables) in the folder it is run from. You" |
---|
152 | ewarn "should run OMShell from a sandbox folder." |
---|
153 | fi |
---|
154 | echo |
---|
155 | einfo "OpenModelica..." |
---|
156 | echo |
---|
157 | } |
---|