diff options
-rw-r--r-- | .SRCINFO | 44 | ||||
-rw-r--r-- | 0000-kernel-4.11-signal_pending.patch | 17 | ||||
-rw-r--r-- | 0001-kernel-5.6-proc_dir_entry-proc_ops.patch | 32 | ||||
-rw-r--r-- | 0002-kernel-4.7-async-initialized.patch | 18 | ||||
-rw-r--r-- | 0003-kernel-5.12-tty-low_latency.patch | 31 | ||||
-rw-r--r-- | 0004-tty_unregister_driver-void.patch | 32 | ||||
-rw-r--r-- | 0005-kernel-5.14-unsigned-tty-flow-tty.patch | 47 | ||||
-rw-r--r-- | 0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch | 44 | ||||
-rw-r--r-- | 0007-kernel-6.0-serial_UART_XMIT_SIZE.patch | 18 | ||||
-rw-r--r-- | 0008-kernel-6.0-set_termios-const-ktermios.patch | 18 | ||||
-rw-r--r-- | 0009-kernel-6.6-struct-tty_operations-write-size_t.patch | 21 | ||||
-rw-r--r-- | PKGBUILD | 149 |
12 files changed, 436 insertions, 35 deletions
@@ -1,10 +1,8 @@ -# Generated by mksrcinfo v8 -# Tue Jul 25 02:10:46 UTC 2017 pkgbase = perle-serial pkgdesc = kernel module driver for Perle UltraPort SI Express PCI-RAS modem SPEED LE multi I/O serial parallel RS-232 422 485 port - pkgver = 3.9.0_14 - pkgrel = 1 - url = http://downloads.comtrol.com/html/RPuPCI_drivers.htm + pkgver = 3.9.2.4 + pkgrel = 6 + url = https://www.perle.com/downloads/mp_speedle.shtml install = perle-serial-install.sh arch = i686 arch = x86_64 @@ -19,8 +17,38 @@ pkgbase = perle-serial depends = dkms depends = linux-headers backup = etc/perle-serial-setultrap.sh - source = https://www.perle.com//downloads/drivers/ultraport/linux/perle-serial-3.9.0-14.tgz - sha256sums = 7ded341fe93f76fc5d607a3888ac0407e78c9165ad8fb297ec9e375269e72f8b + source = https://www.perle.com/downloads/drivers/ultraport/linux/perle-serial-3.9.2-4.tgz + source = 0000-kernel-4.11-signal_pending.patch + source = 0001-kernel-5.6-proc_dir_entry-proc_ops.patch + source = 0002-kernel-4.7-async-initialized.patch + source = 0003-kernel-5.12-tty-low_latency.patch + source = 0004-tty_unregister_driver-void.patch + source = 0005-kernel-5.14-unsigned-tty-flow-tty.patch + source = 0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch + source = 0007-kernel-6.0-serial_UART_XMIT_SIZE.patch + source = 0008-kernel-6.0-set_termios-const-ktermios.patch + source = 0009-kernel-6.6-struct-tty_operations-write-size_t.patch + md5sums = 85e9617af62fcab55c684fa8e4b26987 + md5sums = 52f87acfeb5f5820a74ad6aa74d18acf + md5sums = 6dac46dc8f094dd8f8b760a68414bd0b + md5sums = f97869736f93fb70b9f034106697c0a2 + md5sums = d85366f7566046dbd580850fbfa640e0 + md5sums = 7d7c57fc3a46599aebede7f940c5c5a8 + md5sums = 47a81ca7f524a3e86abb72ae872bac74 + md5sums = 128ee03b62d13384a249f6f6244d0214 + md5sums = 3058470a7727ad05608a292d4850e052 + md5sums = ac437dd477d593c042af2752d1dfaf33 + md5sums = b83c590138dcb1c23ad523bcbeb7ad72 + sha256sums = d9d61a941ecfd2ff41d5450557eb9071d934497dbd10229e97c8f88b48cb9a58 + sha256sums = 691e0d8d348ab9f19f0398ff79e0d4780d5110e3dd11acf3261e3f73b2983ea1 + sha256sums = 31e0d244d22b16d2c0b783e38bac2d96a53cbe0ce14f2fe11142a8691ce952aa + sha256sums = 8dcb2c32d641cef471fe45db1e122492a82b3439c55be8c530758d519eeae289 + sha256sums = 3e2b44baf4d8e29ce5e084485f0882a8f06a1d1b045a93ffa5cdd2f8112d1bfa + sha256sums = 7c0c4af907e68a2641beffd20bf487b47cf58ca79dea45276b5046fe81f436bc + sha256sums = 0c942db9e9a5f41873cc2ba6edae3372da672e8f82ea5c1266a2c905d4373319 + sha256sums = 4c9e99b780353f270b96e57cd25e4ebf8e3058fa44105422ada42eb87cf798b2 + sha256sums = 517e2aa68ee91bf2d8c0d6896dee2367cbc29f98ed5a3eb8392ca32028cd9b84 + sha256sums = 9780f642f30b0870c78864418f5a46bc189f27249eba312bec91538f622c2334 + sha256sums = 9c93b5166e4b13b7a2cc39868dc578a621bbe07d7295a4d10d89328cf264d055 pkgname = perle-serial - diff --git a/0000-kernel-4.11-signal_pending.patch b/0000-kernel-4.11-signal_pending.patch new file mode 100644 index 000000000000..d356aca2430d --- /dev/null +++ b/0000-kernel-4.11-signal_pending.patch @@ -0,0 +1,17 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0000/pparport26/pparport_pc.c perle-serial-3.9.2/pparport26/pparport_pc.c +--- perle-serial-3.9.2.orig-0000/pparport26/pparport_pc.c 2018-06-05 21:24:34.315840847 -0400 ++++ perle-serial-3.9.2/pparport26/pparport_pc.c 2018-06-05 21:24:10.199248040 -0400 +@@ -66,10 +66,13 @@ + #include <asm/dma.h> + #include <asm/uaccess.h> + + #include <linux/parport.h> + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++#include <linux/sched/signal.h> ++#endif + + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) + #define __devinit + #define __devinitdata + #define __devexit diff --git a/0001-kernel-5.6-proc_dir_entry-proc_ops.patch b/0001-kernel-5.6-proc_dir_entry-proc_ops.patch new file mode 100644 index 000000000000..c76a2ebce6cf --- /dev/null +++ b/0001-kernel-5.6-proc_dir_entry-proc_ops.patch @@ -0,0 +1,32 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0001/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0001/pserial/perle-serial.c 2018-03-26 14:58:05.000000000 -0400 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2020-05-21 01:14:50.996007456 -0400 +@@ -463,19 +463,28 @@ static struct proc_dir_entry *ps_proc_fi + static int ps_read_proc(struct seq_file *m, void *v); + static int ps_open_proc(struct inode *inode, struct file *file) + { + return single_open(file, ps_read_proc, NULL); + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) ++static const struct proc_ops ps_proc_fops = { ++ .proc_open = ps_open_proc, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release, ++}; ++#else + static const struct file_operations ps_proc_fops = { + .owner = THIS_MODULE, + .open = ps_open_proc, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, + }; + #endif + #endif ++#endif + + static inline int ps_paranoia_check(struct ps_async_struct *info, + struct tty_struct *tty, const char *routine) + { + #ifdef SERIAL_PARANOIA_CHECK diff --git a/0002-kernel-4.7-async-initialized.patch b/0002-kernel-4.7-async-initialized.patch new file mode 100644 index 000000000000..03a177bad8f1 --- /dev/null +++ b/0002-kernel-4.7-async-initialized.patch @@ -0,0 +1,18 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0002/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0002/pserial/perle-serial.c 2021-09-14 11:10:48.772141908 -0400 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:10:59.679207370 -0400 +@@ -70,10 +70,14 @@ + * SERIAL_PARANOIA_CHECK + * Check the magic number for the async_structure where + * ever possible. + */ + ++#undef __KERNEL__ ++#include <linux/tty_flags.h> ++#define __KERNEL__ 1 ++ + #include <linux/version.h> + #if ! defined (LINUX_VERSION_CODE) + #error "Kernel version is not set" + #endif + diff --git a/0003-kernel-5.12-tty-low_latency.patch b/0003-kernel-5.12-tty-low_latency.patch new file mode 100644 index 000000000000..e2d22d7cca06 --- /dev/null +++ b/0003-kernel-5.12-tty-low_latency.patch @@ -0,0 +1,31 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0003/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0003/pserial/perle-serial.c 2021-09-14 11:15:23.675520937 -0400 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:19:15.647322399 -0400 +@@ -2446,11 +2446,13 @@ static int set_serial_info(struct ps_asy + info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) | + (info->flags & ASYNC_INTERNAL_FLAGS)); + state->custom_divisor = new_serial.custom_divisor; + state->close_delay = new_serial.close_delay * HZ/100; + state->closing_wait = new_serial.closing_wait * HZ/100; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0) + TTY_LOW_LATENCY(info->tty) = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; ++#endif + info->xmit_fifo_size = state->xmit_fifo_size = + new_serial.xmit_fifo_size; + + if ((state->type != PORT_UNKNOWN) && state->port) { + /* UltraPort 16 SI uses 16 bytes per port */ +@@ -3626,11 +3628,13 @@ static int ps_open(struct tty_struct *tt + printk("ps_open %s%d, count = %d\n", tty->driver->name, info->line, + info->state->count); + #endif + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0) + TTY_LOW_LATENCY(info->tty) = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; ++#endif + + /* + * This relies on lock_kernel() stuff so wants tidying for 2.5 + */ + if (!tmp_buf) { diff --git a/0004-tty_unregister_driver-void.patch b/0004-tty_unregister_driver-void.patch new file mode 100644 index 000000000000..17aad89be682 --- /dev/null +++ b/0004-tty_unregister_driver-void.patch @@ -0,0 +1,32 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0004/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0004/pserial/perle-serial.c 2021-09-14 11:26:40.756869474 -0400 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:26:52.547298877 -0400 +@@ -5201,26 +5201,23 @@ void ps_unregister_serial(int line) + } + + static void __exit ps_fini(void) + { + // unsigned long flags; +- int e1; + int i; + struct ps_async_struct *info; + + printk(KERN_INFO "Unloading %s: version %s\n", serial_name, serial_version); + #ifdef USE_PS_TIMER + del_timer_sync(&serial_timer); + #endif + + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + remove_bh( PERLE_SERIAL_BH ); +- if ((e1 = tty_unregister_driver(&serial_driver))) +- printk("serial: failed to unregister Perle's serial driver (%d)\n", e1); ++ tty_unregister_driver(&serial_driver); + #else +- if ((e1 = tty_unregister_driver(serial_driver))) +- printk("serial: failed to unregister Perle's serial driver (%d)\n", e1); ++ tty_unregister_driver(serial_driver); + put_tty_driver(serial_driver); + #endif + for (i = 0; i < NR_PORTS; i++) { + if ((info = ps_table[i].info)) { + // if (info->state->XRflatreg) // This code causes oops. Remove for now plus all other Sleep calls. diff --git a/0005-kernel-5.14-unsigned-tty-flow-tty.patch b/0005-kernel-5.14-unsigned-tty-flow-tty.patch new file mode 100644 index 000000000000..7b08e33116d8 --- /dev/null +++ b/0005-kernel-5.14-unsigned-tty-flow-tty.patch @@ -0,0 +1,47 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0005/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0005/pserial/perle-serial.c 2021-09-14 11:28:43.064657062 -0400 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:31:16.193566625 -0400 +@@ -947,10 +947,14 @@ static _INLINE_ void receive_chars(struc + #else + tty_flip_buffer_push(tty); + #endif + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)) ++#define stopped flow.stopped /* tty->stopped */ ++#endif ++ + static _INLINE_ void transmit_chars(struct ps_async_struct *info, int *intr_done) + { + int count; + + /* echo suppression logic */ +@@ -2195,20 +2199,28 @@ static int ps_write(struct tty_struct * + } + #endif // > 2.6.10 + + + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)) ++static unsigned int ps_write_room(struct tty_struct *tty) ++#else + static int ps_write_room(struct tty_struct *tty) ++#endif + { + struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data; + + if (ps_paranoia_check(info, tty, "ps_write_room")) + return 0; + return CIRC_SPACE(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE); + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)) ++static unsigned int ps_chars_in_buffer(struct tty_struct *tty) ++#else + static int ps_chars_in_buffer(struct tty_struct *tty) ++#endif + { + struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data; + + if (ps_paranoia_check(info, tty, "ps_chars_in_buffer")) + return 0; diff --git a/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch b/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch new file mode 100644 index 000000000000..f701c0d4dd39 --- /dev/null +++ b/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch @@ -0,0 +1,44 @@ +diff -pNaru5 perle-serial-3.9.2.orig-0006/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c +--- perle-serial-3.9.2.orig-0006/pserial/perle-serial.c 2021-11-20 16:06:52.656295643 -0500 ++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-11-20 16:08:20.147780960 -0500 +@@ -4986,12 +4986,12 @@ static int __init ps_init(void) + { + panic("Couldn't register Perle's serial driver\n"); + } + + #else // At least 2.5.0 kernel. +- serial_driver = alloc_tty_driver(NR_PORTS); +- if (!serial_driver){ ++ serial_driver = tty_alloc_driver(NR_PORTS,0); ++ if (IS_ERR(serial_driver)){ + printk(KERN_ERR "Couldn't allocate Perle serial driver\n"); + return -ENOMEM; + } + serial_driver->owner = THIS_MODULE; + serial_driver->driver_name = "perle-serial"; +@@ -5006,11 +5006,11 @@ static int __init ps_init(void) + serial_driver->flags = TTY_DRIVER_REAL_RAW ; + + tty_set_operations(serial_driver, &ps_ops); + if( (rc = tty_register_driver(serial_driver)) < 0 ) + { +- put_tty_driver(serial_driver); ++ tty_driver_kref_put(serial_driver); + printk(KERN_ERR "Couldn't register Perle serial driver\n"); + return rc; + } + + #endif +@@ -5226,11 +5226,11 @@ static void __exit ps_fini(void) + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + remove_bh( PERLE_SERIAL_BH ); + tty_unregister_driver(&serial_driver); + #else + tty_unregister_driver(serial_driver); +- put_tty_driver(serial_driver); ++ tty_driver_kref_put(serial_driver); + #endif + for (i = 0; i < NR_PORTS; i++) { + if ((info = ps_table[i].info)) { + // if (info->state->XRflatreg) // This code causes oops. Remove for now plus all other Sleep calls. + // ps_resetSLEEP(info); /* reset sleep mode for Exar uarts */ diff --git a/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch b/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch new file mode 100644 index 000000000000..6e21b0e8c281 --- /dev/null +++ b/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch @@ -0,0 +1,18 @@ +diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c +--- a/pserial/perle-serial.c 2023-01-29 04:08:09.639903778 -0500 ++++ b/pserial/perle-serial.c 2023-01-29 04:12:12.648878696 -0500 +@@ -176,10 +176,14 @@ + #include <linux/serial.h> + #include <linux/serial_reg.h> + #endif + #endif + #include <asm/serial.h> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,0,0) ++#include <linux/serial_core.h> ++#define SERIAL_XMIT_SIZE UART_XMIT_SIZE ++#endif + #include <linux/errno.h> + #include <linux/signal.h> + #include <linux/sched.h> + #include <linux/timer.h> + #include <linux/interrupt.h> diff --git a/0008-kernel-6.0-set_termios-const-ktermios.patch b/0008-kernel-6.0-set_termios-const-ktermios.patch new file mode 100644 index 000000000000..6b9aa983a7d6 --- /dev/null +++ b/0008-kernel-6.0-set_termios-const-ktermios.patch @@ -0,0 +1,18 @@ +diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c +--- a/pserial/perle-serial.c 2023-01-29 04:15:33.238149934 -0500 ++++ b/pserial/perle-serial.c 2023-01-29 04:17:17.041142672 -0500 +@@ -3153,11 +3153,13 @@ static int ps_ioctl(struct tty_struct *t + return -ENOIOCTLCMD; + } + return 0; + } + +-#if (LINUX_VERSION_CODE > 0x20612) // 2.6.18 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0) ++static void ps_set_termios(struct tty_struct *tty, const struct ktermios *old_termios) ++#elif (LINUX_VERSION_CODE > 0x20612) // 2.6.18 + static void ps_set_termios(struct tty_struct *tty, struct ktermios *old_termios) + #else + static void ps_set_termios(struct tty_struct *tty, struct termios *old_termios) + #endif + { diff --git a/0009-kernel-6.6-struct-tty_operations-write-size_t.patch b/0009-kernel-6.6-struct-tty_operations-write-size_t.patch new file mode 100644 index 000000000000..dbd8b090bcd5 --- /dev/null +++ b/0009-kernel-6.6-struct-tty_operations-write-size_t.patch @@ -0,0 +1,21 @@ +diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c +--- a/pserial/perle-serial.c 2023-12-19 00:14:42.357856502 -0500 ++++ b/pserial/perle-serial.c 2023-12-19 00:14:51.337954324 -0500 +@@ -2158,12 +2158,17 @@ static int ps_write(struct tty_struct * + } + + #else // linux kernel is at least 2.6.10 - write prototype has "from_user" + // removed from parameter list. + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0) + static int ps_write(struct tty_struct * tty, + const unsigned char *buf, int count) ++#else ++static ssize_t ps_write(struct tty_struct * tty, ++ const unsigned char *buf, size_t count) ++#endif + { + int c, ret = 0; + struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data; + unsigned long flags; + @@ -3,6 +3,10 @@ _opt_DKMS=1 # This can be toggled between installs _opt_PARALLEL=0 # 0 for SPEED without parallel port, 1 to enable parallel support +#export KERNELRELEASE="$(basename $(dirname /usr/lib/modules/6.6.*/modules.alias))" + +# Todo: /dev/ttyPS* should be created dynamically instead of all at once + # See /etc/perle-serial-setultrap.sh for persistent port modes # Perle Ultraport 1 2 4 8 8i 16 @@ -74,19 +78,54 @@ _opt_PARALLEL=0 # 0 for SPEED without parallel port, 1 to enable parallel set -u pkgname='perle-serial' -pkgver='3.9.0_14' -pkgrel='1' +#_pkgver='3.9.0-14' +_pkgver='3.9.2-4' +pkgver="${_pkgver//-/.}" +pkgrel='6' pkgdesc='kernel module driver for Perle UltraPort SI Express PCI-RAS modem SPEED LE multi I/O serial parallel RS-232 422 485 port' arch=('i686' 'x86_64') -url='http://downloads.comtrol.com/html/RPuPCI_drivers.htm' +url='https://www.perle.com/downloads/mp_speedle.shtml' license=('GPL') depends=('awk') makedepends=('gzip' 'findutils' 'sed' 'diffutils' 'patch') backup=('etc/perle-serial-setultrap.sh') install="${pkgname}-install.sh" -_srcdir="${pkgname}-${pkgver%%_*}" -source=("https://www.perle.com//downloads/drivers/ultraport/linux/perle-serial-${pkgver//_/-}.tgz") -sha256sums=('7ded341fe93f76fc5d607a3888ac0407e78c9165ad8fb297ec9e375269e72f8b') +_srcdir="${pkgname}-${_pkgver%%-*}" +source=( + "https://www.perle.com/downloads/drivers/ultraport/linux/perle-serial-${_pkgver}.tgz" + '0000-kernel-4.11-signal_pending.patch' + '0001-kernel-5.6-proc_dir_entry-proc_ops.patch' + '0002-kernel-4.7-async-initialized.patch' + '0003-kernel-5.12-tty-low_latency.patch' + '0004-tty_unregister_driver-void.patch' + '0005-kernel-5.14-unsigned-tty-flow-tty.patch' + '0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch' + '0007-kernel-6.0-serial_UART_XMIT_SIZE.patch' + '0008-kernel-6.0-set_termios-const-ktermios.patch' + '0009-kernel-6.6-struct-tty_operations-write-size_t.patch' +) +md5sums=('85e9617af62fcab55c684fa8e4b26987' + '52f87acfeb5f5820a74ad6aa74d18acf' + '6dac46dc8f094dd8f8b760a68414bd0b' + 'f97869736f93fb70b9f034106697c0a2' + 'd85366f7566046dbd580850fbfa640e0' + '7d7c57fc3a46599aebede7f940c5c5a8' + '47a81ca7f524a3e86abb72ae872bac74' + '128ee03b62d13384a249f6f6244d0214' + '3058470a7727ad05608a292d4850e052' + 'ac437dd477d593c042af2752d1dfaf33' + 'b83c590138dcb1c23ad523bcbeb7ad72') +sha256sums=('d9d61a941ecfd2ff41d5450557eb9071d934497dbd10229e97c8f88b48cb9a58' + '691e0d8d348ab9f19f0398ff79e0d4780d5110e3dd11acf3261e3f73b2983ea1' + '31e0d244d22b16d2c0b783e38bac2d96a53cbe0ce14f2fe11142a8691ce952aa' + '8dcb2c32d641cef471fe45db1e122492a82b3439c55be8c530758d519eeae289' + '3e2b44baf4d8e29ce5e084485f0882a8f06a1d1b045a93ffa5cdd2f8112d1bfa' + '7c0c4af907e68a2641beffd20bf487b47cf58ca79dea45276b5046fe81f436bc' + '0c942db9e9a5f41873cc2ba6edae3372da672e8f82ea5c1266a2c905d4373319' + '4c9e99b780353f270b96e57cd25e4ebf8e3058fa44105422ada42eb87cf798b2' + '517e2aa68ee91bf2d8c0d6896dee2367cbc29f98ed5a3eb8392ca32028cd9b84' + '9780f642f30b0870c78864418f5a46bc189f27249eba312bec91538f622c2334' + '9c93b5166e4b13b7a2cc39868dc578a621bbe07d7295a4d10d89328cf264d055') _opt_SERIAL=1 # This is for bug testing dkms only. All cards have serial ports so this should always be enabled. @@ -147,22 +186,90 @@ prepare() { sed -e "s|__DATE__|\"${_dt}\"|g" -e "s|__TIME__|\"${_tm}\"|g" -i 'pparport26/pparport_pc.c' # Improve install + #cp -p 'pserial/Makefile'{,.Arch} + #cp -p 'pparport26/Makefile'{,.Arch} sed -e 's:lib/:usr/lib/:g' \ - -e '# Forgot to clean a few things' \ - -e '/\*\.o\.cmd/ s:^.*$:& *.symvers *.order *.mod.c .*.ko.cmd .*.o.d\n\trm -rf .tmp_versions:g' \ + -e '# Forgot to clean a few things and some new files for gcc8' \ + -e '/\*\.o\.cmd/ s:^.*$:& *.symvers *.order *.mod.c .*.ko.cmd .*.o.d .cache.mk\n\trm -rf .tmp_versions:g' \ + -e '# Switch SUBDIRS= to M= for Kernel 5.4' \ + -e 's:SUBDIRS=:M=$(PWD) &:g' \ + -e '/^KERNEL_/ s:shell uname -r:shell echo "$(KERNELRELEASE)":g' \ + -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \ + -e 's:shell uname -r:KERNELRELEASE:g' \ + -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \ + -e '# Fix by changing the detection var.' \ + -e '# SUBDIRS makes more sense to me because I can see it in the Makefile!' \ + -e 's:^ifeq (\$(KERNELRELEASE),):ifeq (\$(SUBDIRS),):g' \ + -e '# Disable stuff only used for make install' \ + -e '/^base =/,/^$/ d' \ + -e '# Disable non kernel utilities' \ + -e 's:^#UTILS:# &:g' \ + -e '# Move utils to separate target' \ + -e '/^\s*all:/ s:$(UTILS).*$::g' \ + -e 's@^install:@utils: $(UTILS)\n\n&@g' \ + -e '1i KERNELRELEASE?=$(shell uname -r)' \ -i 'pserial/Makefile' 'pparport26/Makefile' + ! test -s 'pserial/Makefile.Arch' || echo "${}" + ! test -s 'pparport26/Makefile.Arch' || echo "${}" + + # Patch + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0000}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0000,} > '0000-kernel-4.11-signal_pending.patch' + patch -Nup1 -i "${srcdir}/0000-kernel-4.11-signal_pending.patch" + + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0001}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0001,} > '0001-kernel-5.6-proc_dir_entry-proc_ops.patch' + patch -Nup1 -i "${srcdir}/0001-kernel-5.6-proc_dir_entry-proc_ops.patch" + + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0002}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0002,} > '0002-kernel-4.7-async-initialized.patch' + patch -Nup1 -i "${srcdir}/0002-kernel-4.7-async-initialized.patch" + + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0003}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0003,} > '0003-kernel-5.12-tty-low_latency.patch' + patch -Nup1 -i "${srcdir}/0003-kernel-5.12-tty-low_latency.patch" + + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0004}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0004,} > '0004-tty_unregister_driver-void.patch' + patch -Nup1 -i "${srcdir}/0004-tty_unregister_driver-void.patch" + + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0005}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0005,} > '0005-kernel-5.14-unsigned-tty-flow-tty.patch' + patch -Nup1 -i "${srcdir}/0005-kernel-5.14-unsigned-tty-flow-tty.patch" + + # http://lkml.iu.edu/hypermail/linux/kernel/2107.2/08799.html [PATCH 5/8] tty: drop alloc_tty_driver + # http://lkml.iu.edu/hypermail/linux/kernel/2107.2/08801.html [PATCH 7/8] tty: drop put_tty_driver + #cp -pr "${srcdir}/${_srcdir}"{,.orig-0006}; false + #diff -pNaru5 perle-serial-3.9.2{.orig-0006,} > '0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch' + patch -Nup1 -i "${srcdir}/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch" + + # https://lore.kernel.org/linux-arm-kernel/6fb33489-946f-ad92-df35-7f608420bc7@linux.intel.com/T/ + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + # diff -pNaru5 'a' 'b' > '0007-kernel-6.0-serial_UART_XMIT_SIZE.patch' + patch -Nup1 -i "${srcdir}/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch" + + # https://lore.kernel.org/linux-arm-kernel/20220816115739.10928-9-ilpo.jarvinen@linux.intel.com/T/ + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + # diff -pNaru5 'a' 'b' > '0008-kernel-6.0-set_termios-const-ktermios.patch' + patch -Nup1 -i "${srcdir}/0008-kernel-6.0-set_termios-const-ktermios.patch" + + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + # diff -pNaru5 'a' 'b' > '0009-kernel-6.6-struct-tty_operations-write-size_t.patch' + patch -Nup1 -i "${srcdir}/0009-kernel-6.6-struct-tty_operations-write-size_t.patch" + set +u } build() { set -u cd "${_srcdir}" - if [ "${_opt_PARALLEL}" -ne 0 ]; then + # Always build both so we know when patches are needed + #if [ "${_opt_PARALLEL}" -ne 0 ]; then make -C 'pparport26' -s -j1 - fi - if [ "${_opt_SERIAL}" -ne 0 ]; then - make -C 'pserial' -s -j1 # too small for parallel make - fi + #fi + #if [ "${_opt_SERIAL}" -ne 0 ]; then + make -C 'pserial' -s -j1 all utils # too small for parallel make + #fi set +u } @@ -184,7 +291,7 @@ package() { fi if [ "${_opt_SERIAL}" -ne 0 ]; then make -C 'pserial' -s -j1 DESTDIR="${pkgdir}/" PERLE_DIR="${srcdir}/${_srcdir}" rpm_install - # Cat fight! + # Cat fight to add head and tail to existing file cat <(cat << EOF #!/usr/bin/sh @@ -201,7 +308,7 @@ EOF ) > "${pkgdir}/etc/perle-serial-setultrap.sh" sed -e 's:/bin/:/usr/bin/:g' -e 's:/usr/usr/:/usr/:g' -i "${pkgdir}/etc/perle-serial-setultrap.sh" chmod 744 "${pkgdir}/etc/perle-serial-setultrap.sh" - rm -r "${pkgdir}/UNKONWN" "${pkgdir}/etc/init.d" + rm -rf "${pkgdir}/UNKONWN" "${pkgdir}/etc/init.d" # Install persistent settings service install -Dm644 <(cat << EOF # Automatically generated by ${pkgname}-${pkgver} PKGBUILD from Arch Linux AUR @@ -292,18 +399,6 @@ EOF fi # sed 'a' can't add leading tabs so we add them here. It's also handy because this guarantees tabs not spaces. sed -e 's:^make:\t&:g' -i "${_dkms}/Makefile" - sed -e '/^KERNEL_/ s:shell uname -r:shell echo "$(KERNELRELEASE)":g' \ - -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \ - -e 's:shell uname -r:KERNELRELEASE:g' \ - -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \ - -e '# Fix by changing the detection var.' \ - -e '# SUBDIRS makes more sense to me because I can see it in the Makefile!' \ - -e 's:^ifeq (\$(KERNELRELEASE),):ifeq (\$(SUBDIRS),):g' \ - -e '# Disable stuff only used for make install' \ - -e '/^base =/,/^$/ d' \ - -e '# Disable non kernel utilities' \ - -e 's:^UTILS:# &:g' \ - -i "${_dkms}"/*/'Makefile' rm "${_dkms}"/*/*.sh "${_dkms}"/*/rc.* if [ "${_opt_SERIAL}" -ne 0 ]; then make -s -C "${_dkms}/pserial" clean KERNELRELEASE="$(uname -r)" |