Selaa lähdekoodia

Added package_bin rule to Makefile. Save package as an artifacts on AppVeyor.

Andy Li 10 vuotta sitten
vanhempi
commit
ec4456534e
5 muutettua tiedostoa jossa 55 lisäystä ja 11 poistoa
  1. 1 0
      .gitignore
  2. 24 2
      Makefile
  3. 1 1
      Makefile.version_extra
  4. 15 0
      Makefile.win
  5. 14 8
      appveyor.yml

+ 1 - 0
.gitignore

@@ -6,6 +6,7 @@
 *.a
 *.exe
 .*.swp
+/out
 
 /extra/hxclasses
 /extra/*.swf

+ 24 - 2
Makefile

@@ -169,10 +169,32 @@ lexer.$(MODULE_EXT): ast.$(MODULE_EXT)
 
 ast.$(MODULE_EXT):
 
-version.$(MODULE_EXT):
-	$(MAKE) -f Makefile.version_extra -s ADD_REVISION=$(ADD_REVISION) > version.ml
+version_info:
+	$(if $(APPVEYOR),\
+		$(eval BRANCH:=$(APPVEYOR_REPO_BRANCH)),\
+		$(if $(TRAVIS),\
+			$(eval BRANCH:=$(TRAVIS_BRANCH)),\
+			$(eval BRANCH:=$(shell git rev-parse --abbrev-ref HEAD))))
+	$(eval COMMIT_SHA:=$(shell git rev-parse --short HEAD))
+	$(eval COMMIT_DATE:=$(shell git show -s --format=%ci HEAD | grep -oh ....-..-..))
+	$(eval PACKAGE_FILE_NAME:=haxe_$(COMMIT_DATE)_$(BRANCH)_$(COMMIT_SHA))
+
+version.$(MODULE_EXT): version_info
+	$(MAKE) -f Makefile.version_extra -s ADD_REVISION=$(ADD_REVISION) BRANCH=$(BRANCH) COMMIT_SHA=$(COMMIT_SHA) COMMIT_DATE=$(COMMIT_DATE) > version.ml
 	$(COMPILER) $(CFLAGS) -c version.ml
 
+# Package
+
+package_bin: version_info
+	mkdir -p out
+	rm -rf $(PACKAGE_FILE_NAME) $(PACKAGE_FILE_NAME).tar.gz
+	# Copy the package contents to $(PACKAGE_FILE_NAME)
+	mkdir -p $(PACKAGE_FILE_NAME)
+	cp -r $(OUTPUT) haxelib$(EXTENSION) std extra/LICENSE.txt extra/CONTRIB.txt extra/CHANGES.txt $(PACKAGE_FILE_NAME)
+	# archive
+	tar -zcf out/$(PACKAGE_FILE_NAME).tar.gz $(PACKAGE_FILE_NAME)
+	rm -r $(PACKAGE_FILE_NAME)
+
 # Clean
 
 clean: clean_libs clean_haxe clean_tools

+ 1 - 1
Makefile.version_extra

@@ -5,7 +5,7 @@
 all: ;
 
 ifneq ($(ADD_REVISION),0)
-	$(info let version_extra = Some "(git build $(shell git rev-parse --abbrev-ref HEAD) @ $(shell git rev-parse --short HEAD))")
+	$(info let version_extra = Some "(git build $(BRANCH) @ $(COMMIT_SHA))")
 else
 	$(info let version_extra = None)
 endif

+ 15 - 0
Makefile.win

@@ -33,3 +33,18 @@ ifdef FILTER
 CC_CMD=($(OCAMLOPT) $(CFLAGS) -c $< 2>tmp.cmi && $(FILTER)) || ($(FILTER) && exit 1)
 CC_PARSER_CMD=($(OCAMLOPT) -pp camlp4o $(CFLAGS) -c parser.ml 2>tmp.cmi && $(FILTER)) || ($(FILTER) && exit 1)
 endif
+
+package_bin: version_info
+	mkdir -p out
+	rm -rf $(PACKAGE_FILE_NAME) $(PACKAGE_FILE_NAME).zip temp.zip
+	# Copy the package contents to $(PACKAGE_FILE_NAME)
+	# Using poor man's cp (zip then unzip), because cp in cygwin is quite broken
+	mkdir -p $(PACKAGE_FILE_NAME)
+	7za a -y -tzip -mx0 temp.zip $(OUTPUT) haxelib$(EXTENSION) std > log.txt || type log.txt
+	cd extra && 7za a -y -tzip -mx0 ../temp.zip LICENSE.txt CONTRIB.txt CHANGES.txt > log.txt || type log.txt
+	7za x -y temp.zip -o$(PACKAGE_FILE_NAME) > log.txt || type log.txt
+	rm temp.zip
+	# archive
+	7za a -r -tzip out/$(PACKAGE_FILE_NAME).zip $(PACKAGE_FILE_NAME) > log.txt || type log.txt
+	rm -r $(PACKAGE_FILE_NAME)
+	rm log.txt extra/log.txt

+ 14 - 8
appveyor.yml

@@ -5,8 +5,6 @@ os: unstable #http://help.appveyor.com/discussions/suggestions/427-pre-install-c
 platform:
     - Win32
 
-clone_folder: C:/projects/haxe
-
 environment:
     global:
         NEKO_ROOT: C:/projects/neko
@@ -14,22 +12,25 @@ environment:
         CYG_ARCH: x86
         CYG_ROOT: C:/cygwin
         CYG_SETUP: C:/cygwin/setup-x86.exe
-        WODI_ARCH: 32
         MINGW_ARCH: i686
+        WODI: wodi32
+        ADD_REVISION: 1
+        OCAMLOPT: ocamlopt.opt
         TEST: "neko,cs,java,cpp,macro"
 
 skip_tags: true
 
 install:
     - 'git submodule update --init --recursive'
+    - cinst 7zip.commandline -y
     # Install ocaml using wodi
     - appveyor DownloadFile "http://cygwin.com/setup-%CYG_ARCH%.exe" -FileName "%CYG_ROOT%\setup.exe"
     - '%CYG_ROOT%/setup.exe -q -R "%CYG_ROOT%" -P dos2unix -P diffutils -P cpio -P make -P patch -P mingw64-%MINGW_ARCH%-gcc-core -P mingw64-%MINGW_ARCH%-gcc-g++ > log.txt || type log.txt'
     - '%CYG_ROOT%/bin/bash -lc "cygcheck -dc cygwin" > log.txt || type log.txt'
-    - '%CYG_ROOT%/bin/bash -lc "wget -q http://ml.ignorelist.com/wodi/8/wodi%WODI_ARCH%.tar.xz -O /tmp/wodi%WODI_ARCH%.tar.xz" > log.txt || type log.txt'
-    - '%CYG_ROOT%/bin/bash -lc "cd /tmp && rm -rf wodi%WODI_ARCH% && tar -xf wodi%WODI_ARCH%.tar.xz && bash wodi%WODI_ARCH%/install.sh" > log.txt || type log.txt'
+    - '%CYG_ROOT%/bin/bash -lc "wget -q http://ml.ignorelist.com/wodi/8/%WODI%.tar.xz -O /tmp/%WODI%.tar.xz" > log.txt || type log.txt'
+    - '%CYG_ROOT%/bin/bash -lc "cd /tmp && rm -rf %WODI% && tar -xf %WODI%.tar.xz && bash %WODI%/install.sh" > log.txt || type log.txt'
     - '%CYG_ROOT%/bin/bash -lc "godi_add godi-zip" > log.txt || type log.txt'
-    - 'set PATH=%PATH%;%CYG_ROOT%/opt/wodi%WODI_ARCH%/bin'
+    - 'set PATH=%PATH%;%CYG_ROOT%/opt/%WODI%/bin'
     # Install neko
     - cinst make -y
     - 'git clone --recursive https://github.com/HaxeFoundation/neko.git %NEKO_ROOT%'
@@ -46,8 +47,10 @@ install:
 build_script:
     - 'cd %APPVEYOR_BUILD_FOLDER%'
     - 'set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%'
-    - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && make -s -f Makefile.win WODI=wodi%WODI_ARCH% OCAMLOPT=ocamlopt.opt ADD_REVISION=1"'
-    - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && make -s -f Makefile.win WODI=wodi%WODI_ARCH% OCAMLOPT=ocamlopt.opt tools"'
+    - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && make -s -f Makefile.win"'
+    - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && make -s -f Makefile.win tools"'
+    - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && make -s -f Makefile.win package_bin"'
+    - dir %APPVEYOR_BUILD_FOLDER%\out
     - cd %APPVEYOR_BUILD_FOLDER%/tests/
     - mkdir "%HAXELIB_ROOT%"
     - haxelib setup "%HAXELIB_ROOT%"
@@ -57,3 +60,6 @@ test_script:
     - haxe -version
     - haxe RunCi.hxml
     - neko RunCi.n
+
+artifacts:
+    - path: out/haxe_*.zip