[PATCH] Add continuous integration build configuration for Cygwin

Qian Hong fracting@gmail.com
Tue Jun 28 09:41:00 GMT 2016


Hi,

I'd like to volunteer to maintain a(nother) continuous integration
build for Cygwin. Thanks to Jon Turney we recently setup an Appveyor
build for Cygwin on Windows. This time I'm proposing a Tea CI build
for Cygwin on Wine.

Attached is the build configuration, which includes three parts:
The "stage1" part build Cygwin runtime on Cygwin (on Wine), the "test"
part copy the new cygwin1.dll to override the current cygwin1.dll, and
do some simple test to verify the new runtime dll starts correctly,
the "stage2" part rebuild Cygwin using the newly built cygwin1.dll
environment as a self test.

Here are some examples for build results:
- Tea CI detects build failure of cygwin:
https://tea-ci.org/fracting/cygwin/112
- Tea CI detects runtime failure of new cygwin1.dll:
https://tea-ci.org/fracting/cygwin/110

We've successfully used Tea CI to detect build failure and runtime
failure before, which were already reported to upstream, I hope to
upstream this build configuration so we could detect those failures
even earlier, and I'll volunteer to maintain the build script and
monitor the build results. Please consider the patch, let me know
anything else I can do.

Regarding the new procedure for code contributions to the Cygwin
sources, since I've submitted patches to Cygwin before with Cygwin
Copyright Assignment signed, I think I'm fine here ;) But anyway I'm
happy to declare I provide my patches to Cygwin source under the
2-clause BSD license as
https://cygwin.com/ml/cygwin-announce/2016-06/msg00050.html.


Thank you!

-- 
Regards,
Qian Hong

-
http://www.winehq.org
-------------- next part --------------
From 99067adcd1244042574aee058a201f9432b16529 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Sun, 26 Jun 2016 14:41:16 +0800
Subject: [PATCH] Continuous Integration: Add Tea CI build configuration.

---
 .drone.yml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 .drone.yml

diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..ad512a0
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,58 @@
+# Build configuration for https://tea-ci.org
+# Tea CI is a fork of Drone CI with Cygwin/Msys2 support
+# Feel free to share Tea CI to more open source developers
+# https://docs.tea-ci.org/usage/overview/
+
+debug: true
+
+build:
+  stage1:
+    image: teaci/cygwin$$arch
+    pull: true
+    shell: cygwin$$arch
+    commands:
+      - uname -a
+      - id
+      - C:/cygwin-installer.exe --site http://mirrors.tea-ci.org/cygwin --local-package-dir Z:/tmp/cygwin -W -P gettext-devel,zlib-devel,libiconv,libiconv-devel,mingw64-i686-gcc-g++,mingw64-i686-zlib,mingw64-x86_64-gcc-core,mingw64-x86_64-gcc-g++,mingw64-x86_64-zlib,dejagnu,dblatex,docbook-xml45,docbook-xsl,xmlto -q &> /dev/null
+      - srcdir=`pwd`
+      - builddir=/oss/build-stage1
+      - installdir=/oss/install-stage1
+      - mkdir -p ${builddir} ${installdir}
+      - cd ${builddir}
+      - ${srcdir}/configure --prefix=${installdir} -v
+      - make
+      - make install
+      - sha1sum ${installdir}/bin/cygwin1.dll /bin/cygwin1.dll
+      # FIXME: Is there an easy way to package new Cygwin then install locally using setup_x86{,-64}.exe?
+      - cp -vf ${installdir}/bin/cygwin1.dll /bin/cygwin1.dll
+
+  test:
+    image: teaci/cygwin$$arch
+    pull: true
+    shell: /bin/bash # Call from Linux native shell, which is a special bonus of Tea CI.
+    commands:
+      # In the worst case, new cygwin1.dll might fail to start with exit status 0, which fools the CI as status success.
+      # The following test does not rely on cygwin exit status, instead we trust Linux grep result.
+      - cygwin$$arch -c "uname -a" | grep CYGWIN_NT
+      - cygwin$$arch -c "id" | grep uid
+      - cygwin$$arch -c "sha1sum --tag /bin/cygwin1.dll" | grep SHA1
+
+  # Compile Cygwin again using the new cygwin1.dll
+  stage2:
+    image: teaci/cygwin$$arch
+    pull: true
+    shell: cygwin$$arch
+    commands:
+      - srcdir=`pwd`
+      - builddir=/oss/build-stage2
+      - installdir=/oss/install-stage2
+      - mkdir -p ${builddir} ${installdir}
+      - cd ${builddir}
+      - ${srcdir}/configure --prefix=${installdir} -v
+      - make
+      - make install
+
+matrix:
+  arch:
+    - 64
+    - 32
-- 
2.5.0



More information about the Newlib mailing list