commit 6179765a14f61a5a00c421d00b17a9280e0a4256 Author: Jay Larson Date: Fri Jul 27 09:52:59 2018 -0500 First check in diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8bb2df6 --- /dev/null +++ b/Makefile @@ -0,0 +1,97 @@ +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation here: +# (http://www.gnu.org/licenses/gpl-2.0.html) +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +export ARCH = x86_64 +export DEPENDS = glibc +export BUILDDEPS = +export SRCPKG = $(PACKAGE) +export URL = https://sourceware.org/libffi/ +REPO = main +BRIEF = High level programming interface +DESC = The libffi library provides a portable, high level programming \ +interface to various calling conventions. This allows a programmer \ +to call any function specified by a call interface description at run-time +SNAPVER = 0 + +ARCHIVE := $(PWD)/SRC/$(shell ls SRC|egrep '(bz2|gz|tar|xz)$$'|tail -1) +TYPE := $(shell file -ib $(ARCHIVE)|cut -d';' -f1|tr -d '\n') +SRCDIR := $(shell tar -tf $(ARCHIVE)|head -1|sed 's/\/.*//') +PATCHDIR := $(PWD)/SRC/patches +export VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'| \ + sed 's/^-//')-$(SNAPVER) + +include /usr/share/snap/Makefile.snaplinux + +DEV := $(PWD)/$(PACKAGE)-dev +DEVROOT := $(DEV)/ROOT + +$(SRCDIR)/configure: $(ARCHIVE) + @if [ '$(TYPE)' == 'application/x-bzip2' ]; then \ + tar -jxf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-gzip' ]; then \ + tar -zxf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-tar' ]; then \ + tar -xf $(ARCHIVE); \ + elif [ '$(TYPE)' == 'application/x-xz' ]; then \ + tar -xf $(ARCHIVE); \ + else \ + echo 'Unable to determine archive type'; \ + exit 1; \ + fi + @touch $(SRCDIR)/configure + +$(SRCDIR)/Makefile: $(SRCDIR)/configure + @cd $(SRCDIR) && \ + for patch in `find $(PATCHDIR) -name \*.patch|sort`; do \ + patch --verbose -Np1 -i $$patch; \ + done + @cd $(SRCDIR); \ + ./configure \ + --prefix=/usr \ + --program-prefix='' \ + --build=x86_64-snap-linux-gnu \ + --host=x86_64-snap-linux-gnu \ + --target=x86_64-snap-linux-gnu + +$(SRCDIR)/*/.libs/libffi.so: $(SRCDIR)/Makefile + @cd $(SRCDIR) && make + +$(ROOT): $(SRCDIR)/*/.libs/libffi.so + @if [ -d $(ROOT) ]; then \ + touch $(ROOT); \ + else \ + mkdir -v $(ROOT); \ + fi + + @cd $(SRCDIR) && make install DESTDIR=$(ROOT) && \ + rm -v $(ROOT)/usr/share/info/dir && \ + install -v -d $(DEV)/SNAP && \ + install -v -d $(DEVROOT) && \ + for file in `find $(ROOT)| \ + egrep 'man3\/|pkgconfig\/|\.(h|la)$$'`; do \ + path=`dirname $$file|sed "s[$(ROOT)[$(DEVROOT)["`; \ + mkdir -p $$path; \ + mv $$file $$path; \ + done + @find $(ROOT) -type d -empty -delete && \ + cd $(DEV) && make -f ../Makefile.$(PACKAGE)-dev && mv *.snap ../ + +test: $(ROOT) + @cd $(SRCDIR); \ + make check + +clean: + @rm -rvf $(ROOT) \ + $(DEV) \ + $(SNAPINFO) \ + $(MANIFEST) \ + $(FILES) \ + $(SRCDIR) + diff --git a/Makefile.libffi-dev b/Makefile.libffi-dev new file mode 100644 index 0000000..c4d6d83 --- /dev/null +++ b/Makefile.libffi-dev @@ -0,0 +1,16 @@ +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation here: +# (http://www.gnu.org/licenses/gpl-2.0.html) +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +DEPENDS = libffi +REPO = dev +BRIEF = Development files for libffi +DESC = Development files for libffi + +include /usr/share/snap/Makefile.snaplinux diff --git a/SNAP/README b/SNAP/README new file mode 100644 index 0000000..19a3ff1 --- /dev/null +++ b/SNAP/README @@ -0,0 +1,3 @@ +This is the directory where the manifest, snapinfo, and files.tar.gz +files will be created. It is also where the usher file should be +placed if it is required by the package. diff --git a/SRC/libffi-3.2.tar.gz b/SRC/libffi-3.2.tar.gz new file mode 100644 index 0000000..761a1a8 Binary files /dev/null and b/SRC/libffi-3.2.tar.gz differ diff --git a/SRC/libffi-3.2.tar.gz.sha512 b/SRC/libffi-3.2.tar.gz.sha512 new file mode 100644 index 0000000..0f2cd21 --- /dev/null +++ b/SRC/libffi-3.2.tar.gz.sha512 @@ -0,0 +1 @@ +fed5f6eec86144608966857f54bd69a5faa43427f27bc9178ebe2c7a1cecf925c20dbd6df07a207ae469842874efcf5b99fb7e09db59cbd92ebfc0a7e1bb62b7 diff --git a/SRC/patches/01_include-fix.patch b/SRC/patches/01_include-fix.patch new file mode 100644 index 0000000..0e3c1ab --- /dev/null +++ b/SRC/patches/01_include-fix.patch @@ -0,0 +1,28 @@ +diff -Naur a/include/Makefile.in b/include/Makefile.in +--- a/include/Makefile.in 2014-11-11 06:31:12.000000000 -0600 ++++ b/include/Makefile.in 2016-09-29 13:11:39.172000000 -0500 +@@ -314,7 +314,7 @@ + AUTOMAKE_OPTIONS = foreign + DISTCLEANFILES = ffitarget.h + EXTRA_DIST = ffi.h.in ffi_common.h +-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include ++includesdir = $(includedir) + nodist_includes_HEADERS = ffi.h ffitarget.h + all: all-am + +diff -Naur a/libffi.pc.in b/libffi.pc.in +--- a/libffi.pc.in 2014-11-08 06:47:24.000000000 -0600 ++++ b/libffi.pc.in 2016-09-29 13:11:52.508000000 -0500 +@@ -2,10 +2,10 @@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ + toolexeclibdir=@toolexeclibdir@ +-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include ++includedir=@includedir@ + + Name: @PACKAGE_NAME@ + Description: Library supporting Foreign Function Interfaces + Version: @PACKAGE_VERSION@ + Libs: -L${toolexeclibdir} -lffi +-Cflags: -I${includedir} ++Cflags: diff --git a/SRC/patches/README b/SRC/patches/README new file mode 100644 index 0000000..253cdcd --- /dev/null +++ b/SRC/patches/README @@ -0,0 +1,2 @@ +Place any patch files here and preface each with a number indicating +the order of execution. Patch files are expected to use a .patch extension.