diff options
-rwxr-xr-x | make.sh | 18 | ||||
-rw-r--r-- | util/arid.cpp | 29 |
2 files changed, 47 insertions, 0 deletions
@@ -13,6 +13,10 @@ export PKG_BASE=$(realpath "$(dirname "$0")") . "${PKG_BASE}/helper.sh" +if [[ ! -x ${PKG_BASE}/util/arid || ${PKG_BASE}/util/arid -ot ${PKG_BASE}/util/arid.cpp ]]; then + g++ -I ~/menes -o "${PKG_BASE}"/util/arid{,.cpp} +fi + if [[ ! -x ${PKG_BASE}/util/ldid || ${PKG_BASE}/util/ldid -ot ${PKG_BASE}/util/ldid.cpp ]]; then g++ -I ~/menes -o "${PKG_BASE}"/util/ldid{,.cpp} -x c "${PKG_BASE}"/util/{lookup2,sha1}.c fi @@ -105,6 +109,7 @@ export -f pkg:setup function pkg:configure() { PKG_CONFIG="$(realpath "${PKG_BASE}/util/pkg-config.sh")" \ ac_cv_prog_cc_g=no \ + ac_cv_prog_cxx_g=no \ "${PKG_CONF}" \ --build=x86_64-unknown-linux-gnu \ --host="${PKG_TARG}" \ @@ -179,5 +184,18 @@ if [[ -e "${PKG_BASE}/arch/${PKG_ARCH}/strip" ]]; then . "${PKG_BASE}/arch/${PKG_ARCH}/strip" fi +find "${PKG_DEST}" -type f -name '*.elc' -print0 | while read -r -d $'\0' bin; do + sed -i -e ' + s/^;;; Compiled by .*$// + s/^;;; from file .*$// + s/^;;; in Emacs version .*$// + s/^;;; with .*$// + ' "${bin}" +done + +find "${PKG_DEST}" -type f -name '*.a' -print0 | while read -r -d $'\0' bin; do + "${PKG_BASE}/util/arid" "${bin}" +done + cp -a "${PKG_DATA}/_metadata/version" "${PKG_STAT}/data-ver" echo "${PKG_HASH}" >"${PKG_STAT}/data-md5" diff --git a/util/arid.cpp b/util/arid.cpp new file mode 100644 index 000000000..ab2bccb60 --- /dev/null +++ b/util/arid.cpp @@ -0,0 +1,29 @@ +#include <iostream> +#include "minimal/mapping.h" + +struct ar_hdr { + char ar_name[16]; + char ar_date[12]; + char ar_uid[6]; + char ar_gid[6]; + char ar_mode[8]; + char ar_size[10]; +#define ARFMAG "`\n" + char ar_fmag[2]; +}; + +int main(int argc, char *argv[]) { + size_t size; + _assert(argc == 2); + uint8_t *data = reinterpret_cast<uint8_t *>(map(argv[1], 0, _not(size_t), &size, false)); + data += 8; + uint8_t *end = data + size; + while (end - data >= sizeof(struct ar_hdr)) { + struct ar_hdr *head = reinterpret_cast<struct ar_hdr *>(data); + memset(head->ar_date + 1, ' ', sizeof(head->ar_date) - 1); + head->ar_date[0] = '0'; + size_t length = strtoul(head->ar_size, NULL, 10); + data += length + sizeof(struct ar_hdr); + } + return 0; +} |