diff options
author | ashish <ashish@FreeBSD.org> | 2011-10-30 23:08:13 +0800 |
---|---|---|
committer | ashish <ashish@FreeBSD.org> | 2011-10-30 23:08:13 +0800 |
commit | d0e87c2ecd9c4f01743156b9278c6cb956bfb5e1 (patch) | |
tree | 22db4b859fc8ccd156a82aa8f5dadbe4d52fb07a /editors | |
parent | 8478394b24b50302ba34c6d7ffb541ff507c66ad (diff) | |
download | freebsd-ports-gnome-d0e87c2ecd9c4f01743156b9278c6cb956bfb5e1.tar.gz freebsd-ports-gnome-d0e87c2ecd9c4f01743156b9278c6cb956bfb5e1.tar.zst freebsd-ports-gnome-d0e87c2ecd9c4f01743156b9278c6cb956bfb5e1.zip |
- Update to bzr revision 106240
- Remove patches which are now in upstream[1]
- Add patch to implement process support for FreeBSD from Emacs bug# 5243[1]
PR: ports/161911[1]
Submitted by: Nali Toja <nalitoja@gmail.com>[1]
Diffstat (limited to 'editors')
-rw-r--r-- | editors/emacs-devel/Makefile | 2 | ||||
-rw-r--r-- | editors/emacs-devel/distinfo | 4 | ||||
-rw-r--r-- | editors/emacs-devel/files/patch-configure.in | 9 | ||||
-rw-r--r-- | editors/emacs-devel/files/patch-src_s_freebsd.h | 25 | ||||
-rw-r--r-- | editors/emacs-devel/files/patch-src_sysdep.c | 237 |
5 files changed, 240 insertions, 37 deletions
diff --git a/editors/emacs-devel/Makefile b/editors/emacs-devel/Makefile index 70da2920067f..c34ba95c971a 100644 --- a/editors/emacs-devel/Makefile +++ b/editors/emacs-devel/Makefile @@ -27,7 +27,7 @@ CONFLICTS= emacs-19.* emacs-21.* emacs-22.* emacs-23.* \ emacs-nox11-[0-9]* EMACS_VER= 24.0.90 -EMACS_REV= 106087 +EMACS_REV= 106240 GNU_CONFIGURE= yes USE_GMAKE= yes USE_NCURSES= yes diff --git a/editors/emacs-devel/distinfo b/editors/emacs-devel/distinfo index 15c49e73f97c..d5fcdba80a9c 100644 --- a/editors/emacs-devel/distinfo +++ b/editors/emacs-devel/distinfo @@ -1,2 +1,2 @@ -SHA256 (emacs-24.0.90.106087.tar.xz) = dac2e44e1c32dab7f527b6d9413c8a13ae1d32536c7516667a0fa6fccdaa357c -SIZE (emacs-24.0.90.106087.tar.xz) = 23349488 +SHA256 (emacs-24.0.90.106240.tar.xz) = afcb6851402e2321599e260b95c1953d01525a65f897c1abd9c5bb1600af590d +SIZE (emacs-24.0.90.106240.tar.xz) = 23337568 diff --git a/editors/emacs-devel/files/patch-configure.in b/editors/emacs-devel/files/patch-configure.in index 44b4c36ab072..d5fa248c35a2 100644 --- a/editors/emacs-devel/files/patch-configure.in +++ b/editors/emacs-devel/files/patch-configure.in @@ -53,12 +53,3 @@ $FreeBSD$ AC_MSG_CHECKING(if personality LINUX32 can be set) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])], -@@ -1369,7 +1340,7 @@ dnl check for GNU Make if we have GCC an - if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then - AC_MSG_CHECKING([whether we are using GNU Make]) - HAVE_GNU_MAKE=no -- testval=`make --version 2>/dev/null | grep 'GNU Make'` -+ testval=`${MAKE:-make} --version 2>/dev/null | grep 'GNU Make'` - if test "x$testval" != x; then - HAVE_GNU_MAKE=yes - else diff --git a/editors/emacs-devel/files/patch-src_s_freebsd.h b/editors/emacs-devel/files/patch-src_s_freebsd.h deleted file mode 100644 index c929037bdecc..000000000000 --- a/editors/emacs-devel/files/patch-src_s_freebsd.h +++ /dev/null @@ -1,25 +0,0 @@ - -$FreeBSD$ - ---- src/s/freebsd.h.orig -+++ src/s/freebsd.h -@@ -61,3 +61,19 @@ - - /* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */ - #define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS -+ -+#define INTERRUPT_INPUT -+ -+#define PTY_ITERATION int i; for (i = 0; i < 1; i++) -+#define PTY_NAME_SPRINTF /* none */ -+#define PTY_TTY_NAME_SPRINTF /* none */ -+#define PTY_OPEN \ -+ do \ -+ { \ -+ int slave; \ -+ if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) \ -+ fd = -1; \ -+ else \ -+ emacs_close (slave); \ -+ } \ -+ while (0) diff --git a/editors/emacs-devel/files/patch-src_sysdep.c b/editors/emacs-devel/files/patch-src_sysdep.c new file mode 100644 index 000000000000..820efd8f1e73 --- /dev/null +++ b/editors/emacs-devel/files/patch-src_sysdep.c @@ -0,0 +1,237 @@ + +$FreeBSD$ + +--- src/sysdep.c.orig ++++ src/sysdep.c +@@ -37,6 +37,13 @@ + #include "sysselect.h" + #include "blockinput.h" + ++#ifdef __FreeBSD__ ++#include <sys/sysctl.h> ++#include <sys/user.h> ++#include <sys/resource.h> */ ++#include <math.h> ++#endif ++ + #ifdef WINDOWSNT + #define read sys_read + #define write sys_write +@@ -2529,6 +2536,40 @@ + return proclist; + } + ++#elif defined (__FreeBSD__) ++ ++Lisp_Object ++list_system_processes () ++{ ++ int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PROC}; ++ size_t len; ++ struct kinfo_proc *procs; ++ size_t i; ++ ++ struct gcpro gcpro1; ++ Lisp_Object proclist = Qnil; ++ ++ if (sysctl (mib, 3, NULL, &len, NULL, 0) != 0) ++ return proclist; ++ ++ procs = xmalloc (len); ++ if (sysctl (mib, 3, procs, &len, NULL, 0) != 0) ++ { ++ xfree (procs); ++ return proclist; ++ } ++ ++ GCPRO1 (proclist); ++ len /= sizeof (struct kinfo_proc); ++ for (i = 0; i < len; i++) ++ proclist = Fcons (make_fixnum_or_float (procs[i].ki_pid), proclist); ++ UNGCPRO; ++ ++ xfree (procs); ++ ++ return proclist; ++} ++ + /* The WINDOWSNT implementation is in w32.c. + The MSDOS implementation is in dosfns.c. */ + #elif !defined (WINDOWSNT) && !defined (MSDOS) +@@ -3079,6 +3120,176 @@ + return attrs; + } + ++#elif defined(__FreeBSD__) ++ ++Lisp_Object ++system_process_attributes (Lisp_Object pid) ++{ ++ int proc_id; ++ int pagesize = getpagesize(); ++ int npages; ++ int fscale; ++ struct passwd *pw; ++ struct group *gr; ++ char *ttyname; ++ size_t len; ++ char args[MAXPATHLEN]; ++ EMACS_TIME t, now; ++ ++ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID}; ++ struct kinfo_proc proc; ++ size_t proclen = sizeof(proc); ++ ++ struct gcpro gcpro1, gcpro2; ++ Lisp_Object attrs = Qnil; ++ Lisp_Object decoded_comm; ++ ++ CHECK_NUMBER_OR_FLOAT (pid); ++ proc_id = FLOATP (pid) ? XFLOAT_DATA (pid) : XINT (pid); ++ mib[3] = proc_id; ++ ++ if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0) ++ return attrs; ++ ++ GCPRO2 (attrs, decoded_comm); ++ ++ attrs = Fcons (Fcons (Qeuid, make_fixnum_or_float(proc.ki_uid)), attrs); ++ ++ BLOCK_INPUT; ++ pw = getpwuid (proc.ki_uid); ++ UNBLOCK_INPUT; ++ if (pw) ++ attrs = Fcons (Fcons (Quser, build_string (pw->pw_name)), attrs); ++ ++ attrs = Fcons (Fcons (Qegid, make_fixnum_or_float(proc.ki_svgid)), attrs); ++ ++ BLOCK_INPUT; ++ gr = getgrgid (proc.ki_svgid); ++ UNBLOCK_INPUT; ++ if (gr) ++ attrs = Fcons (Fcons (Qgroup, build_string (gr->gr_name)), attrs); ++ ++ decoded_comm = code_convert_string_norecord ++ (make_unibyte_string (proc.ki_comm, strlen (proc.ki_comm)), ++ Vlocale_coding_system, 0); ++ ++ attrs = Fcons (Fcons (Qcomm, decoded_comm), attrs); ++ { ++ char state[2] = {'\0', '\0'}; ++ switch (proc.ki_stat) ++ { ++ case SRUN: ++ state[0] = 'R'; ++ break; ++ ++ case SSLEEP: ++ state[0] = 'S'; ++ break; ++ ++ case SLOCK: ++ state[0] = 'D'; ++ break; ++ ++ case SZOMB: ++ state[0] = 'Z'; ++ break; ++ ++ case SSTOP: ++ state[0] = 'T'; ++ break; ++ } ++ attrs = Fcons (Fcons (Qstate, build_string (state)), attrs); ++ } ++ ++ attrs = Fcons (Fcons (Qppid, make_fixnum_or_float (proc.ki_ppid)), attrs); ++ attrs = Fcons (Fcons (Qpgrp, make_fixnum_or_float (proc.ki_pgid)), attrs); ++ attrs = Fcons (Fcons (Qsess, make_fixnum_or_float (proc.ki_sid)), attrs); ++ ++ BLOCK_INPUT; ++ ttyname = proc.ki_tdev == NODEV ? NULL : devname (proc.ki_tdev, S_IFCHR); ++ UNBLOCK_INPUT; ++ if (ttyname) ++ attrs = Fcons (Fcons (Qtty, build_string (ttyname)), attrs); ++ ++ attrs = Fcons (Fcons (Qtpgid, make_fixnum_or_float (proc.ki_tpgid)), attrs); ++ attrs = Fcons (Fcons (Qminflt, make_fixnum_or_float (proc.ki_rusage.ru_minflt)), attrs); ++ attrs = Fcons (Fcons (Qmajflt, make_fixnum_or_float (proc.ki_rusage.ru_majflt)), attrs); ++ attrs = Fcons (Fcons (Qcminflt, make_number (proc.ki_rusage_ch.ru_minflt)), attrs); ++ attrs = Fcons (Fcons (Qcmajflt, make_number (proc.ki_rusage_ch.ru_majflt)), attrs); ++ ++#define TIMELIST(ts) \ ++ list3 (make_number (EMACS_SECS (ts) >> 16 & 0xffff), \ ++ make_number (EMACS_SECS (ts) & 0xffff), \ ++ make_number (EMACS_USECS (ts))) ++ ++ attrs = Fcons (Fcons (Qutime, TIMELIST(proc.ki_rusage.ru_utime)), attrs); ++ attrs = Fcons (Fcons (Qstime, TIMELIST(proc.ki_rusage.ru_stime)), attrs); ++ EMACS_ADD_TIME (t, proc.ki_rusage.ru_utime, proc.ki_rusage.ru_stime); ++ attrs = Fcons (Fcons (Qtime, TIMELIST(t)), attrs); ++ ++ attrs = Fcons (Fcons (Qcutime, TIMELIST(proc.ki_rusage_ch.ru_utime)), attrs); ++ attrs = Fcons (Fcons (Qcstime, TIMELIST(proc.ki_rusage_ch.ru_utime)), attrs); ++ EMACS_ADD_TIME (t, proc.ki_rusage_ch.ru_utime, proc.ki_rusage_ch.ru_stime); ++ attrs = Fcons (Fcons (Qctime, TIMELIST(t)), attrs); ++ ++ attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (proc.ki_numthreads)), attrs); ++ attrs = Fcons (Fcons (Qpri, make_number (proc.ki_pri.pri_native)), attrs); ++ attrs = Fcons (Fcons (Qnice, make_number (proc.ki_nice)), attrs); ++ attrs = Fcons (Fcons (Qstart, TIMELIST(proc.ki_start)), attrs); ++ attrs = Fcons (Fcons (Qvsize, make_number (proc.ki_size >> 10)), attrs); ++ attrs = Fcons (Fcons (Qrss, make_number (proc.ki_rssize * pagesize >> 10)), attrs); ++ ++ EMACS_GET_TIME (now); ++ EMACS_SUB_TIME (t, now, proc.ki_start); ++ attrs = Fcons (Fcons (Qetime, TIMELIST(t)), attrs); ++ ++#undef TIMELIST ++ ++ len = sizeof(fscale); ++ if (sysctlbyname ("kern.fscale", &fscale, &len, NULL, 0) == 0) ++ { ++ float pcpu; ++ fixpt_t ccpu; ++ len = sizeof (ccpu); ++ if (sysctlbyname ("kern.ccpu", &ccpu, &len, NULL, 0) == 0) ++ { ++ pcpu = 100.0 * ((double) proc.ki_pctcpu / fscale) ++ / (1.0 - exp(proc.ki_swtime * log((double) ccpu / fscale))); ++ attrs = Fcons (Fcons (Qpcpu, make_fixnum_or_float(pcpu)), attrs); ++ } ++ } ++ ++ len = sizeof(npages); ++ if (sysctlbyname ("hw.availpages", &npages, &len, NULL, 0) == 0) ++ { ++ float pmem = proc.ki_flag & P_INMEM ++ ? 100.0 * ((float) proc.ki_rssize / npages) ++ : 0.0; ++ attrs = Fcons (Fcons (Qpmem, make_fixnum_or_float(pmem)), attrs); ++ } ++ ++ mib[2] = KERN_PROC_ARGS; ++ len = MAXPATHLEN; ++ if (sysctl (mib, 4, args, &len, NULL, 0) == 0) ++ { ++ int i; ++ for (i = 0; i < len; i++) ++ { ++ if (! args[i] && i < len - 1) ++ args[i] = ' '; ++ } ++ ++ decoded_comm = code_convert_string_norecord ++ (make_unibyte_string (args, strlen (args)), ++ Vlocale_coding_system, 0); ++ ++ attrs = Fcons (Fcons (Qargs, decoded_comm), attrs); ++ } ++ ++ UNGCPRO; ++ return attrs; ++} ++ + /* The WINDOWSNT implementation is in w32.c. + The MSDOS implementation is in dosfns.c. */ + #elif !defined (WINDOWSNT) && !defined (MSDOS) |