mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			Add some GM stuff
							parent
							
								
									a3f658df00
								
							
						
					
					
						commit
						180a5fd5cf
					
				|  | @ -13,8 +13,8 @@ source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libogg-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libsrt-openipc/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libsrt-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libwebsockets-openipc/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/libwebsockets-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/linux-firmware-openipc/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/linux-firmware-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic-fonts/Config.in" | #source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic-fonts/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic/Config.in" | #source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/majestic/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/mbedtls-openipc/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/mbedtls-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/microbe-web/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/microbe-web/Config.in" | ||||||
| source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/motors/Config.in" | source "$BR2_EXTERNAL_GRAINMEDIA_PATH/package/motors/Config.in" | ||||||
|  |  | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | MEM_START_ADDR=0x40000000 | ||||||
|  | KERNEL_UPLOAD_ADDR=0x41000000 | ||||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								|  | @ -0,0 +1,65 @@ | ||||||
|  | #ifndef __LINUX_COMPILER_H | ||||||
|  | #error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead." | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define __used				__attribute__((__used__)) | ||||||
|  | #define __must_check			__attribute__((warn_unused_result)) | ||||||
|  | #define __compiler_offsetof(a, b)	__builtin_offsetof(a, b) | ||||||
|  | 
 | ||||||
|  | /* Mark functions as cold. gcc will assume any path leading to a call
 | ||||||
|  |    to them will be unlikely.  This means a lot of manual unlikely()s | ||||||
|  |    are unnecessary now for any paths leading to the usual suspects | ||||||
|  |    like BUG(), printk(), panic() etc. [but let's keep them for now for | ||||||
|  |    older compilers] | ||||||
|  | 
 | ||||||
|  |    Early snapshots of gcc 4.3 don't support this and we can't detect this | ||||||
|  |    in the preprocessor, but we can live with this because they're unreleased. | ||||||
|  |    Maketime probing would be overkill here. | ||||||
|  | 
 | ||||||
|  |    gcc also has a __attribute__((__hot__)) to move hot functions into | ||||||
|  |    a special section, but I don't see any sense in this right now in | ||||||
|  |    the kernel context */ | ||||||
|  | #define __cold			__attribute__((__cold__)) | ||||||
|  | 
 | ||||||
|  | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | ||||||
|  | 
 | ||||||
|  | #ifndef __CHECKER__ | ||||||
|  | # define __compiletime_warning(message) __attribute__((warning(message))) | ||||||
|  | # define __compiletime_error(message) __attribute__((error(message))) | ||||||
|  | #endif /* __CHECKER__ */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Mark a position in code as unreachable.  This can be used to | ||||||
|  |  * suppress control flow warnings after asm blocks that transfer | ||||||
|  |  * control elsewhere. | ||||||
|  |  * | ||||||
|  |  * Early snapshots of gcc 4.5 don't support this and we can't detect | ||||||
|  |  * this in the preprocessor, but we can live with this because they're | ||||||
|  |  * unreleased.  Really, we need to have autoconf for the kernel. | ||||||
|  |  */ | ||||||
|  | #define unreachable() __builtin_unreachable() | ||||||
|  | 
 | ||||||
|  | /* Mark a function definition as prohibited from being cloned. */ | ||||||
|  | #define __noclone	__attribute__((__noclone__)) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Tell the optimizer that something else uses this function or variable. | ||||||
|  |  */ | ||||||
|  | #define __visible __attribute__((externally_visible)) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * GCC 'asm goto' miscompiles certain code sequences: | ||||||
|  |  * | ||||||
|  |  *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
 | ||||||
|  |  * | ||||||
|  |  * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. | ||||||
|  |  * | ||||||
|  |  * (asm goto is automatically volatile - the naming reflects this.) | ||||||
|  |  */ | ||||||
|  | #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0) | ||||||
|  | 
 | ||||||
|  | #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP | ||||||
|  | #define __HAVE_BUILTIN_BSWAP32__ | ||||||
|  | #define __HAVE_BUILTIN_BSWAP64__ | ||||||
|  | #define __HAVE_BUILTIN_BSWAP16__ | ||||||
|  | #endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ | ||||||
|  | @ -0,0 +1,62 @@ | ||||||
|  | --- linux-3.0.101/arch/arm/boot/Makefile	2013-10-22 11:58:59.000000000 +0400
 | ||||||
|  | +++ linux-3.0.101/arch/arm/boot/Makefile	2021-12-15 10:51:15.956535987 +0300
 | ||||||
|  | @@ -59,15 +59,19 @@
 | ||||||
|  |   | ||||||
|  |  endif | ||||||
|  |   | ||||||
|  | -quiet_cmd_uimage = UIMAGE  $@
 | ||||||
|  | -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
 | ||||||
|  | -		   -C none -a $(LOADADDR) -e $(STARTADDR) \
 | ||||||
|  | -		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
 | ||||||
|  | +#quiet_cmd_uimage = UIMAGE  $@
 | ||||||
|  | +#      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
 | ||||||
|  | +#		   -C none -a $(LOADADDR) -e $(STARTADDR) \
 | ||||||
|  | +#		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
 | ||||||
|  |   | ||||||
|  | -ifeq ($(CONFIG_ZBOOT_ROM),y)
 | ||||||
|  | -$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
 | ||||||
|  | +ifneq ($(LOADADDR),)
 | ||||||
|  | +  UIMAGE_LOADADDR=$(LOADADDR)
 | ||||||
|  |  else | ||||||
|  | -$(obj)/uImage: LOADADDR=$(ZRELADDR)
 | ||||||
|  | +  ifeq ($(CONFIG_ZBOOT_ROM),y)
 | ||||||
|  | +    UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
 | ||||||
|  | +  else
 | ||||||
|  | +    UIMAGE_LOADADDR=$(ZRELADDR)
 | ||||||
|  | +  endif
 | ||||||
|  |  endif | ||||||
|  |   | ||||||
|  |  $(obj)/uImage: STARTADDR=$(LOADADDR) | ||||||
|  | --- linux-3.0.101/scripts/Makefile.lib	2013-10-22 11:58:59.000000000 +0400
 | ||||||
|  | +++ linux-3.0.101/scripts/Makefile.lib	2021-12-15 10:53:24.551357718 +0300
 | ||||||
|  | @@ -262,6 +262,30 @@
 | ||||||
|  |  	lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ | ||||||
|  |  	(rm -f $@ ; false) | ||||||
|  |   | ||||||
|  | +# U-Boot mkimage
 | ||||||
|  | +# ---------------------------------------------------------------------------
 | ||||||
|  | +
 | ||||||
|  | +MKIMAGE := $(srctree)/scripts/mkuboot.sh
 | ||||||
|  | +
 | ||||||
|  | +# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
 | ||||||
|  | +# the number of overrides in arch makefiles
 | ||||||
|  | +UIMAGE_ARCH ?= $(SRCARCH)
 | ||||||
|  | +UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
 | ||||||
|  | +UIMAGE_OPTS-y ?=
 | ||||||
|  | +UIMAGE_TYPE ?= kernel
 | ||||||
|  | +UIMAGE_LOADADDR ?= arch_must_set_this
 | ||||||
|  | +UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
 | ||||||
|  | +UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
 | ||||||
|  | +UIMAGE_IN ?= $<
 | ||||||
|  | +UIMAGE_OUT ?= $@
 | ||||||
|  | +
 | ||||||
|  | +quiet_cmd_uimage = UIMAGE  $(UIMAGE_OUT)
 | ||||||
|  | +      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
 | ||||||
|  | +			-C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
 | ||||||
|  | +			-T $(UIMAGE_TYPE) \
 | ||||||
|  | +			-a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
 | ||||||
|  | +			-n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
 | ||||||
|  | +
 | ||||||
|  |  # XZ | ||||||
|  |  # --------------------------------------------------------------------------- | ||||||
|  |  # Use xzkern to compress the kernel image and xzmisc to compress other things. | ||||||
|  | @ -0,0 +1,96 @@ | ||||||
|  | # Architecture | ||||||
|  | BR2_arm=y | ||||||
|  | BR2_cortex_a5=y | ||||||
|  | BR2_ARM_INSTRUCTIONS_THUMB2=y | ||||||
|  | BR2_KERNEL_HEADERS_VERSION=y | ||||||
|  | BR2_DEFAULT_KERNEL_VERSION="3.3" | ||||||
|  | BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_3=y | ||||||
|  | 
 | ||||||
|  | # Toolchain | ||||||
|  | BR2_PER_PACKAGE_DIRECTORIES=y | ||||||
|  | BR2_GCC_VERSION_7_X=y | ||||||
|  | # BR2_TOOLCHAIN_USES_UCLIBC is not set | ||||||
|  | # BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set | ||||||
|  | # BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" | ||||||
|  | BR2_TOOLCHAIN_USES_MUSL=y | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_MUSL=y | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_CXX=y | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_LOCALE=y | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y | ||||||
|  | 
 | ||||||
|  | # Kernel | ||||||
|  | BR2_LINUX_KERNEL=y | ||||||
|  | BR2_LINUX_KERNEL_CUSTOM_VERSION=y | ||||||
|  | BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.3" | ||||||
|  | BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y | ||||||
|  | BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/gm8136.generic.config" | ||||||
|  | BR2_LINUX_KERNEL_UIMAGE=y | ||||||
|  | BR2_LINUX_KERNEL_XZ=y | ||||||
|  | BR2_LINUX_KERNEL_EXT_GRAINMEDIA_PATCHER=y | ||||||
|  | BR2_LINUX_KERNEL_EXT_GRAINMEDIA_PATCHER_LIST="$(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/patches/ $(BR2_EXTERNAL_GRAINMEDIA_PATH)/board/gm8136/kernel/overlay" | ||||||
|  | 
 | ||||||
|  | # Filesystem | ||||||
|  | # BR2_TARGET_TZ_INFO is not set | ||||||
|  | BR2_TARGET_ROOTFS_CPIO=y | ||||||
|  | BR2_TARGET_ROOTFS_SQUASHFS=y | ||||||
|  | BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y | ||||||
|  | BR2_ROOTFS_OVERLAY="$(TOPDIR)/../general/overlay" | ||||||
|  | BR2_ROOTFS_POST_BUILD_SCRIPT="$(TOPDIR)/../scripts/executing_commands_for_$(BR2_TOOLCHAIN_BUILDROOT_LIBC).sh" | ||||||
|  | 
 | ||||||
|  | # OpenIPC configuration | ||||||
|  | BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc" | ||||||
|  | BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC v2.2" | ||||||
|  | BR2_TARGET_GENERIC_HOSTNAME="openipc-gm8136" | ||||||
|  | BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches" | ||||||
|  | 
 | ||||||
|  | # OpenIPC packages | ||||||
|  | BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config" | ||||||
|  | BR2_PACKAGE_DROPBEAR=y | ||||||
|  | # BR2_PACKAGE_FDK_AAC_OPENIPC is not set | ||||||
|  | BR2_PACKAGE_FWPRINTENV_OPENIPC=y | ||||||
|  | BR2_PACKAGE_HASERL=y | ||||||
|  | BR2_PACKAGE_IPCTOOL=y | ||||||
|  | BR2_PACKAGE_JSON_C=y | ||||||
|  | BR2_PACKAGE_LAME_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LIBCURL_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y | ||||||
|  | # BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set | ||||||
|  | # BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set | ||||||
|  | # BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set | ||||||
|  | # BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set | ||||||
|  | BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y | ||||||
|  | BR2_PACKAGE_LIBEVENT_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y | ||||||
|  | BR2_PACKAGE_LIBOGG_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LIBYAML=y | ||||||
|  | # BR2_PACKAGE_MAJESTIC_FONTS=y | ||||||
|  | # BR2_PACKAGE_MAJESTIC_GM8136=y | ||||||
|  | BR2_PACKAGE_MBEDTLS_OPENIPC=y | ||||||
|  | # BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set | ||||||
|  | # BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set | ||||||
|  | BR2_PACKAGE_MICROBE_WEB=y | ||||||
|  | # BR2_PACKAGE_MINI_SNMPD is not set | ||||||
|  | BR2_PACKAGE_MOTORS=y | ||||||
|  | BR2_PACKAGE_OPUS_OPENIPC=y | ||||||
|  | BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y | ||||||
|  | # BR2_PACKAGE_SSHPASS is not set | ||||||
|  | BR2_PACKAGE_UACME_OPENIPC=y | ||||||
|  | BR2_PACKAGE_VTUND_OPENIPC=y | ||||||
|  | # BR2_PACKAGE_GRAINMEDIA_OSDRV_GM8136=y | ||||||
|  | BR2_PACKAGE_YAML_CLI=y | ||||||
|  | 
 | ||||||
|  | # WiFi | ||||||
|  | BR2_PACKAGE_WIRELESS_TOOLS=y | ||||||
|  | BR2_PACKAGE_WPA_SUPPLICANT=y | ||||||
|  | BR2_PACKAGE_WPA_SUPPLICANT_CLI=y | ||||||
|  | BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y | ||||||
|  | BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y | ||||||
|  | BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y | ||||||
|  | BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y | ||||||
|  | # BR2_PACKAGE_RTL8188EU is not set | ||||||
|  | 
 | ||||||
|  | # WIREGUARD | ||||||
|  | # BR2_PACKAGE_WIREGUARD_LINUX_COMPAT is not set | ||||||
|  | # BR2_PACKAGE_WIREGUARD_TOOLS is not set | ||||||
|  | @ -13,8 +13,8 @@ include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libogg-openipc/libogg-openipc.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libsrt-openipc/libsrt-openipc.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libsrt-openipc/libsrt-openipc.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/libwebsockets-openipc/libwebsockets-openipc.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic-fonts/majestic-fonts.mk | #include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic-fonts/majestic-fonts.mk
 | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic/majestic.mk | #include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/majestic/majestic.mk
 | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/microbe-web/microbe-web.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/microbe-web/microbe-web.mk | ||||||
| include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/motors/motors.mk | include $(BR2_EXTERNAL_GRAINMEDIA_PATH)/package/motors/motors.mk | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | ../../general/package/grainmedia_patcher | ||||||
								
									
									
										
											11
										
									
									building.sh
									
									
									
									
								
								
							
							
										
											11
										
									
									building.sh
									
									
									
									
								|  | @ -344,6 +344,12 @@ xm550() { | ||||||
| 
 | 
 | ||||||
| ################################################################################# | ################################################################################# | ||||||
| 
 | 
 | ||||||
|  | gm8136() { | ||||||
|  |   soc="gm8136" | ||||||
|  |   fresh && make PLATFORM=grainmedia BOARD=unknown_unknown_${soc}_openipc all && rename | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ################################################################################# | ||||||
| 
 | 
 | ||||||
| # Build firmware | # Build firmware | ||||||
| # | # | ||||||
|  | @ -368,7 +374,7 @@ xm550() { | ||||||
| # hi3516cv200                   # testing.. | # hi3516cv200                   # testing.. | ||||||
| # hi3518ev200                   # testing.. | # hi3518ev200                   # testing.. | ||||||
| # hi3518ev200_hs303v1           # OpenIPC | # hi3518ev200_hs303v1           # OpenIPC | ||||||
| hi3518ev200_hs303v2           # OpenIPC | # hi3518ev200_hs303v2           # OpenIPC | ||||||
| # hi3518ev200_hs303v3           # OpenIPC | # hi3518ev200_hs303v3           # OpenIPC | ||||||
| # | # | ||||||
| # hi3516av100                   # OpenIPC | # hi3516av100                   # OpenIPC | ||||||
|  | @ -429,7 +435,10 @@ hi3518ev200_hs303v2           # OpenIPC | ||||||
| # xm530                         # OK | # xm530                         # OK | ||||||
| # xm550                         # OK | # xm550                         # OK | ||||||
| # | # | ||||||
|  | ####### | ||||||
| # | # | ||||||
|  | gm8136 | ||||||
| # | # | ||||||
|  | ####### | ||||||
| # More examples see here: https://github.com/OpenIPC/firmware/wiki/source_code | # More examples see here: https://github.com/OpenIPC/firmware/wiki/source_code | ||||||
| # | # | ||||||
|  |  | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | 
 | ||||||
|  | config BR2_PACKAGE_GRAINMEDIA_PATCHER | ||||||
|  | 	bool | ||||||
|  | @ -0,0 +1,44 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | function log() { | ||||||
|  |     echo "--- $@" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function apply_patch() { | ||||||
|  |     DST=$1 | ||||||
|  |     SRC=$2 | ||||||
|  | 
 | ||||||
|  |     if [[ -d $SRC ]]; then | ||||||
|  |         if [[ ${SRC:${#SRC}-1} != '/' ]]; then | ||||||
|  |             log Apply \"$SRC\" as overlay directory | ||||||
|  |             cp -r $SRC/* $DST/ | ||||||
|  |         else | ||||||
|  |             log Apply \"$SRC\" as patches directory | ||||||
|  |             for P in $SRC/*.patch; do | ||||||
|  |                 patch -d $DST -p1 < $P | ||||||
|  |             done | ||||||
|  |         fi | ||||||
|  |     else | ||||||
|  |         log Apply \"$SRC\" as single patch | ||||||
|  |         patch -d $DST -p1 < $SRC | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function apply_patches() { | ||||||
|  |     log Gonna apply "$@" | ||||||
|  |     while [[ $# -ge 1 ]]; do | ||||||
|  |         apply_patch $DST $1 | ||||||
|  |         shift | ||||||
|  |     done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | DST=$1 | ||||||
|  | shift | ||||||
|  | 
 | ||||||
|  | if [ -f $DST/.grainmedia-patched ]; then | ||||||
|  |     log Patched already | ||||||
|  |     exit | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | apply_patches $@ | ||||||
|  | touch $DST/.grainmedia-patched | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | ################################################################################
 | ||||||
|  | #
 | ||||||
|  | # grainmedia_patcher
 | ||||||
|  | #
 | ||||||
|  | ################################################################################
 | ||||||
|  | 
 | ||||||
|  | GRAINMEDIA_PATCHER_VERSION = 0.1 | ||||||
|  | GRAINMEDIA_PATCHER_INSTALL_TARGET = NO | ||||||
|  | GRAINMEDIA_PATCHER_INSTALL_STAGING = NO | ||||||
|  | GRAINMEDIA_PATCHER_SITE = | ||||||
|  | GRAINMEDIA_PATCHER_SOURCE = | ||||||
|  | 
 | ||||||
|  | $(eval $(generic-package)) | ||||||
		Loading…
	
		Reference in New Issue