* https://fedoraproject.org/wiki/SIGs/MinGW
-Build order & package notes:
+Build everything
+----------------------------------------------------------------------
+
+ * Install mock
+
+ * Install smock (read smock/README)
+
+ * Download source tarballs and put them in each package directory
+ (see .hgignore and the specfiles for a list).
+
+ * Run ./build-everything-in-mock.sh
+
+ * Build logs are printed to the screen and saved in 'buildall.log'
+
+Package notes
+----------------------------------------------------------------------
( 1) mingw-filesystem
--- /dev/null
+#!/bin/sh -
+
+DIST=fedora-9
+
+specs=`perl show-build-order.pl |
+ grep -v '^#' |
+ grep -Eo '[^[:space:]]+/mingw-[^[:space:]]+\.spec'`
+
+rm -f buildall.log
+echo -e "Specfiles in build order:\n$specs\n\n" >> buildall.log
+
+pwd=`pwd`
+
+for spec in $specs
+do
+ set -e
+ dir=`dirname $spec`
+ srcrpm=`rpmbuild --define "_sourcedir $pwd/$dir" -bs $spec |
+ awk '{print $2}'`
+ smock/smock $DIST $srcrpm
+done 2>&1 | tee -a buildall.log
delete $br{"mingw-nsis"};
delete $br{"mingw-wix"};
delete $br{"mingw-example"};
+ delete $br{"mingw-gdb"};
# There is a dependency loop (gcc -> runtime/w32api -> gcc)
# which has to be manually resolved below. Break that loop.
my $br;
foreach $br (@brs) {
if (! rpm_installed ($br) && !exists $installed{$br}) {
- print "as root # rpm -Uvh $br*.rpm\n";
+ print "# as root: rpm -Uvh $br*.rpm\n";
$installed{$br} = 1;
}
}
(!rpm_installed ("mingw-runtime") ||
!rpm_installed ("mingw-w32api"))) {
print "rpmbuild -ba --define \"_sourcedir $pwd/runtime-bootstrap\" runtime-bootstrap/mingw-runtime-bootstrap.spec\n";
- print "as root # rpm -Uvh mingw-runtime-bootstrap*.rpm\n";
+ print "# as root: rpm -Uvh mingw-runtime-bootstrap*.rpm\n";
$installed{"mingw-runtime-bootstrap"} = 1;
print "rpmbuild -ba --define \"_sourcedir $pwd/w32api-bootstrap\" w32api-bootstrap/mingw-w32api-bootstrap.spec\n";
- print "as root # rpm -Uvh mingw-w32api-bootstrap*.rpm\n";
+ print "# as root: rpm -Uvh mingw-w32api-bootstrap*.rpm\n";
$installed{"mingw-w32api-bootstrap"} = 1;
}
Smock is a thin wrapper around mock to let you build up a whole
set of dependant RPMs against an external distro.
+ - Create directory $HOME/public_html/smock
+
- Copy smock.httpd.conf to /etc/httpd/conf.d/smock.conf, changing the
/home/[USERNAME]/ to your user
- - Start httpd
- - Add smock.mock.conf to all your repos in /etc/mock/ changing the
- arch and distro name to match
- - Create $HOME/smock
- - Edit smock.sh to set which arch(es) you want to build on
+ - Start or restart httpd
+
+ - Insert smock.mock.extra to all your repos in /etc/mock/ changing the
+ USERNAME, arch and distro name to match
+
+ - Copy smock.sh to smock and edit which arch(es) you want to build on
+
+ - Disable SELinux (/usr/sbin/setenforce Permissive) and you may
+ need to do 'chmod 0755 ~' to allow the web server to access your
+ home directory.
Now you can run
./smock.sh fedora-9 /path/to/srpm
-And it'll build the RPM against the fedora-9-XXX distro for each 'XXX'
+And it'll build the RPM against the fedora-9-XXX distro for each 'XXX'
arch you listed.
The resulting src RPMs, binary RPMs and build logs wil be put into
-$HOME/smock, and a YUM repo created. Further RPMs you build using
-smock will resolve the BuildRequires against this local repo
+$HOME/public_html/smock, and a Yum repo created. Further RPMs you
+build using smock will resolve the BuildRequires against this local
+repo.
+# Change USERNAME -> your username and install in
+# /etc/httpd/conf.d/smock.conf
+Alias /USERNAME-smock /home/USERNAME/public_html/smock
-Alias /smock /home/USERNAME/smock
-
-<Directory /home/USERNAME/smock>
- Allow from all
+<Directory /home/USERNAME/public_html/smock>
+ Allow from all
Options +Indexes
</Directory>
+++ /dev/null
-[smock]
-name=smock
-baseurl=http://127.0.0.1/smock/yum/fedora-9/i386
-enabled=1
-
--- /dev/null
+# Change USERNAME and if necessary the distribution name and
+# architecture, and INSERT this file to the relevant distributions
+# in /etc/mock (eg. to /etc/mock/fedora-9-i386.cfg etc.)
+
+[smock]
+name=smock
+baseurl=http://127.0.0.1/USERNAME-smock/yum/fedora-9/i386
+enabled=1
#!/bin/sh
-LOCALREPO=$HOME/smock/yum
-#ARCHES="i386 x86_64"
-ARCHES=i386
+LOCALREPO=$HOME/public_html/smock/yum
+ARCHES="i386 x86_64"
+#ARCHES="i386"
help() {
echo "syntax: $0 DIST SRPM"