Skip to content

Instantly share code, notes, and snippets.

@liweinan
Created July 16, 2012 08:03
Show Gist options
  • Save liweinan/3121454 to your computer and use it in GitHub Desktop.
Save liweinan/3121454 to your computer and use it in GitHub Desktop.
Frequent errors in RPMs
(Written by David)
I just fixed apache-commons-digester which yyang imported from Fedora
today (according to the %changelog). This at least gives me an
opportunity to discuss what I fixed.
Some are really minor and some are crucial. I tried to list absolutely
every change. The most important changes were making the maven support
work again and fixing the backwards compatibility with the jakarta packages.
1.) Removed the mead macro since there was no non-mead code in the .spec.
2.) Reset spaces to standard 8 (they were at 7).
3.) Removed 'Requires: java' (I am not sure if this one is right,
fnasser was just telling me we need it in the products, but is it needed
in every package?).
4.) Added Epoch to be compatible with older packages (because the
Provides/Obsoletes won't have an Epoch either unless added explicitly).
5.) Changed Group Development/Libraries -> Development/Java
6.) Added BuildRoot definition
7.) Fixed Obsoletes without Provides in javadoc package
8.) Added `rm -rf %{buildroot}' in %install
9.) Added compat jakarta-%{short_name} jar symlinks, both versioned and
unversioned. Remember that this was Provided, but a jar symlink was not
present for it (fixes backwards compat).
10.) Fixed bad javadoc symlinks, one which was even trying to link onto
itself (fixes javadoc backwards compat).
11.) Added %clean section.
12.) Added %post/%postun %update_maven_depmap and Requires(post,postun):
jpackage-utils (fixes maven-support).
13.) Added %files %defattr.
14.) Removed wildcards from file list, made list more explicit.
15.) Added newline at end of file (not sure what editor it was that did
not do this, but mine adds automatically).
---
diff --git a/apache-commons-digester.spec b/apache-commons-digester.spec
index 0083669..ec80db8 100644
--- a/apache-commons-digester.spec
+++ b/apache-commons-digester.spec
@@ -1,35 +1,30 @@
%bcond_without mead
-%if %with mead
-%bcond_with repolib
-%else
-%bcond_without repoliba
-%endif
-
%global base_name digester
%global short_name commons-%{base_name}
-%define reltag _redhat_1
+%define reltag .redhat_1
%define namedreltag -redhat-1
%global namedversion %{version}%{?namedreltag}
-Name: apache-%{short_name}
-Version: 1.8.1
-Release: 11%{?dist}
-Summary: XML to Java object mapping module
-Group: Development/Libraries
-License: ASL 2.0
-URL: http://commons.apache.org/%{base_name}/
-
-BuildArch: noarch
-
-Requires: java
-Requires: jpackage-utils
-Requires: apache-commons-beanutils >= 1.8
-Requires: apache-commons-logging >= 1.1.1
-
-Provides: jakarta-%{short_name} = %{version}-%{release}
-Obsoletes: jakarta-%{short_name} < %{version}-%{release}
+Name: apache-%{short_name}
+Version: 1.8.1
+Release: 13%{?reltag}%{?dist}
+Epoch: 0
+Summary: XML to Java object mapping module
+Group: Development/Java
+License: ASL 2.0
+URL: http://commons.apache.org/%{base_name}/
+Obsoletes: jakarta-%{short_name} < %{epoch}:%{version}-%{release}
+Provides: jakarta-%{short_name} = %{epoch}:%{version}-%{release}
+Provides: %{short_name} = %{epoch}:%{version}-%{release}
+Requires(post): jpackage-utils
+Requires(postun): jpackage-utils
+Requires: jpackage-utils
+Requires: commons-beanutils >= 0:1.8.0
+Requires: commons-logging >= 0:1.1.1
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+BuildArch: noarch
%description
Many projects read XML configuration files to provide initialization of
@@ -38,40 +33,60 @@ and the Digester component was designed to provide a common implementation
that can be used in many different projects
%package javadoc
-Summary: API documentation for %{name}
-Group: Documentation
-Requires: jpackage-utils
-Obsoletes: jakarta-%{short_name}-javadoc < %{version}-%{release}
+Summary: API documentation for %{short_name}
+Group: Documentation
+Obsoletes: jakarta-%{short_name}-javadoc < %{epoch}:%{version}-%{release}
+Provides: jakarta-%{short_name}-javadoc = %{epoch}:%{version}-%{release}
+Requires: jpackage-utils
%description javadoc
-%{summary}.
+API documentation for %{short_name}.
%prep
%build
%install
+%{__rm} -rf %{buildroot}
+
# jars
-install -pD -T %{_sourcedir}/%{short_name}-%{namedversion}.jar %{buildroot}%{_javadir}/%{short_name}-%{namedversion}.jar
-ln -s %{short_name}-%{namedversion}.jar %{buildroot}/%{_javadir}/%{name}.jar
+%{__mkdir_p} %{buildroot}%{_javadir}
+%{__cp} -p %{_sourcedir}/%{short_name}-%{namedversion}.jar %{buildroot}%{_javadir}/%{short_name}-%{namedversion}.jar
+%{__ln_s} %{short_name}-%{namedversion}.jar %{buildroot}%{_javadir}/%{short_name}.jar
+%{__ln_s} %{short_name}-%{namedversion}.jar %{buildroot}%{_javadir}/jakarta-%{short_name}-%{namedversion}.jar
+%{__ln_s} jakarta-%{short_name}-%{namedversion}.jar %{buildroot}%{_javadir}/jakarta-%{short_name}.jar
# javadocs
install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
-%{__unzip} -qq %{_sourcedir}/%{short_name}-%{namedversion}-javadoc.jar -d $RPM_BUILD_ROOT%{_javadocdir}/%{short_name}-%{namedversion}/
-%{__rm} -r $RPM_BUILD_ROOT%{_javadocdir}/%{short_name}-%{namedversion}/META-INF
+%{__unzip} -qq %{_sourcedir}/%{short_name}-%{namedversion}-javadoc.jar -d %{buildroot}%{_javadocdir}/%{short_name}-%{namedversion}/
+%{__rm} -r %{buildroot}%{_javadocdir}/%{short_name}-%{namedversion}/META-INF
%{__ln_s} %{short_name}-%{namedversion} %{buildroot}%{_javadocdir}/%{short_name}
-%{__ln_s} %{short_name}-%{namedversion} %{buildroot}%{_javadocdir}/jakarta-%{short_name}
-%{__ln_s} jakarta-%{short_name}-%{namedversion} %{buildroot}%{_javadocdir}/jakarta-%{short_name}-%{namedversion}
+%{__ln_s} %{short_name}-%{namedversion} %{buildroot}%{_javadocdir}/jakarta-%{short_name}-%{namedversion}
+%{__ln_s} jakarta-%{short_name}-%{namedversion} %{buildroot}%{_javadocdir}/jakarta-%{short_name}
# pom
-install -pD -T -m 644 %{_sourcedir}/%{short_name}-%{namedversion}.pom %{buildroot}%{_mavenpomdir}/JPP-%{short_name}.pom
+%{__mkdir_p} %{buildroot}%{_mavenpomdir}
+%{__cp} -p %{_sourcedir}/%{short_name}-%{namedversion}.pom %{buildroot}%{_mavenpomdir}/JPP-%{short_name}.pom
%add_to_maven_depmap commons-digester commons-digester %{namedversion} JPP %{short_name}
[ -f %{buildroot}%{_mavendepmapfragdir}/%{short_name} ] || %{__mv} %{buildroot}%{_mavendepmapfragdir}/%{name} %{buildroot}%{_mavendepmapfragdir}/%{short_name}
+%clean
+%{__rm} -rf %{buildroot}
+
+%post
+%update_maven_depmap
+
+%postun
+%update_maven_depmap
+
%files
-%{_mavendepmapfragdir}/*
-%{_mavenpomdir}/*
-%{_javadir}*/*
+%defattr(0644,root,root,0755)
+%{_javadir}*/%{short_name}-%{namedversion}.jar
+%{_javadir}*/%{short_name}.jar
+%{_javadir}*/jakarta-%{short_name}-%{namedversion}.jar
+%{_javadir}*/jakarta-%{short_name}.jar
+%{_mavenpomdir}/JPP-%{short_name}.pom
+%{_mavendepmapfragdir}/%{short_name}
%files javadoc
%defattr(0644,root,root,0755)
@@ -80,7 +95,12 @@ install -pD -T -m 644 %{_sourcedir}/%{short_name}-%{namedversion}.pom %{buildroo
%{_javadocdir}/jakarta-%{short_name}-%{namedversion}
%{_javadocdir}/jakarta-%{short_name}
-
%changelog
+* Fri Jul 13 2012 David Walluck <dwalluck@redhat.com> 0:1.8.1-13
+- fix Release tag
+
+* Fri Jul 13 2012 David Walluck <dwalluck@redhat.com> 0:1.8.1-12
+- fix broken .spec
+
* Fri Jul 13 2012 Yong Yang <yyang@redhat.com> - 1.8.1-11
-- Pure mead build
\ No newline at end of file
+- Pure mead build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment