diff --git a/etc/build.usage b/etc/build.usage index 9f2747f..6993ed7 100644 --- a/etc/build.usage +++ b/etc/build.usage @@ -11,8 +11,10 @@ usage: ./build.sh [-x] [-4|6] [-a nt32|nt64] [-b debug|release] [-c] [-h] -N Offline mode: no {wget,git-{clone,pull}}(1) calls. -r package[,...][:step] Restart the specified comma-separated build(s) completely or at the optionally specified step. Currently defined steps are: - fetch extract build_dir patch_pre autoconf patch configure clean - build install. + fetch_wget, fetch_git, fetch_extract, configure_patch_pre, + configure_autotools, configure_patch, configure, build_clean, + build, install_subdirs, install_make, install_files, install_libs, + install_pkgconfig, install_purge_la, install_strip, and install. -R Ignore build failures and continue building (relaxed mode.) -t[.gz|.bz2|.xz] Produce binary distribution and source tarballs containing ${PREFIX} sans ${WORKDIR} and ${PREFIX}/src/midipix_build and ${WORKDIR} sans top- diff --git a/subr/pkg_install_libs.subr b/subr/pkg_install_libs.subr index 29ec891..c12369e 100644 --- a/subr/pkg_install_libs.subr +++ b/subr/pkg_install_libs.subr @@ -2,6 +2,17 @@ # set -o errexit -o noglob are assumed. # +pkgp_install_lib_check() { + local _so_path="${1}" _so_ver="${1##*.so}"; + while [ -n "${_so_ver}" ]; do + if [ "${_so_ver#[0-9].}" = "${_so_ver}" ]; then + return 0; + else + _so_ver="${_so_ver#[0-9].}"; + fi; + done; return 1; +}; + pkgp_install_lib_link() { local _so_path="${1}" _so_dir="${2}" _lib_name="${3}" \ _lib_link_tgt _lib_link_path; @@ -11,7 +22,7 @@ pkgp_install_lib_link() { if [ -n "${_lib_link_tgt}" ]; then _lib_link_path="${_so_path%.so*}.lib.a"; build_fileop rm "${_lib_link_path}"; - build_fileop ln_symbolic "${_lib_link_tgt}" \ + build_fileop ln_symbolic "$(basename "${_lib_link_tgt}")" \ "${_lib_link_path}"; fi; }; @@ -21,11 +32,9 @@ pkg_install_libs() { if [ "${PKG_BUILD_TYPE}" != "host" ]; then for _so_src_path in \ $(find "${PWD}/../destdir" \ - \( -name "*.so" \ - -or -name "*.so.[0-9]*" \ - -or -name "*.so.[0-9]*.[0-9]*" \ - -or -name "*.so.[0-9]*.[0-9]*.[0-9]*" \) -print); - do if [ "$(readlink -f "${_so_src_path}")" = "/dev/null" ]; then + \( -name "*.so" -or -name "*.so.*" \) -print); + do if ! pkgp_install_lib_check "${_so_src_path}" \ + || [ "$(readlink -f "${_so_src_path}")" = "/dev/null" ]; then continue; else case "${_so_src_path}" in *.so) _lib_src_path="${_so_src_path%%.so}.lib.a"; ;; diff --git a/subr/pkg_setup_env.subr b/subr/pkg_setup_env.subr index 6f2ef2c..a02b1a6 100644 --- a/subr/pkg_setup_env.subr +++ b/subr/pkg_setup_env.subr @@ -16,7 +16,14 @@ pkg_setup_env() { [ -n "${PKG_ENV_VARS_EXTRA}" ] && set_env_vars_with_sep : "${PKG_ENV_VARS_EXTRA}"; [ -z "${PKG_FNAME}" ] && PKG_FNAME="${PKG_URL##*/}"; [ -z "${PKG_TARGET}" ] && PKG_TARGET="${TARGET}"; - [ -z "${PKG_BASE_DIR}" ] && PKG_BASE_DIR="${WORKDIR}/${PKG_NAME}-${PKG_BUILD_TYPE:-native}-${PKG_TARGET}"; + case "${PKG_BASE_DIR}" in + ?*) ;; + *) PKG_BASE_DIR="${WORKDIR}/${PKG_NAME}-${PKG_BUILD_TYPE:-native}-${PKG_TARGET}"; + if [ -n "${ARG_RESTART}" ]\ + && [ -z "${ARG_RESTART_AT}" ]; then + build_fileop rm "${PKG_BASE_DIR}"; + fi; ;; + esac; case "${PKG_BUILD_TYPE}" in host) export AR="ar"; export CC="gcc"; diff --git a/vars/build.vars b/vars/build.vars index 19e817b..85b2e3b 100644 --- a/vars/build.vars +++ b/vars/build.vars @@ -192,15 +192,12 @@ HOST_PACKAGES_PREFIX="${PREFIX}"; : ${PKG_CMAKE_HOST_VERSION:=3.6.3}; : ${PKG_CMAKE_HOST_URL:=https://cmake.org/files/v${PKG_CMAKE_HOST_VERSION%.*}/cmake-${PKG_CMAKE_HOST_VERSION}.tar.gz}; : ${PKG_CMAKE_HOST_CONFIGURE_ARGS:="--parallel=${DEFAULT_BUILD_CPUS} --prefix=${PREFIX}"}; -: ${PKG_CMAKE_HOST_DISABLED:=1}; : ${PKG_LLVM_HOST_SHA256SUM:=6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9}; : ${PKG_LLVM_HOST_VERSION:=3.8.1}; : ${PKG_LLVM_HOST_URL:=http://releases.llvm.org/${PKG_LLVM_HOST_VERSION}/llvm-${PKG_LLVM_HOST_VERSION}.src.tar.xz}; -: ${PKG_LLVM_HOST_DISABLED:=1}; : ${PKG_CLANG_HOST_SHA256SUM:=4cd3836dfb4b88b597e075341cae86d61c63ce3963e45c7fe6a8bf59bb382cdf}; : ${PKG_CLANG_HOST_VERSION:=3.8.1}; : ${PKG_CLANG_HOST_URL:=http://releases.llvm.org/${PKG_CLANG_HOST_VERSION}/cfe-${PKG_CLANG_HOST_VERSION}.src.tar.xz}; -: ${PKG_CLANG_HOST_DISABLED:=1}; : ${PKG_FILE_HOST_SHA256SUM:=8639dc4d1b21e232285cd483604afc4a6ee810710e00e579dbe9591681722b50}; : ${PKG_FILE_HOST_VERSION:=5.32}; : ${PKG_FILE_HOST_URL:=ftp://ftp.astron.com/pub/file/file-${PKG_FILE_HOST_VERSION}.tar.gz}; @@ -395,7 +392,6 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_SHARED_MIME_INFO_URL:=http://freedesktop.org/~hadess/shared-mime-info-${PKG_SHARED_MIME_INFO_VERSION}.tar.xz}; : ${PKG_SHARED_MIME_INFO_CONFIGURE_ARGS_EXTRA:=--disable-update-mimedb}; : ${PKG_SHARED_MIME_INFO_MAKEFLAGS_BUILD:=-j1}; -: ${PKG_SHARED_MIME_INFO_DISABLED:=1}; : ${PKG_SQLITE3_SHA256SUM:=65cc0c3e9366f50c0679c5ccd31432cea894bc4a3e8947dabab88c8693263615}; : ${PKG_SQLITE3_VERSION:=3160200}; : ${PKG_SQLITE3_URL:=https://sqlite.org/2017/sqlite-autoconf-${PKG_SQLITE3_VERSION}.tar.gz}; @@ -413,7 +409,6 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_CMAKE_URL:=https://cmake.org/files/v${PKG_CMAKE_VERSION%.*}/cmake-${PKG_CMAKE_VERSION}.tar.gz}; : ${PKG_CMAKE_CFLAGS_CONFIGURE_EXTRA:="-g0 -O2"}; : ${PKG_CMAKE_CONFIGURE_ARGS:="--parallel=${DEFAULT_BUILD_CPUS} --prefix="}; -: ${PKG_CMAKE_DISABLED:=1}; : ${PKG_INPUTPROTO_SHA256SUM:=893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d}; : ${PKG_INPUTPROTO_VERSION:=2.3.2}; @@ -508,7 +503,6 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_CAIRO_URL:=http://cairographics.org/snapshots/cairo-${PKG_CAIRO_VERSION}.tar.xz}; : ${PKG_CAIRO_SHA256SUM:=5228e0a1f8fd14317f30f08f3dd72971bca432f8cdd2281d421fdcc2279de58c}; : ${PKG_CAIRO_CFLAGS_CONFIGURE_EXTRA:=-I${PREFIX_NATIVE}/include/freetype2}; -: ${PKG_CAIRO_DISABLED:=1}; : ${PKG_DBUS_VERSION:=1.11.20}; : ${PKG_DBUS_URL:=https://dbus.freedesktop.org/releases/dbus/dbus-${PKG_DBUS_VERSION}.tar.gz}; : ${PKG_DBUS_SHA256SUM:=7fd9d0536f7ec2f2afc94b84d5b5487f88c464e8d47c661d8e0b54aa83974bfa}; @@ -517,20 +511,16 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_PANGO_SHA256SUM:=5b11140590e632739e4151cae06b8116160d59e22bf36a3ccd5df76d1cf0383e}; : ${PKG_PANGO_URL:=http://ftp.gnome.org/pub/GNOME/sources/pango/${PKG_PANGO_VERSION%.*}/pango-${PKG_PANGO_VERSION}.tar.xz}; : ${PKG_PANGO_CFLAGS_CONFIGURE_EXTRA:=-I${PREFIX_NATIVE}/include/freetype2}; -: ${PKG_PANGO_DISABLED:=1}; : ${PKG_ATK_VERSION:=2.26.0}; : ${PKG_ATK_SHA256SUM:=eafe49d5c4546cb723ec98053290d7e0b8d85b3fdb123938213acb7bb4178827}; : ${PKG_ATK_URL:=http://ftp.gnome.org/pub/gnome/sources/atk/${PKG_ATK_VERSION%.*}/atk-${PKG_ATK_VERSION}.tar.xz}; -: ${PKG_ATK_DISABLED:=1}; : ${PKG_GDK_VERSION:=2.36.10}; : ${PKG_GDK_SHA256SUM:=f8f6fa896b89475c73b6e9e8d2a2b062fc359c4b4ccb8e96470d6ab5da949ace}; : ${PKG_GDK_URL:=http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${PKG_GDK_VERSION%.*}/gdk-pixbuf-${PKG_GDK_VERSION}.tar.xz}; -: ${PKG_GDK_DISABLED:=1}; : ${PKG_GTK2_SHA256SUM:=68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658}; : ${PKG_GTK2_VERSION:=2.24.31}; : ${PKG_GTK2_URL:=http://ftp.gnome.org/pub/gnome/sources/gtk+/${PKG_GTK2_VERSION%.*}/gtk+-${PKG_GTK2_VERSION}.tar.xz}; : ${PKG_GTK2_CFLAGS_CONFIGURE_EXTRA:="-I${PREFIX_NATIVE}/include/pango-1.0 -I${PREFIX_NATIVE}/include/gdk-pixbuf-2.0 -I${PREFIX_NATIVE}/include/atk-1.0 -I${PREFIX_NATIVE}/include/cairo -I${PREFIX_NATIVE}/include/glib-2.0 -I${PREFIX_NATIVE}/include/glib-2.0/gio -I${PREFIX_NATIVE}/lib/glib-2.0/include"}; -: ${PKG_GTK2_DISABLED:=1}; : ${PKG_IMLIB2_SHA256SUM:=3f698cd285cbbfc251c1d6405f249b99fafffafa5e0a5ecf0ca7ae49bbc0a272}; : ${PKG_IMLIB2_VERSION:=1.4.10}; : ${PKG_IMLIB2_URL:=https://ftp.osuosl.org/pub/blfs/conglomeration/imlib2/imlib2-${PKG_IMLIB2_VERSION}.tar.bz2}; @@ -682,7 +672,6 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_IRSSI_VERSION:=1.0.4}; : ${PKG_IRSSI_URL:=https://github.com/irssi/irssi/releases/download/${PKG_IRSSI_VERSION}/irssi-${PKG_IRSSI_VERSION}.tar.gz}; : ${PKG_IRSSI_CONFIGURE_ARGS_EXTRA:=--with-ncurses=${PREFIX_NATIVE}}; -: ${PKG_IRSSI_DISABLED:=1}; : ${PKG_JOHN_SHA256SUM:=952cf68369fb5b27f2d112ce7ca1eb16b975c85cbce8c658abb8bc5a20e1b266}; : ${PKG_JOHN_VERSION:=1.8.0}; : ${PKG_JOHN_URL:=http://www.openwall.com/john/j/john-${PKG_JOHN_VERSION}.tar.xz}; @@ -730,7 +719,6 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_MC_URL:=http://ftp.midnight-commander.org/mc-${PKG_MC_VERSION}.tar.xz}; : ${PKG_MC_CFLAGS_CONFIGURE_EXTRA:="-I${PREFIX_NATIVE}/include -I${PREFIX_NATIVE}/include/ncursesw"}; : ${PKG_MC_CONFIGURE_ARGS_EXTRA:="--with-screen=ncurses --x-includes=${PREFIX_NATIVE}/include/X11 --x-libraries=${PREFIX_NATIVE}/lib"}; -: ${PKG_MC_DISABLED:=1}; : ${PKG_MINGW_W64_SHA256SUM:=9bb5cd7df78817377841a63555e73596dc0af4acbb71b09bd48de7cf24aeadd2}; : ${PKG_MINGW_W64_VERSION:=5.0.1}; : ${PKG_MINGW_W64_URL:=https://sourceforge.mirrorservice.org/m/mi/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v${PKG_MINGW_W64_VERSION}.tar.bz2}; @@ -744,7 +732,6 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_MTR_SHA256SUM:=f2979db9e2f41aa8e6574e7771767c9afe111d9213814eb47f5e1e71876e4382}; : ${PKG_MTR_VERSION:=0.92}; : ${PKG_MTR_URL:=ftp://ftp.bitwizard.nl/mtr/mtr-${PKG_MTR_VERSION}.tar.gz}; -: ${PKG_MTR_DISABLED:=1}; : ${PKG_M4_SHA256SUM:=f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07}; : ${PKG_M4_VERSION:=1.4.18}; : ${PKG_M4_URL:=https://ftp.gnu.org/gnu/m4/m4-${PKG_M4_VERSION}.tar.xz}; diff --git a/vars/env.vars b/vars/env.vars index 818f87f..afbff05 100644 --- a/vars/env.vars +++ b/vars/env.vars @@ -50,7 +50,7 @@ : ${DEFAULT_GITROOT:=git://midipix.org}; : ${DEFAULT_GITROOT_HEAD:=git://midipix.org}; : ${DEFAULT_MAKE_INSTALL_VNAME:=DESTDIR}; -: ${DEFAULT_MAKEFLAGS_BUILD:=-j${BUILD_CPUS}}; +: ${DEFAULT_MAKEFLAGS_BUILD:=-j${DEFAULT_BUILD_CPUS}}; : ${DEFAULT_WGET_ARGS:="--no-check-certificate"}; # Build {log,status} & tarball names diff --git a/vars/gcc.vars b/vars/gcc.vars index 1290264..5391aee 100644 --- a/vars/gcc.vars +++ b/vars/gcc.vars @@ -140,17 +140,17 @@ pkg_gcc_stage1_all() { build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; fi; if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then - make ${MAKEFLAGS} all-gcc; + make ${PKG_MAKEFLAGS_BUILD} all-gcc; set_build_script_done "${PKG_NAME}" build -install; fi; if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then case "${PKG_NAME}" in gcc_stage1) - make ${MAKEFLAGS} install-gcc; ;; + make ${PKG_MAKEFLAGS_BUILD} install-gcc; ;; gcc_stage1_cross_x86_64_w64_mingw32) - make ${MAKEFLAGS} install-gcc; ;; + make ${PKG_MAKEFLAGS_BUILD} install-gcc; ;; gcc_stage1_native_x86_64_w64_mingw32) - make ${MAKEFLAGS} "DESTDIR=${PKG_PREFIX}" install-gcc; ;; + make ${PKG_MAKEFLAGS_BUILD} "DESTDIR=${PKG_PREFIX}" install-gcc; ;; esac; __="$(uname -s)"; if [ "${__#*CYGWIN*}" != "${__}" ]; then @@ -169,11 +169,11 @@ pkg_gcc_runtime_all() { build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, compiler runtime. if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then - make ${MAKEFLAGS} all-target-libgcc; + make ${PKG_MAKEFLAGS_BUILD} all-target-libgcc; set_build_script_done "${PKG_NAME}" build -install; fi; if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then - make ${MAKEFLAGS} install-target-libgcc; + make ${PKG_MAKEFLAGS_BUILD} install-target-libgcc; set_build_script_done "${PKG_NAME}" install finish; fi; exit 0; @@ -186,11 +186,11 @@ pkg_gcc_libstdcpp_v3_all() { build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, libstdc++-v3. if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then - make ${MAKEFLAGS} all-target-libstdc++-v3; + make ${PKG_MAKEFLAGS_BUILD} all-target-libstdc++-v3; set_build_script_done "${PKG_NAME}" build -install; fi; if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then - make ${MAKEFLAGS} install-target-libstdc++-v3; + make ${PKG_MAKEFLAGS_BUILD} install-target-libstdc++-v3; set_build_script_done "${PKG_NAME}" install finish; fi; exit 0; @@ -203,11 +203,11 @@ pkg_gcc_full_all() { build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, everything else. if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then - make ${MAKEFLAGS}; + make ${PKG_MAKEFLAGS_BUILD}; set_build_script_done "${PKG_NAME}" build -install; fi; if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then - make ${MAKEFLAGS} install; + make ${PKG_MAKEFLAGS_BUILD} install; set_build_script_done "${PKG_NAME}" install finish; fi; exit 0; @@ -243,14 +243,14 @@ pkg_gcc_native_all() { build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; fi; if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then - make ${MAKEFLAGS} all-gcc; - make ${MAKEFLAGS} all-target-libgcc; - make ${MAKEFLAGS} all-target-libstdc++-v3; - make ${MAKEFLAGS} all; + make ${PKG_MAKEFLAGS_BUILD} all-gcc; + make ${PKG_MAKEFLAGS_BUILD} all-target-libgcc; + make ${PKG_MAKEFLAGS_BUILD} all-target-libstdc++-v3; + make ${PKG_MAKEFLAGS_BUILD} all; set_build_script_done "${PKG_NAME}" build -install; fi; if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then - make ${MAKEFLAGS} "DESTDIR=${PKG_PREFIX}" install; + make ${PKG_MAKEFLAGS_BUILD} "DESTDIR=${PKG_PREFIX}" install; set_build_script_done "${PKG_NAME}" install finish; fi; exit 0; diff --git a/vars/git.vars b/vars/git.vars index 4e9b419..b89062b 100644 --- a/vars/git.vars +++ b/vars/git.vars @@ -4,7 +4,7 @@ pkg_git_install_post() { local __ _new; - for __ in $(find "${PKG_PREFIX}/share/man" -name "Git*::*" -type f); do + for __ in $(find "${PWD}/../destdir/share/man" -name "Git*::*" -type f); do _new="$(echo ${__} | sed "s/::/./g")"; build_fileop mv "${__}" "${_new}"; done; diff --git a/vars/libfirm.vars b/vars/libfirm.vars index 7b3556d..b989897 100644 --- a/vars/libfirm.vars +++ b/vars/libfirm.vars @@ -13,13 +13,13 @@ pkg_cparser_configure_pre() { }; pkg_libfirm_install_make() { - make ${MAKEFLAGS} DESTDIR=../../sysroot install; - make ${MAKEFLAGS} DESTDIR="${PREFIX_NATIVE}" install; + make ${PKG_MAKEFLAGS_BUILD} DESTDIR=../../sysroot install; + make ${PKG_MAKEFLAGS_BUILD} DESTDIR="${PREFIX_NATIVE}" install; }; pkg_cparser_install_make() { - make ${MAKEFLAGS} DESTDIR=../../sysroot install; - make ${MAKEFLAGS} DESTDIR="${PREFIX_NATIVE}" install; + make ${PKG_MAKEFLAGS_BUILD} DESTDIR=../../sysroot install; + make ${PKG_MAKEFLAGS_BUILD} DESTDIR="${PREFIX_NATIVE}" install; }; # vim:filetype=sh diff --git a/vars/psxstub.vars b/vars/psxstub.vars index af4bfd9..9577717 100644 --- a/vars/psxstub.vars +++ b/vars/psxstub.vars @@ -6,7 +6,7 @@ pkg_psxstub_install_make() { if [ "${TARGET}" = i686-nt32-midipix ] \ || [ "${TARGET}" = x86_64-nt64-midipix ]; then build_fileop cd "${PKG_BASE_DIR}/psxstub"; - make ${MAKEFLAGS} "DESTDIR=${PKG_PREFIX}" "TARGET=${TARGET}" install; + make ${PKG_MAKEFLAGS_BUILD} "DESTDIR=${PKG_PREFIX}" "TARGET=${TARGET}" install; if [ -e "${PKG_PREFIX}/lib/libpsxscl.a" ]; then build_fileop rm "${PKG_PREFIX}/lib/libpsxscl.a"; fi;