Commit d1928872 d1928872b64a6411146297050216d438caa871a4 by Yasuo Ohgaki

Add improved RPM package build script.

1 parent 4a8e640e
1 #!/bin/bash
2 #
3 # A little helper script to build the RPM.
4
5 if [ ! -f "../package.json" ]; then
6 echo "Execute rpm build script in rpm directory"
7 exit 1
8 fi
9
10 name="casperjs"
11 name=${name%.spec}
12 topdir=$(mktemp -d)
13 # Get version from package.json
14 version=$(grep '"version"' ../package.json | sed 's/.*"\(.*\)": "\(.*\)".*/\2/' | sed 's/[-]//')
15 builddir=${TMPDIR:-/tmp}/${name}-${version}
16 sourcedir="${topdir}/SOURCES"
17 buildroot="${topdir}/BUILD/${name}-${version}-root"
18
19 mkdir -p ${topdir}/{RPMS,SRPMS,SOURCES,BUILD}
20 mkdir -p ${buildroot} ${builddir}
21
22 echo "=> Copying sources..."
23 ( cd .. && tar cf - ./[A-Z]* ./package.json ./bin ./samples ./tests ./modules | tar xf - -C ${builddir} )
24
25 echo "=> Creating source tarball under ${sourcedir}..."
26 ( cd ${builddir}/.. && tar zcf ${sourcedir}/${name}-${version}.tar.gz ${name}-${version} )
27
28 echo "=> Building RPM..."
29 rpm=$(rpmbuild --define "_topdir ${topdir}" --define "_version ${version}" --buildroot ${buildroot} --clean -bb ${name}.spec | awk '/\/RPMS\// { print $2; }')
30
31 if [ $? -ne 0 ]; then
32 echo "Failed to build RPM package."
33 exit 1
34 fi
35
36 echo ${rpm}
37 cp ${rpm} ${TMPDIR:-/tmp}/
38 rm -fr ${topdir}
39
40 echo "RPM package build finished."
41 echo ${TMPDIR:-/tmp}/${rpm##*/}
1 %define name casperjs
2 %if "%{_version}"
3 %define version %{_version}
4 %else
5 %define version 1.0
6 %endif
7 %define release 1
8 %define prefix /usr
9
10 %define mybuilddir %{_builddir}/%{name}-%{version}-root
11
12 Summary: open source navigation scripting & testing utility written in Javascript
13 Name: %{name}
14 Version: %{version}
15 License: BSD
16 Release: %{release}
17 Packager: Jan Schaumann <jschauma@etsy.com>
18 Group: Utilities/Misc
19 Source: %{name}-%{version}.tar.gz
20 BuildRoot: /tmp/%{name}-%{version}-root
21
22 Requires: phantomjs
23
24 %description
25 CasperJS is an open source navigation scripting & testing utility written
26 in Javascript and based on PhantomJS. It eases the process of defining a
27 full navigation scenario and provides useful high-level functions, methods
28 & syntactic sugar for doing common tasks
29
30 %prep
31 %setup -q
32
33 %install
34 mkdir -p %{mybuilddir}%{prefix}/bin
35 mkdir -p %{mybuilddir}%{prefix}/share/%{name}/bin
36 mkdir -p %{mybuilddir}%{prefix}/share/%{name}/modules
37 mkdir -p %{mybuilddir}%{prefix}/share/%{name}/samples
38 mkdir -p %{mybuilddir}%{prefix}/share/%{name}/tests
39
40 cp bin/%{name} %{mybuilddir}%{prefix}/share/%{name}/bin/
41 ln -s %{prefix}/share/%{name}/bin/%{name} %{mybuilddir}%{prefix}/bin/%{name}
42 cp bin/bootstrap.js %{mybuilddir}%{prefix}/share/%{name}/bin/
43 # Yes, this tool needs this file in the 'bin' directory.
44 cp bin/usage.txt %{mybuilddir}%{prefix}/share/%{name}/bin/
45 cp CHANGELOG.md %{mybuilddir}%{prefix}/share/%{name}/
46 cp CONTRIBUTING.md %{mybuilddir}%{prefix}/share/%{name}/
47 cp CONTRIBUTORS.md %{mybuilddir}%{prefix}/share/%{name}/
48 cp LICENSE.md %{mybuilddir}%{prefix}/share/%{name}/
49 cp README.md %{mybuilddir}%{prefix}/share/%{name}/
50 cp package.json %{mybuilddir}%{prefix}/share/%{name}/
51 cp -R modules/* %{mybuilddir}%{prefix}/share/%{name}/modules/
52 cp -R samples/* %{mybuilddir}%{prefix}/share/%{name}/samples/
53 cp -R tests/* %{mybuilddir}%{prefix}/share/%{name}/tests/
54
55 %files
56 %defattr(0444,root,root)
57 %attr(0555,root,root)%{prefix}/bin/%{name}
58 %attr(0555,root,root)%{prefix}/share/%{name}/bin/%{name}
59 %attr(0555,root,root)%{prefix}/share/%{name}/bin/bootstrap.js
60 %{prefix}/share/%{name}/bin/usage.txt
61 %{prefix}/share/%{name}/CHANGELOG.md
62 %{prefix}/share/%{name}/CONTRIBUTING.md
63 %{prefix}/share/%{name}/CONTRIBUTORS.md
64 %{prefix}/share/%{name}/LICENSE.md
65 %{prefix}/share/%{name}/README.md
66 %{prefix}/share/%{name}/package.json
67 %{prefix}/share/%{name}/modules/*
68 %{prefix}/share/%{name}/samples/*
69 %{prefix}/share/%{name}/tests/*
70
71 %changelog
72 * Fri Nov 15 2013 Yasuo Ohgaki <yohgaki@ohgaki.net>
73 - update spec for master and other branches
74
75 * Mon Dec 24 2012 Nicolas Perriault <nicolas@perriault.net>
76 - removed 'injector.js' module
77
78 * Mon Dec 10 2012 Jan Schaumann <jschauma@etsy.com>
79 - include 'tests'
80
81 * Mon Nov 26 2012 Jan Schaumann <jschauma@etsy.com>
82 - first rpm version