~ubuntu-branches/ubuntu/utopic/eclipse-linuxtools/utopic

« back to all changes in this revision

Viewing changes to rpmstubby/org.eclipse.linuxtools.rpmstubby/src/org/eclipse/linuxtools/internal/rpmstubby/StubbyGenerator.java

  • Committer: Package Import Robot
  • Author(s): Jakub Adam
  • Date: 2014-05-12 18:11:40 UTC
  • mfrom: (3.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20140512181140-w237r3vsah1tmybz
Tags: 2.2.1-1
* New upstream release.
* Refreshed d/patches.
* Removed eclipse-cdt-valgrind-remote package, all its functionality
  is now provided by eclipse-cdt-profiling-framework-remote.
* Added remove-license-feature.patch.
* Bump Standards-Version to 3.9.5.
* Enable eclipse-changelog package.
* Enable eclipse-rpm-editor package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*******************************************************************************
2
 
 * Copyright (c) 2007 Alphonse Van Assche.
 
2
 * Copyright (c) 2007, 2013 Alphonse Van Assche.
3
3
 * All rights reserved. This program and the accompanying materials
4
4
 * are made available under the terms of the Eclipse Public License v1.0
5
5
 * which accompanies this distribution, and is available at
23
23
import org.eclipse.core.runtime.CoreException;
24
24
import org.eclipse.core.runtime.IPath;
25
25
import org.eclipse.linuxtools.internal.rpmstubby.model.FeatureModel;
 
26
import org.eclipse.linuxtools.rpmstubby.RPMStubbyUtils;
26
27
import org.w3c.dom.Document;
27
28
import org.xml.sax.SAXException;
28
29
 
29
30
/**
30
31
 * Generates the RPM specfile and the fetch script based on the feature and user
31
32
 * preferences.
32
 
 * 
 
33
 *
33
34
 */
34
35
public class StubbyGenerator extends AbstractGenerator {
35
36
 
36
37
        private FeatureModel model;
37
38
        private IFile featureFile;
 
39
        private boolean pomExists;
38
40
 
39
41
        /**
40
42
         * Creates the specfile and fetch script generator for the given packages.
41
 
         * 
 
43
         *
42
44
         * @param featureFile
43
45
         *            The feature.xml file to generate from.
44
46
         */
47
49
                parse(featureFile);
48
50
                specfileName = model.getPackageName().toLowerCase() + ".spec";
49
51
                projectName = featureFile.getProject().getName();
 
52
                pomExists = new RPMStubbyUtils().findPom(featureFile.getParent().getLocation());
50
53
        }
51
54
 
52
55
        private void parse(IFile featureFile) {
82
85
 
83
86
        /**
84
87
         * Generates a RPM specfile based on the parsed data from the pom file.
85
 
         * 
 
88
         *
86
89
         * @return The generated specfile.
87
90
         */
88
91
        @Override
89
92
        public String generateSpecfile() {
90
93
                StringBuilder buffer = new StringBuilder();
91
 
                buffer.append("%global eclipse_base   %{_libdir}/eclipse\n");
92
94
                buffer.append("%global install_loc    %{_datadir}/eclipse/dropins/"
93
95
                                + model.getSimplePackageName() + "\n\n");
94
96
                buffer.append("Name:           " + model.getPackageName().toLowerCase()
100
102
                buffer.append("License:        " + model.getLicense() + "\n");
101
103
                buffer.append("URL:            " + model.getURL() + "\n");
102
104
                buffer.append("Source0:        #FIXME\n");
103
 
                buffer.append("BuildArch: noarch\n\n");
 
105
                buffer.append("BuildArch:      noarch\n\n");
104
106
                generateRequires(buffer);
105
 
                buffer.append("\n%description\n" + model.getDescription() + "\n");
 
107
                buffer.append("%description\n" + model.getDescription() + "\n");
106
108
                generatePrepSection(buffer);
107
109
                generateBuildSection(buffer);
108
110
                generateInstallSection(buffer);
113
115
        }
114
116
 
115
117
        private void generateRequires(StringBuilder buffer) {
116
 
                buffer.append("BuildRequires: eclipse-pde >= 1:3.4.0\n");
117
 
                buffer.append("Requires: eclipse-platform >= 3.4.0\n");
118
 
 
 
118
                buffer.append("Requires:       eclipse-platform >= 3.4.0\n");
 
119
                buffer.append("BuildRequires:  maven-local\n");
 
120
                buffer.append("\n\n");
119
121
        }
120
122
 
121
123
        private void generateInstallSection(StringBuilder buffer) {
122
124
                buffer.append("%install\n");
123
 
                buffer.append("install -d -m 755 %{buildroot}%{install_loc}\n\n");
124
 
                buffer.append("%{__unzip} -q -d %{buildroot}%{install_loc} \\\n");
125
 
                buffer.append("     build/rpmBuild/" + model.getFeatureId()
126
 
                                + ".zip \n\n");
127
 
 
 
125
                if (!pomExists) {
 
126
                        generateTempPom(buffer);
 
127
                }
 
128
                buffer.append("mvn-rpmbuild ");
 
129
                if (!pomExists) {
 
130
                        buffer.append("-f temp/pom.xml ");
 
131
                }
 
132
                buffer.append("org.fedoraproject:feclipse-maven-plugin:install \\" + "\n");
 
133
                buffer.append("\t" + "-DsourceRepo=#FIXME \\" + "\n");
 
134
                buffer.append("\t" + "-DtargetLocation=%{buildroot}%{install_loc}/eclipse" + "\n");
 
135
                buffer.append("\n\n");
128
136
        }
129
137
 
130
138
        private void generateFilesSections(StringBuilder buffer) {
139
147
                                buffer.append("%doc " + docsRoot + "/" + file + "\n");
140
148
                        }
141
149
                }
142
 
                buffer.append("\n");
 
150
                buffer.append("\n\n");
143
151
        }
144
152
 
145
 
        private void generatePrepSection(StringBuilder buffer) {
 
153
        private static void generatePrepSection(StringBuilder buffer) {
146
154
                buffer.append("\n%prep\n");
147
 
                buffer.append("#FIXME Replace FIXME with the root directory name in Source0\n");
148
 
                buffer.append("%setup -q -n FIXME\n\n");
 
155
                buffer.append("%setup -q #You may need to update this according to your Source0\n");
 
156
                buffer.append("\n\n");
149
157
        }
150
158
 
151
159
        private void generateBuildSection(StringBuilder buffer) {
152
160
                buffer.append("%build\n");
153
 
                buffer.append("%{eclipse_base}/buildscripts/pdebuild -f ").append(
154
 
                                model.getFeatureId());
 
161
                if (!pomExists) {
 
162
                        generateTempPom(buffer);
 
163
                }
 
164
                buffer.append("mvn-rpmbuild ");
 
165
                if (!pomExists) {
 
166
                        buffer.append("-f temp/pom.xml ");
 
167
                }
 
168
                buffer.append("install\n");
155
169
                buffer.append("\n\n");
156
170
        }
157
171
 
158
172
        /**
159
173
         * Returns the last meaningful part of the feature id before the feature
160
174
         * substring.
161
 
         * 
 
175
         *
162
176
         * @param packageName
163
177
         *            The feature id from which to extract the name.
164
178
         * @return The part of the feature id to be used for package name.
172
186
                return "eclipse-" + name;
173
187
        }
174
188
 
175
 
        private void generateChangelog(StringBuilder buffer) {
176
 
                buffer.append("%changelog\n\n");
177
 
                buffer.append("#FIXME\n");
 
189
        private static void generateTempPom(StringBuilder buffer) {
 
190
                buffer.append("mkdir temp\n");
 
191
                buffer.append("pushd temp\n");
 
192
                buffer.append("cat > pom.xml << EOF\n");
 
193
                buffer.append("<project>\n");
 
194
                buffer.append("    <modelVersion>4.0.0</modelVersion>\n");
 
195
                buffer.append("    <name>Maven Default Project</name>\n");
 
196
                buffer.append("    <groupId>org.fedoraproject</groupId>\n");
 
197
                buffer.append("    <artifactId>dummy</artifactId>\n");
 
198
                buffer.append("    <version>1.0.0</version>\n");
 
199
                buffer.append("</project>\n");
 
200
                buffer.append("EOF\n");
 
201
                buffer.append("popd\n");
178
202
        }
179
 
 
180
203
}