126 lines · 4.5 KB · Text
RawDownload
# This file is part of MXE. See LICENSE.md for licensing information. GIT_DIR = $(if $(patsubst .,,$($(1)_SUBDIR)) \    ,$(GITS_DIR)/$($(1)_SUBDIR),$(GITS_DIR)/$(1)) GIT_CMD = git \    --work-tree='$(call GIT_DIR,$(1))' \    --git-dir='$(call GIT_DIR,$(1))'/.git PATCH_NAME = 1-fixes # can't use PKG_PATCHES here, because it returns existing patches# while export-patch creates new patchPATCH_BY_NAME = $(patsubst %.mk,%-$(2).patch,$($(1)_MAKEFILE)) define INIT_GIT    # unpack to gits/tmp/pkg    rm -rf '$(GITS_DIR)/tmp'    mkdir -p '$(GITS_DIR)/tmp/$(1)'    cd '$(GITS_DIR)/tmp/$(1)' && $(call UNPACK_PKG_ARCHIVE,$(1))    # if PKG_SUBDIR is ".", the following will move gits/tmp/pkg    mv '$(abspath $(GITS_DIR)/tmp/$(1)/$($(1)_SUBDIR))' '$(call GIT_DIR,$(1))'    rm -rf '$(GITS_DIR)/tmp'    # rename existing .git directories if any    find '$(call GIT_DIR,$(1))' -name .git -prune -exec sh -c 'mv "$$0" "$$0"_' {} \;    # initialize git    $(call GIT_CMD,$(1)) init    $(call GIT_CMD,$(1)) add -A -f    $(call GIT_CMD,$(1)) commit -m "init"    $(call GIT_CMD,$(1)) tag -m "dist" distendef define IMPORT_PATCH    cd '$(call GIT_DIR,$(1))' \        && cat '$(2)' \        | $(SED) '/^From/,$$  !d' \        | $(SED) s/'^From: MXE'/"From: fix@me"/'g;' \        | $(call GIT_CMD,$(1)) am --keep-cr ;endef define EXPORT_PATCH    cd '$(call GIT_DIR,$(1))' \    && ( \        echo 'This file is part of MXE. See LICENSE.md for licensing information.'; \        echo ''; \        echo 'Contains ad hoc patches for cross building.'; \        echo ''; \        $(call GIT_CMD,$(1)) format-patch \            --numbered \            -p \            --no-signature \            --stdout \            --text \            -M9 \            dist..HEAD \        | $(SED) 's/^From [0-9a-f]\{40\} /From 0000000000000000000000000000000000000000 /' \        | $(SED) 's/^index .......*\.\........* /index 1111111..2222222 /' \    ) > '$(PATCH_BY_NAME)'endef _init-git-%: TIMESTAMP = patch_init-git-%: download-only-%	$(if $(call set_is_member,$*,$(PKGS)), \	    $(if $(wildcard $(call GIT_DIR,$*)), \	        $(error $(call GIT_DIR,$*) already exists), \	        $(call INIT_GIT,$*)), \	    $(error Package $* not found)) _import-patch-%:	$(if $(call set_is_member,$*,$(PKGS)), \	    $(if $(wildcard $(call GIT_DIR,$*)), \	        $(call IMPORT_PATCH,$*,$(call PATCH_BY_NAME,$*,$(PATCH_NAME))), \	        $(error $(call GIT_DIR,$*) does not exist)), \	    $(error Package $* not found)) _import-all-patches-%:	$(if $(call set_is_member,$*,$(PKGS)), \	    $(if $(wildcard $(call GIT_DIR,$*)), \	        $(foreach PKG_PATCH,$(call PKG_PATCHES,$*), \	            $(call IMPORT_PATCH,$*,$(PKG_PATCH))), \	        $(error $(call GIT_DIR,$*) does not exist)), \	    $(error Package $* not found)) _export-patch-%:	$(if $(call set_is_member,$*,$(PKGS)), \	    $(if $(wildcard $(call GIT_DIR,$*)), \	        $(call EXPORT_PATCH,$*,$(PATCH_NAME)), \	        $(error $(call GIT_DIR,$*) does not exist)), \	    $(error Package $* not found)) # use .SECONDARY: when refreshing all patches if you don't# want to unpack everything every time#.SECONDARY:init-git-%: $(PREFIX)/installed/patch/init-git-% ;import-patch-%: $(PREFIX)/installed/patch/import-patch-% ;import-all-patches-%: $(PREFIX)/installed/patch/import-all-patches-% ;export-patch-%: $(PREFIX)/installed/patch/export-patch-% ; refresh-patch-%: $(PREFIX)/installed/patch/refresh-patch-% ;$(PREFIX)/installed/patch/refresh-patch-%:	@rm -rf $(PWD)/tmp-patch/$*	@$(MAKE) -f '$(MAKEFILE)' init-git-$*     GITS_DIR=$(PWD)/tmp-patch/$*	@$(MAKE) -f '$(MAKEFILE)' import-patch-$* GITS_DIR=$(PWD)/tmp-patch/$*	@$(MAKE) -f '$(MAKEFILE)' export-patch-$* GITS_DIR=$(PWD)/tmp-patch/$*	@# darwin sometimes chokes deleting large git repos	@rm -rf $(PWD)/tmp-patch/$* || sleep 5; rm -rf $(PWD)/tmp-patch/$*	+@mkdir -p '$(dir $@)'	@touch '$@' $(PREFIX)/installed/patch/%:	@echo '[$*]'	@[ -d '$(LOG_DIR)/patch' ] || mkdir -p '$(LOG_DIR)/patch'	@(time $(MAKE) -f '$(MAKEFILE)' _$*) &> '$(LOG_DIR)/patch/$*'	+@mkdir -p '$(dir $@)'	@touch '$@'  PATCH_FORMAT_PATCHES := $(shell find $(MXE_PLUGIN_DIRS) plugins -name "*-$(PATCH_NAME).patch")PATCH_FORMAT_PKGS    := $(sort $(subst -$(PATCH_NAME),,$(basename $(notdir $(PATCH_FORMAT_PATCHES)))))PATCH_FORMAT_DIRS    := $(sort $(basename $(dir $(PATCH_FORMAT_PATCHES)))) .PHONY: refresh-patchesrefresh-patches:	@$(MAKE) -f '$(MAKEFILE)' -j '$(JOBS)'\	    $(addprefix refresh-patch-,$(PATCH_FORMAT_PKGS)) \	    MXE_PLUGIN_DIRS='$(PATCH_FORMAT_DIRS)'

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t