Grooming, better configurability, better logging system.
parent
34be9d582a
commit
32bd9efb2c
87
package.mk
87
package.mk
|
@ -61,12 +61,14 @@ repository_directory = /tmp/pkg# local package repository
|
||||||
WORKING_DIR ?= /tmp/packaging
|
WORKING_DIR ?= /tmp/packaging
|
||||||
UUID ?= $(gen_uuid)
|
UUID ?= $(gen_uuid)
|
||||||
|
|
||||||
pkg_working_dir = $(WORKING_DIR)/$(UUID)
|
pkg_working_dir ?= $(WORKING_DIR)/$(UUID)
|
||||||
pkg_build_par_dir = $(pkg_working_dir)/build/
|
pkg_build_par_dir ?= $(pkg_working_dir)/build/
|
||||||
pkg_build_dir = $(pkg_build_par_dir)/$(name)-$(version)
|
pkg_build_dir ?= $(pkg_build_par_dir)/$(name)-$(version)
|
||||||
pkg_fake_root_dir = $(pkg_working_dir)/root
|
pkg_fake_root_dir ?= $(pkg_working_dir)/root
|
||||||
|
|
||||||
log_file = $(WORKING_DIR)/$(UUID)/log
|
log_file ?= $(WORKING_DIR)/$(UUID)/log
|
||||||
|
log_it = >> $(log_file).info 2>> $(log_file).err
|
||||||
|
log_patching = >> $(log_file).patching.info 2>> $(log_file).patching.err
|
||||||
|
|
||||||
# shortcut
|
# shortcut
|
||||||
bdir ?= $(pkg_build_dir)
|
bdir ?= $(pkg_build_dir)
|
||||||
|
@ -86,6 +88,13 @@ endif
|
||||||
|
|
||||||
download_tool ?= wget
|
download_tool ?= wget
|
||||||
|
|
||||||
|
# We can easily override backends.
|
||||||
|
download_backend ?= $(tarball)
|
||||||
|
configure_backend ?= configure_default_backends
|
||||||
|
build_backend ?= build_default_backends
|
||||||
|
fake_root_install_backend ?= fake_root_install_default_backends
|
||||||
|
create_steps ?= build-env configure build fake_root_install packages clean_working_dir
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Default implementations.
|
# Default implementations.
|
||||||
|
@ -134,7 +143,7 @@ download_wget:
|
||||||
$(tarball): download_$(download_tool)
|
$(tarball): download_$(download_tool)
|
||||||
@echo download of $@ done
|
@echo download of $@ done
|
||||||
|
|
||||||
download: create_source_dir $(tarball)
|
download: create_source_dir $(download_backend)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Extraction
|
# Extraction
|
||||||
|
@ -145,7 +154,11 @@ extract_zip:
|
||||||
extract_tar.%:
|
extract_tar.%:
|
||||||
$(Q)cd $(pkg_build_par_dir) && tar xf $(tarball)
|
$(Q)cd $(pkg_build_par_dir) && tar xf $(tarball)
|
||||||
|
|
||||||
extract: create_build_dir extract_$(ext)
|
extract_backend ?= extract_$(ext)
|
||||||
|
ifeq ($(download_backend),)
|
||||||
|
extract_backend =
|
||||||
|
endif
|
||||||
|
extract: create_build_dir $(extract_backend)
|
||||||
@echo "Extracting: done"
|
@echo "Extracting: done"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -156,7 +169,9 @@ $(patches):
|
||||||
@echo "Copying patch '$@' in $(pkg_build_par_dir)"
|
@echo "Copying patch '$@' in $(pkg_build_par_dir)"
|
||||||
$(Q)cp $@ $(pkg_build_par_dir)
|
$(Q)cp $@ $(pkg_build_par_dir)
|
||||||
@echo "Applying patch '$@'"
|
@echo "Applying patch '$@'"
|
||||||
$(Q)cd $(pkg_build_dir) && patch < ../$@
|
$(Q)cd $(pkg_build_dir); patch -f < ../$@ $(log_patching) || \
|
||||||
|
patch -f -p0 < ../$@ $(log_patching) || \
|
||||||
|
patch -f -p1 < ../$@ $(log_patching)
|
||||||
|
|
||||||
patching: $(patches)
|
patching: $(patches)
|
||||||
|
|
||||||
|
@ -169,8 +184,8 @@ configure_autotools:
|
||||||
$(Q)if [ -f $(bdir)/configure ]; then \
|
$(Q)if [ -f $(bdir)/configure ]; then \
|
||||||
cd $(bdir); \
|
cd $(bdir); \
|
||||||
echo `pwd` "$$ ./configure $(CONFIGURE_OPTIONS)"; \
|
echo `pwd` "$$ ./configure $(CONFIGURE_OPTIONS)"; \
|
||||||
echo `pwd` "$$ ./configure $(CONFIGURE_OPTIONS)" >> $(log_file).info; \
|
echo `pwd` "$$ ./configure $(CONFIGURE_OPTIONS)" $(log_it); \
|
||||||
./configure $(CONFIGURE_OPTIONS) >> $(log_file).info 2>> $(log_file).err; \
|
./configure $(CONFIGURE_OPTIONS) $(log_it); \
|
||||||
else \
|
else \
|
||||||
echo "no configure script - pass autotools backend"; \
|
echo "no configure script - pass autotools backend"; \
|
||||||
fi
|
fi
|
||||||
|
@ -179,13 +194,14 @@ configure_cmake:
|
||||||
$(Q)if [ -f $(bdir)/CMakeLists.txt ]; then \
|
$(Q)if [ -f $(bdir)/CMakeLists.txt ]; then \
|
||||||
cd $(bdir); \
|
cd $(bdir); \
|
||||||
echo `pwd` "$$ cmake . $(CMAKE_OPTIONS)"; \
|
echo `pwd` "$$ cmake . $(CMAKE_OPTIONS)"; \
|
||||||
echo `pwd` "$$ cmake . $(CMAKE_OPTIONS)" >> $(log_file).info; \
|
echo `pwd` "$$ cmake . $(CMAKE_OPTIONS)" $(log_it); \
|
||||||
cmake . $(CMAKE_OPTIONS) >> $(log_file).info 2>> $(log_file).err; \
|
cmake . $(CMAKE_OPTIONS) $(log_it); \
|
||||||
else \
|
else \
|
||||||
echo "no CMakeLists.txt - pass cmake backend" ; \
|
echo "no CMakeLists.txt - pass cmake backend" ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
configure: pre_configure configure_autotools configure_cmake
|
configure_default_backends: configure_autotools configure_cmake
|
||||||
|
configure: pre_configure $(configure_backend)
|
||||||
@echo "Configure: done"
|
@echo "Configure: done"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -196,13 +212,14 @@ build_make:
|
||||||
$(Q)if [ -f $(bdir)/Makefile ]; then \
|
$(Q)if [ -f $(bdir)/Makefile ]; then \
|
||||||
cd $(bdir); \
|
cd $(bdir); \
|
||||||
echo `pwd` "$$ make $(MAKE_OPTIONS)"; \
|
echo `pwd` "$$ make $(MAKE_OPTIONS)"; \
|
||||||
echo `pwd` "$$ make $(MAKE_OPTIONS)" >> $(log_file).info; \
|
echo `pwd` "$$ make $(MAKE_OPTIONS)" $(log_it); \
|
||||||
make $(MAKE_OPTIONS) >> $(log_file).info 2>> $(log_file).err; \
|
make $(MAKE_OPTIONS) $(log_it); \
|
||||||
else \
|
else \
|
||||||
echo "no Makefile - pass" ; \
|
echo "no Makefile - pass" ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build: pre_build build_make
|
build_default_backends: build_make
|
||||||
|
build: pre_build $(build_backend)
|
||||||
@echo "Build: done"
|
@echo "Build: done"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -213,13 +230,14 @@ fake_root_install_make:
|
||||||
$(Q)[ -f $(bdir)/Makefile ] && ( \
|
$(Q)[ -f $(bdir)/Makefile ] && ( \
|
||||||
cd $(bdir); \
|
cd $(bdir); \
|
||||||
echo `pwd` "$$ make install $(MAKE_INSTALL_OPTIONS)"; \
|
echo `pwd` "$$ make install $(MAKE_INSTALL_OPTIONS)"; \
|
||||||
echo `pwd` "$$ make install $(MAKE_INSTALL_OPTIONS)" >> $(log_file).info; \
|
echo `pwd` "$$ make install $(MAKE_INSTALL_OPTIONS)" $(log_it); \
|
||||||
make install $(MAKE_INSTALL_OPTIONS) >> $(log_file).info 2>> $(log_file).err; \
|
make install $(MAKE_INSTALL_OPTIONS) $(log_it); \
|
||||||
) || ( \
|
) || ( \
|
||||||
echo "no Makefile - pass" \
|
echo "no Makefile - pass" \
|
||||||
)
|
)
|
||||||
|
|
||||||
fake_root_install: create_fake_root_dir pre_fake_root_install fake_root_install_make post_fake_root_install
|
fake_root_install_default_backends: fake_root_install_make
|
||||||
|
fake_root_install: create_fake_root_dir pre_fake_root_install $(fake_root_install_backend) post_fake_root_install
|
||||||
@echo "Install (fake root): done"
|
@echo "Install (fake root): done"
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,7 +254,7 @@ $(package_base):
|
||||||
@echo "Packaging $@"
|
@echo "Packaging $@"
|
||||||
@# strip binaries
|
@# strip binaries
|
||||||
$(Q)cd $(pkg_fake_root_dir) && find . -type f | while read F ; do strip $F 2>/dev/null ; done ; :
|
$(Q)cd $(pkg_fake_root_dir) && find . -type f | while read F ; do strip $F 2>/dev/null ; done ; :
|
||||||
$(Q)cd $(pkg_fake_root_dir) && create-package $@ >> $(log_file).info 2>> $(log_file).err
|
$(Q)cd $(pkg_fake_root_dir) && create-package $@ $(log_it)
|
||||||
|
|
||||||
export pkg_fake_root_src_dir = $(pkg_fake_root_dir)-src
|
export pkg_fake_root_src_dir = $(pkg_fake_root_dir)-src
|
||||||
export pkg_fake_root_doc_dir = $(pkg_fake_root_dir)-doc
|
export pkg_fake_root_doc_dir = $(pkg_fake_root_dir)-doc
|
||||||
|
@ -249,23 +267,26 @@ extract_src_zip:
|
||||||
extract_src_tar.%:
|
extract_src_tar.%:
|
||||||
$(Q)cd $(pkg_fake_root_src_dir) && tar xf $(tarball)
|
$(Q)cd $(pkg_fake_root_src_dir) && tar xf $(tarball)
|
||||||
|
|
||||||
|
extract_src_backend = create_fake_root_src_dir extract_src_$(ext) $(package_src)
|
||||||
|
ifeq ($(download_backend),)
|
||||||
|
extract_src_backend =
|
||||||
|
endif
|
||||||
|
|
||||||
package_src = $(repository_directory)/$(ARCH)/$(name)-src-$(version)-r$(release).$(package_ext)
|
package_src = $(repository_directory)/$(ARCH)/$(name)-src-$(version)-r$(release).$(package_ext)
|
||||||
package_src: create_fake_root_src_dir extract_src_$(ext) $(package_src)
|
package_src: $(extract_src_backend)
|
||||||
$(package_src):
|
$(package_src):
|
||||||
@echo "Packaging $@"
|
@echo "Packaging $@"
|
||||||
$(Q)[ ! -z "$(patches)" ] && cp -v $(patches) $(pkg_fake_root_src_dir) || :
|
$(Q)[ ! -z "$(patches)" ] && cp -v $(patches) $(pkg_fake_root_src_dir) || :
|
||||||
$(Q)cd $(pkg_fake_root_src_dir) && dependencies="" conflicts="" provides="" create-package $@ \
|
$(Q)cd $(pkg_fake_root_src_dir) && dependencies="" conflicts="" provides="" create-package $@ $(log_it)
|
||||||
>> $(log_file).info 2>> $(log_file).err
|
|
||||||
|
|
||||||
package_doc = $(repository_directory)/$(ARCH)/$(name)-doc-$(version)-r$(release).$(package_ext)
|
package_doc = $(repository_directory)/$(ARCH)/$(name)-doc-$(version)-r$(release).$(package_ext)
|
||||||
package_doc: $(package_doc)
|
package_doc: $(package_doc)
|
||||||
$(package_doc):
|
$(package_doc):
|
||||||
@echo "Packaging $@"
|
@echo "Packaging $@"
|
||||||
$(Q)cd $(pkg_fake_root_dir) && create-split-doc >> $(log_file).info 2>> $(log_file).err
|
$(Q)cd $(pkg_fake_root_dir) && create-split-doc $(log_it)
|
||||||
$(Q)if [ -d "$(pkg_fake_root_doc_dir)" ] ; then \
|
$(Q)if [ -d "$(pkg_fake_root_doc_dir)" ] ; then \
|
||||||
cd $(pkg_fake_root_doc_dir) ; \
|
cd $(pkg_fake_root_doc_dir) ; \
|
||||||
dependencies="" conflicts="" provides="" create-package $@ \
|
dependencies="" conflicts="" provides="" create-package $@ $(log_it) ; \
|
||||||
>> $(log_file).info 2>> $(log_file).err ; \
|
|
||||||
else \
|
else \
|
||||||
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_doc_dir)' directory\033[0m" ; \
|
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_doc_dir)' directory\033[0m" ; \
|
||||||
fi
|
fi
|
||||||
|
@ -277,8 +298,7 @@ $(package_man):
|
||||||
$(Q)cd $(pkg_fake_root_dir) && create-split-man >> $(log_file).info 2>> $(log_file).err
|
$(Q)cd $(pkg_fake_root_dir) && create-split-man >> $(log_file).info 2>> $(log_file).err
|
||||||
$(Q)if [ -d "$(pkg_fake_root_man_dir)" ] ; then \
|
$(Q)if [ -d "$(pkg_fake_root_man_dir)" ] ; then \
|
||||||
cd $(pkg_fake_root_man_dir) ; \
|
cd $(pkg_fake_root_man_dir) ; \
|
||||||
dependencies="" conflicts="" provides="" create-package $@ \
|
dependencies="" conflicts="" provides="" create-package $@ $(log_it) ; \
|
||||||
>> $(log_file).info 2>> $(log_file).err ; \
|
|
||||||
else \
|
else \
|
||||||
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_man_dir)' directory\033[0m" ; \
|
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_man_dir)' directory\033[0m" ; \
|
||||||
fi
|
fi
|
||||||
|
@ -290,10 +310,9 @@ $(package_dev):
|
||||||
$(Q)cd $(pkg_fake_root_dir) && create-split-dev >> $(log_file).info 2>> $(log_file).err
|
$(Q)cd $(pkg_fake_root_dir) && create-split-dev >> $(log_file).info 2>> $(log_file).err
|
||||||
$(Q)if [ -d "$(pkg_fake_root_dev_dir)" ] ; then \
|
$(Q)if [ -d "$(pkg_fake_root_dev_dir)" ] ; then \
|
||||||
cd $(pkg_fake_root_dev_dir) ; \
|
cd $(pkg_fake_root_dev_dir) ; \
|
||||||
dependencies="" conflicts="" provides="" create-package $@ \
|
dependencies="" conflicts="" provides="" create-package $@ $(log_it) ; \
|
||||||
>> $(log_file).info 2>> $(log_file).err ; \
|
|
||||||
else \
|
else \
|
||||||
echo -e "\033[0;35;40m>> no '$([ -)' directory\033[0m" ; \
|
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_dev_dir)' directory\033[0m" ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
package_libs = $(repository_directory)/$(ARCH)/$(name)-libs-$(version)-r$(release).$(package_ext)
|
package_libs = $(repository_directory)/$(ARCH)/$(name)-libs-$(version)-r$(release).$(package_ext)
|
||||||
|
@ -303,8 +322,7 @@ $(package_libs):
|
||||||
$(Q)cd $(pkg_fake_root_dir) && create-split-libs >> $(log_file).info 2>> $(log_file).err
|
$(Q)cd $(pkg_fake_root_dir) && create-split-libs >> $(log_file).info 2>> $(log_file).err
|
||||||
$(Q)if [ -d "$(pkg_fake_root_libs_dir)" ] ; then \
|
$(Q)if [ -d "$(pkg_fake_root_libs_dir)" ] ; then \
|
||||||
cd $(pkg_fake_root_libs_dir) ; \
|
cd $(pkg_fake_root_libs_dir) ; \
|
||||||
dependencies="" conflicts="" provides="" create-package $@ \
|
dependencies="" conflicts="" provides="" create-package $@ $(log_it) ; \
|
||||||
>> $(log_file).info 2>> $(log_file).err ; \
|
|
||||||
else \
|
else \
|
||||||
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_libs_dir)' directory\033[0m" ; \
|
echo -e "\033[0;35;40m>> no '$(pkg_fake_root_libs_dir)' directory\033[0m" ; \
|
||||||
fi
|
fi
|
||||||
|
@ -323,8 +341,9 @@ splits: package_src package_doc package_man package_dev package_libs
|
||||||
# The main package is the last to be created since it includes
|
# The main package is the last to be created since it includes
|
||||||
# all content that wasn't matched by splits.
|
# all content that wasn't matched by splits.
|
||||||
packages: create_repository_dir splits package_base
|
packages: create_repository_dir splits package_base
|
||||||
|
@true
|
||||||
build-env: check_binaries download extract patching
|
build-env: check_binaries download extract patching
|
||||||
create: build-env configure build fake_root_install packages clean_working_dir
|
create: $(create_steps)
|
||||||
|
|
||||||
include $(SYSCONF)/package.local.mk
|
include $(SYSCONF)/package.local.mk
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue