commit 388585dd00b2deaf8cfd35ae699b46d7812e7b54 Author: Adrian Schröter Date: Mon Oct 14 14:23:19 2024 +0200 Sync from SUSE:ALP:Source:Standard:1.0 gpm revision f95c3d2f3c2c191b4a86673a46e71e27 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..6553bda --- /dev/null +++ b/README.SUSE @@ -0,0 +1,14 @@ +Dear customer, + +gpm is using more and more config files in /etc. Therefore we moved +all config files into /etc/gpm and removed "gpm-" from config file +names. + +For example: +/etc/gpm-root.conf -> /etc/gpm/root.conf +/etc/gpm-syn.conf -> /etc/gpm/syn.conf +... + + +Have a lot of fun, + Your SuSE team diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..a3fec1f --- /dev/null +++ b/baselibs.conf @@ -0,0 +1 @@ +libgpm2 diff --git a/decls.patch b/decls.patch new file mode 100644 index 0000000..666efe4 --- /dev/null +++ b/decls.patch @@ -0,0 +1,30 @@ +__sigemptyset has been removed from glibc public +API headers in upcoming (2.26) release onwards + +Upstream-PR: https://github.com/telmich/gpm/pull/20 + +Index: gpm-1.20.7/src/daemon/open_console.c +=================================================================== +--- gpm-1.20.7.orig/src/daemon/open_console.c ++++ gpm-1.20.7/src/daemon/open_console.c +@@ -22,6 +22,7 @@ + #include /* open and co. */ + #include /* stat() */ + #include /* ioctl */ ++#include /* major */ + + /* Linux specific (to be outsourced in gpm2 */ + #include /* for serial console check */ +Index: gpm-1.20.7/src/prog/gpm-root.y +=================================================================== +--- gpm-1.20.7.orig/src/prog/gpm-root.y ++++ gpm-1.20.7/src/prog/gpm-root.y +@@ -1196,7 +1196,7 @@ int main(int argc, char **argv) + /* reap your zombies */ + childaction.sa_handler=reap_children; + #if defined(__GLIBC__) +- __sigemptyset(&childaction.sa_mask); ++ sigemptyset(&childaction.sa_mask); + #else /* __GLIBC__ */ + childaction.sa_mask=0; + #endif /* __GLIBC__ */ diff --git a/gpl-2.0.txt b/gpl-2.0.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/gpl-2.0.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/gpm-1.20.7.tar.lzma b/gpm-1.20.7.tar.lzma new file mode 100644 index 0000000..c6f1a59 --- /dev/null +++ b/gpm-1.20.7.tar.lzma @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a955053b36556ffa7c628ce18fd6de7d625966573fa412fb08869533d8f7385c +size 789691 diff --git a/gpm-DESTDIR.patch b/gpm-DESTDIR.patch new file mode 100644 index 0000000..c9c68ff --- /dev/null +++ b/gpm-DESTDIR.patch @@ -0,0 +1,134 @@ +--- + Makefile.in | 8 ++++++-- + Makefile.include.in | 1 + + doc/Makefile.in | 31 ++++++++++--------------------- + src/Makefile.in | 19 ++++++++++--------- + 4 files changed, 27 insertions(+), 32 deletions(-) + +Index: Makefile.in +=================================================================== +--- Makefile.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ Makefile.in 2013-04-16 11:42:15.933917724 +0200 +@@ -65,9 +65,13 @@ install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) $(STRIP)' install + + installdirs: +- $(MKDIR) $(libdir) $(bindir) $(sbindir) $(includedir) $(sysconfdir); \ ++ $(INSTALL_DIR) $(DESTDIR)$(libdir) ++ $(INSTALL_DIR) $(DESTDIR)$(bindir) ++ $(INSTALL_DIR) $(DESTDIR)$(sbindir) ++ $(INSTALL_DIR) $(DESTDIR)$(includedir) ++ $(INSTALL_DIR) $(DESTDIR)$(sysconfdir); \ + if test "x$(ELISP)" != "x" ; then \ +- $(MKDIR) $(lispdir) ; \ ++ $(MKDIR) $(DESTDIR)$(lispdir) ; \ + fi + + ### GENERIC +Index: Makefile.include.in +=================================================================== +--- Makefile.include.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ Makefile.include.in 2013-04-16 11:42:15.933917724 +0200 +@@ -43,6 +43,7 @@ YACC = @YACC@ + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_DIR = @INSTALL@ -d + LN_S = @LN_S@ + EMACS = @EMACS@ + ELISP = @ELISP@ +Index: doc/Makefile.in +=================================================================== +--- doc/Makefile.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ doc/Makefile.in 2013-04-16 11:42:15.933917724 +0200 +@@ -111,29 +111,18 @@ gpmdoc.ps: gpm.ps + # install & uninstall + + installdirs: +- $(MKDIR) $(man1dir) $(man7dir) $(man8dir) $(infodir) ++ $(INSTALL_DIR) $(DESTDIR)$(man1dir) ++ $(INSTALL_DIR) $(DESTDIR)$(man7dir) ++ $(INSTALL_DIR) $(DESTDIR)$(man8dir) ++ $(INSTALL_DIR) $(DESTDIR)$(infodir) + + install: all installdirs +- $(INSTALL_DATA) -m 644 mev.1 $(man1dir) +- $(INSTALL_DATA) -m 644 mouse-test.1 $(man1dir) +- $(INSTALL_DATA) -m 644 gpm-root.1 $(man1dir) +- $(INSTALL_DATA) -m 644 gpm-types.7 $(man7dir) +- $(INSTALL_DATA) -m 644 gpm.8 $(man8dir) +- $(INSTALL_DATA) -m 644 $(srcdir)/gpm.info $(infodir) +- # Use install-info if available +- -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ +- if [ -f $(infodir)/dir ] ; then \ +- install-info --dir-file=$(infodir)/dir $(infodir)/gpm.info; \ +- fi; \ +- fi +- #itz Sat Dec 26 23:21:05 PST 1998 +- #i keep all my infopages compressed and i'm tired to do it by +- #hand, so check if there are any compressed pages and do this +- #one too +- -ls $(infodir)/*[-.]info.gz >/dev/null 2>&1 \ +- && gzip -f $(infodir)/gpm.info +- # Hmm.... shouldn't man pages be compressed too? +- # maybe they should, but at least at my system they are not. ++ $(INSTALL_DATA) -m 644 mev.1 $(DESTDIR)$(man1dir) ++ $(INSTALL_DATA) -m 644 mouse-test.1 $(DESTDIR)$(man1dir) ++ $(INSTALL_DATA) -m 644 gpm-root.1 $(DESTDIR)$(man1dir) ++ $(INSTALL_DATA) -m 644 gpm-types.7 $(DESTDIR)$(man7dir) ++ $(INSTALL_DATA) -m 644 gpm.8 $(DESTDIR)$(man8dir) ++ $(INSTALL_DATA) -m 644 $(srcdir)/gpm.info $(DESTDIR)$(infodir) + + # This potentially leaves around cached manpages, + # e.g. /var/cache/man/cat1/mev.1.gz. Deleting these is not our job, +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/Makefile.in 2013-04-16 11:47:36.772320635 +0200 +@@ -104,17 +104,17 @@ check: all + installdirs: + + install: check +- $(INSTALL_PROGRAM) gpm $(sbindir)/gpm ++ $(INSTALL_PROGRAM) gpm $(DESTDIR)$(sbindir)/gpm + if [ -f lib/libgpm.a ] ; then \ +- $(INSTALL_DATA) -m 644 lib/libgpm.a $(libdir)/libgpm.a ; \ ++ $(INSTALL_DATA) -m 644 lib/libgpm.a $(DESTDIR)$(libdir)/libgpm.a ; \ + fi +- $(INSTALL_DATA) -m 644 $(srcdir)/headers/gpm.h $(includedir)/gpm.h ++ $(INSTALL_DATA) -m 644 $(srcdir)/headers/gpm.h $(DESTDIR)$(includedir)/gpm.h + # POSIX requires the range of a for loop be nonempty and Bash + # 2.x goes along; unfortunately that means an additional + # headache in cases like this + if test "x@SHLIB@" != "x" ; then \ +- $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \ +- cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ ++ $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(DESTDIR)$(libdir)/libgpm.so.@abi_full@ ; \ ++ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ + echo "WARNING: We installed a lib, you should now call ldconfig" ; \ + echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \ + echo "Or to update everything just type ldconfig" ; \ +@@ -124,7 +124,7 @@ install: check + + # prog/ + for i in $(PROG); do \ +- $(INSTALL_PROGRAM) $$i $(bindir)/`echo $$i | sed 's,prog/,,'` ;\ ++ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(bindir)/`echo $$i | sed 's,prog/,,'` ;\ + done + + install-strip: +@@ -133,10 +133,11 @@ install-strip: + # Note: this leaves around /usr/lib/libgpm.so.1 and /usr/lib/libgpm.so.1.nn + # This is probably the right thing, because programs may be linked to it + uninstall: +- rm -f $(bindir)/mev $(bindir)/gpm-root $(bindir)/disable-paste \ +- $(sbindir)/gpm $(libdir)/libgpm.a $(libdir)/libgpm.so $(includedir)/gpm.h ++ rm -f $(DESTDIR)$(bindir)/mev $(DESTDIR)$(bindir)/gpm-root $(DESTDIR)$(bindir)/disable-paste \ ++ $(DESTDIR)$(sbindir)/gpm $(DESTDIR)$(libdir)/libgpm.a $(DESTDIR)$(libdir)/libgpm.so \ ++ $(DESTDIR) $(includedir)/gpm.h + for i in $(PROG); do \ +- rm -f $(bindir)/$$i ;\ ++ rm -f $(DESTDIR)$(bindir)/$$i ;\ + done + + # Configure & unconfigure diff --git a/gpm-Gpm_Open.patch b/gpm-Gpm_Open.patch new file mode 100644 index 0000000..1318313 --- /dev/null +++ b/gpm-Gpm_Open.patch @@ -0,0 +1,15 @@ +Index: src/lib/liblow.c +=================================================================== +--- src/lib/liblow.c.orig 2009-02-09 10:58:53.000000000 +0100 ++++ src/lib/liblow.c 2010-09-08 16:42:15.667355974 +0200 +@@ -255,6 +255,10 @@ int Gpm_Open(Gpm_Connect *conn, int flag + if (tty == NULL) { + gpm_report(GPM_PR_ERR,"checking tty name failed"); + goto err; ++ } ++ if (consolename == NULL) { ++ gpm_report(GPM_PR_ERR,"consolename not set"); ++ goto err; + } + + conn->vc=atoi(&tty[strlen(consolename)-1]); diff --git a/gpm-ceil.patch b/gpm-ceil.patch new file mode 100644 index 0000000..5fff15c --- /dev/null +++ b/gpm-ceil.patch @@ -0,0 +1,61 @@ +Note that GCC 4.0 will optimize ceil (constant), we therefore +have to make the argument non-constant. + +================================================================================ +--- + configure.ac.footer | 20 ++++++++++++++++++++ + src/Makefile.in | 3 ++- + 2 files changed, 22 insertions(+), 1 deletion(-) + +Index: configure.ac.footer +=================================================================== +--- configure.ac.footer.orig 2012-10-26 23:21:38.000000000 +0200 ++++ configure.ac.footer 2013-04-16 12:21:01.350791832 +0200 +@@ -112,6 +112,25 @@ fi + AC_CHECK_FUNCS(vsyslog syslog) + AC_FUNC_ALLOCA + ++AC_MSG_CHECKING(for ceil) ++AC_TRY_LINK([#define __NO_MATH_INLINES 1 ++ double d;], ++ [d = ceil(1.0*d);], ++ SYNLDFLAGS="" ++ AC_MSG_RESULT(yes), ++ SYNLDFLAGS=-lm ++ AC_MSG_RESULT(no)) ++ ++if test "$SYNLDFLAGS" = "-lm" ; then ++ SAVE_LIBS="$LIBS" ++ AC_CHECK_LIB(m, ++ ceil, ++ , ++ echo "libmath.so is needed due the ceil function" ++ exit 1) ++ LIBS="$SAVE_LIBS" ++fi ++ + case $with_curses in + No|no|N|n) SHARED_LIBS=-lc ;; + *) +@@ -142,6 +161,7 @@ AC_SUBST(ELISP) + AC_SUBST(SHLIB) + AC_SUBST(PICFLAGS) + AC_SUBST(SOLDFLAGS) ++AC_SUBST(SYNLDFLAGS) + AC_SUBST(LIBGPM_A) + AC_SUBST(CURSES_OBJS) + AC_SUBST(SHARED_LIBS) +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig 2013-04-16 12:18:43.719054511 +0200 ++++ src/Makefile.in 2013-04-16 12:18:43.762053491 +0200 +@@ -166,7 +166,8 @@ lib/libgpm.a: $(LOBJ) + + lib/libgpm.so.@abi_full@: $(PICS) + $(CC) @SOLDFLAGS@libgpm.so.@abi_lev@ \ +- @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS) ++ @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ @SYNLDFLAGS@ $(LIBS) ++ + lib/libgpm.so.@abi_lev@: lib/libgpm.so.@abi_full@ + $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@ + # unneeded, isn't it? diff --git a/gpm-close-fds.patch b/gpm-close-fds.patch new file mode 100644 index 0000000..1a279ad --- /dev/null +++ b/gpm-close-fds.patch @@ -0,0 +1,16 @@ +--- src/daemon/startup.c.close-fds 2008-06-13 10:08:19.000000000 +0200 ++++ src/daemon/startup.c 2008-12-02 10:11:12.000000000 +0100 +@@ -135,6 +135,13 @@ void startup(int argc, char **argv) + check_uniqueness(); + gpm_report(GPM_PR_INFO,GPM_MESS_STARTED); + ++ // close extra fds ++ if (option.run_status == GPM_RUN_STARTUP ) { ++ close(0); ++ close(1); ++ close(2); ++ } ++ + //return mouse_table[1].fd; /* the second is handled in the main() */ + + /****************** OLD CODE from gpn.c END ***********************/ diff --git a/gpm-conf.patch b/gpm-conf.patch new file mode 100644 index 0000000..230e4b7 --- /dev/null +++ b/gpm-conf.patch @@ -0,0 +1,152 @@ +--- + README | 2 +- + doc/README.synaptics | 4 ++-- + doc/README.twiddler | 12 ++++++------ + doc/doc.gpm.in | 6 +++--- + src/headers/twiddler.h | 4 ++-- + src/prog/gpm-root.y | 2 +- + src/synaptics.c | 4 ++-- + 7 files changed, 17 insertions(+), 17 deletions(-) + +Index: README +=================================================================== +--- README.orig 2012-10-26 23:21:38.000000000 +0200 ++++ README 2013-04-16 11:48:12.185482121 +0200 +@@ -108,7 +108,7 @@ Configuration is optional... + (string-match "con.*" (getenv "TERM")))) + (load-library "t-mouse")) + +-* If you want to use gpm-root, copy gpm-root.conf to your /usr/etc ++* If you want to use gpm-root, copy gpm-root.conf to your /etc/gpm/root.conf + directory, test it out and then edit it to suit your feels. + + * You'd like to name the gpm info file inside /usr/info/dir. Just insert +Index: doc/README.synaptics +=================================================================== +--- doc/README.synaptics.orig 2012-10-26 23:21:38.000000000 +0200 ++++ doc/README.synaptics 2013-04-16 11:48:12.186482098 +0200 +@@ -25,8 +25,8 @@ the buttons, this support currently has + + These features can be enabled/disabled and many of them have time and speed + parameters which can be adjusted to the taste of the user. These parameters +-can be provided in the "/usr/etc/gpm-syn.conf" file (or +-/usr/local/etc/gpm-syn.conf, or /etc/gpm-syn.conf, according to how you ran ++can be provided in the "/etc/gpm/syn.conf" file (or /usr/etc/syn.conf ++/usr/local/etc/syn.conf, or /etc/syn.conf, according to how you ran + configure). Each line in this file has the following syntax: [param-name] + + +Index: doc/README.twiddler +=================================================================== +--- doc/README.twiddler.orig 2012-10-26 23:21:38.000000000 +0200 ++++ doc/README.twiddler 2013-04-16 11:48:12.186482098 +0200 +@@ -101,23 +101,23 @@ precompile values because that would mea + file, and provide documentation as well. Using a compulsory + configuration file reliefs my workload :-) + +-The file "gpm-twiddler.conf" that appears in the gpm configuration ++The file "twiddler.conf" that appears in the gpm configuration + includes the default keyboard map, and can be used right away. If the + file is not in place, gpm will complain about its absence. By default +-the file must live in /usr/etc (or /usr/local/etc, or whatever you ++the file must live in /etc/gpm (or /usr/local/etc, or whatever you + gave as a prefix to ./configure). The behaviour is similar for + different installation prefixes. The file is not installed by "make + install". If the file is missing, gpm will exit producing a message + like this: + +- ./gpm: /usr/etc/gpm-twiddler.conf: No such file or directory ++ ./gpm: /etc/gpm/twiddler.conf: No such file or directory + + The distributed configuration file includes its own documentation. + + If you want to add keys to the default file, you can avoid editing it +-by writing a "gpm-twiddler.user" file and putting it in the same +-directory as gpm-twiddler.conf. Gpm will read both files, in sequence, +-but won't complain if gpm-twiddler.user doesn't exist. ++by writing a "twiddler.user" file and putting it in the same ++directory as twiddler.conf. Gpm will read both files, in sequence, ++but won't complain if twiddler.user doesn't exist. + + Gpm will print an error message for any incorrect line in any of the + configuration files: error messages include the file name and the +Index: doc/doc.gpm.in +=================================================================== +--- doc/doc.gpm.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ doc/doc.gpm.in 2013-04-16 11:48:12.187482074 +0200 +@@ -1971,7 +1971,7 @@ Available command line options are the f + + @item -u + Deny using user-specific configuration files. With this +- option on, only @file{/etc/gpm-root.conf} will be used as a source ++ option on, only @file{/etc/gpm/root.conf} will be used as a source + of configuration information. This option + is intended for those system administrators who fear security could + be broken by this daemon. Things should be sufficiently secure, but +@@ -1999,7 +1999,7 @@ changed. This allows modification of per + the daemon. + + %M The actual configuration file is better introduced by looking at your +-%M @file{/etc/gpm-root.conf}. ++%M @file{/etc/gpm/root.conf}. + %M + %MSKIP + +@@ -2186,7 +2186,7 @@ Alessandro Rubini + .SH FILES + .nf + /dev/gpmctl The socket used to connect to gpm. +-/etc/gpm-root.conf The default configuration file. ++/etc/gpm/root.conf The default configuration file. + $(HOME)/.gpm-root The user configuration file. + /dev/vcs* Virtual Console Screens + .fi +Index: src/headers/twiddler.h +=================================================================== +--- src/headers/twiddler.h.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/headers/twiddler.h 2013-04-16 11:48:12.188482050 +0200 +@@ -46,7 +46,7 @@ + #define TW_M_MASK 0x1FF /* mask of movement bits, after shifting */ + #define TW_M_BIT 0x100 + +-#define TW_SYSTEM_FILE SYSCONFDIR "/gpm-twiddler.conf" +-#define TW_CUSTOM_FILE SYSCONFDIR "/gpm-twiddler.user" ++#define TW_SYSTEM_FILE SYSCONFDIR "/twiddler.conf" ++#define TW_CUSTOM_FILE SYSCONFDIR "/twiddler.user" + + +Index: src/prog/gpm-root.y +=================================================================== +--- src/prog/gpm-root.y.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/prog/gpm-root.y 2013-04-16 11:48:12.203481695 +0200 +@@ -77,7 +77,7 @@ + #endif + + #define USER_CFG ".gpm-root" +-#define SYSTEM_CFG SYSCONFDIR "/gpm-root.conf" ++#define SYSTEM_CFG SYSCONFDIR "/root.conf" + + #define DEFAULT_FORE 7 + #define DEFAULT_BACK 0 +Index: src/synaptics.c +=================================================================== +--- src/synaptics.c.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/synaptics.c 2013-04-16 11:48:12.204481671 +0200 +@@ -2064,7 +2064,7 @@ static void tp_process_report (Gpm_Event + ** syn_read_config_file + ** + ** Read the configuration data from the global config file +-** SYSCONFDIR "/gpm-syn.conf". ++** SYSCONFDIR "/syn.conf". + */ + void tp_read_config_file (char* config_filename) + { +@@ -2188,7 +2188,7 @@ static void syn_process_config (info_typ + gpm_report (GPM_PR_INFO, " Firmware version %d.%d\n", + ident.info_major, ident.info_minor); + +- tp_read_config_file ("gpm-syn.conf"); ++ tp_read_config_file ("syn.conf"); + + + /* Limit the options depending on the touchpad capabilities. This should be diff --git a/gpm-daemon_mode.patch b/gpm-daemon_mode.patch new file mode 100644 index 0000000..2f19ecf --- /dev/null +++ b/gpm-daemon_mode.patch @@ -0,0 +1,25 @@ +Index: src/headers/message.h +=================================================================== +--- src/headers/message.h.orig 2010-09-08 16:43:48.924334502 +0200 ++++ src/headers/message.h 2010-09-08 16:43:49.456294395 +0200 +@@ -146,6 +146,7 @@ + #define GPM_MESS_SETSID_FAILED "Setsid failed" + #define GPM_MESS_CHDIR_FAILED "change directory failed" + #define GPM_MESS_FORK_FAILED "Fork failed." ++#define GPM_MESS_DAEMON_FAILED "Change to run in background failed." + #define GPM_MESS_VCCHECK "Failed on virtual console check." + #define GPM_MESS_PROT_ERR "Error in protocol" + #define GPM_MESS_ROOT "You should be root to run gpm!" +Index: src/daemon/startup.c +=================================================================== +--- src/daemon/startup.c.orig 2010-09-08 16:43:49.328304044 +0200 ++++ src/daemon/startup.c 2010-09-08 16:46:36.665526251 +0200 +@@ -126,7 +126,7 @@ void startup(int argc, char **argv) + + if (option.run_status == GPM_RUN_STARTUP ) { /* else is debugging */ + if (daemon(0,0)) +- gpm_report(GPM_PR_OOPS,GPM_MESS_FORK_FAILED); /* error */ ++ gpm_report(GPM_PR_OOPS,GPM_MESS_DAEMON_FAILED); /* error */ + + option.run_status = GPM_RUN_DAEMON; /* child */ + } diff --git a/gpm-dependencies.patch b/gpm-dependencies.patch new file mode 100644 index 0000000..986554c --- /dev/null +++ b/gpm-dependencies.patch @@ -0,0 +1,26 @@ +From: Philipp Thomas +Date: 2013-04-16 13:06:54+02:00 +Subject: pass directory for gpm.h + +The directory containing gpm.h wasn't passed to the compiler when +generating dependencies. + +--- + src/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +signed-off-by: Philipp Thomas + +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/Makefile.in 2013-04-16 13:06:07.913236362 +0200 +@@ -96,7 +96,7 @@ $(DEPFILE) dep: prog/gpm-root.c + + # create dependencies + for DEPS in `echo *.c */*.c`; do \ +- $(CC) -I. -I $(srcdir) -M @CPPFLAGS@ $(CPPFLAGS) $$DEPS | \ ++ $(CC) -I. -I $(srcdir) -I $(srcdir)/headers -M @CPPFLAGS@ $(CPPFLAGS) $$DEPS | \ + $(SED) 's/^\(.*\)\.o\([ :]+\)/\1.o \1.lo\2/g' >> $(DEPFILE) ; done + + ### INSTALL diff --git a/gpm-do_create_symlink.patch b/gpm-do_create_symlink.patch new file mode 100644 index 0000000..6b731e1 --- /dev/null +++ b/gpm-do_create_symlink.patch @@ -0,0 +1,46 @@ +From: Philipp Thomas +Date: 2013-04-16 13:20:48+02:00 +Subject: Do create the symlink libgpm.so + +--- + src/Makefile.in | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +signed-off-by: Philipp Thomas + +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig 2013-04-16 13:16:45.723219315 +0200 ++++ src/Makefile.in 2013-04-16 13:29:52.385720884 +0200 +@@ -79,7 +79,7 @@ prog/%: prog/%.o + # | $(SED) '\''s/\($*\)\.o\([ :]*\)/\1.o \1.lo\2/g'\'' > $(DEPDIR)/$@' + + # Do it all! +-all: gpm lib/libgpm.so.@abi_lev@ @LIBGPM_A@ $(PROG) ++all: gpm lib/libgpm.so.@abi_lev@ lib/libgpm.so @LIBGPM_A@ $(PROG) + + gpm: $(GOBJ) + $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm +@@ -114,7 +114,8 @@ install: check + # headache in cases like this + if test "x@SHLIB@" != "x" ; then \ + $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(DESTDIR)$(libdir)/libgpm.so.@abi_full@ ; \ +- cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ ++ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ && \ ++ $(LN_S) -f libgpm.so.@abi_lev@ libgpm.so ; \ + echo "WARNING: We installed a lib, you should now call ldconfig" ; \ + echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \ + echo "Or to update everything just type ldconfig" ; \ +@@ -170,9 +171,9 @@ lib/libgpm.so.@abi_full@: $(PICS) + + lib/libgpm.so.@abi_lev@: lib/libgpm.so.@abi_full@ + $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@ +-# unneeded, isn't it? +-#lib/libgpm.so: lib/libgpm.so.@abi_full@ +-# $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so ++ ++lib/libgpm.so: lib/libgpm.so.@abi_full@ ++ $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so + + include $(DEPFILE) + diff --git a/gpm-fix_fsf_addess.patch b/gpm-fix_fsf_addess.patch new file mode 100644 index 0000000..c6b5564 --- /dev/null +++ b/gpm-fix_fsf_addess.patch @@ -0,0 +1,39 @@ +--- + src/headers/gpm.h | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +Index: src/headers/gpm.h +=================================================================== +--- src/headers/gpm.h.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/headers/gpm.h 2016-01-13 13:41:20.368535392 +0100 +@@ -5,19 +5,19 @@ + * Copyright 1998 Ian Zimmerman + * Copyright 2002-2008 Nico Schottelius + * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. + * +- * 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. ++ * 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. + * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********/ + + #ifndef _GPM_H_ diff --git a/gpm-fno-common.patch b/gpm-fno-common.patch new file mode 100644 index 0000000..e9301d9 --- /dev/null +++ b/gpm-fno-common.patch @@ -0,0 +1,13 @@ +Index: gpm-1.20.7/src/headers/daemon.h +=================================================================== +--- gpm-1.20.7.orig/src/headers/daemon.h ++++ gpm-1.20.7/src/headers/daemon.h +@@ -180,7 +180,7 @@ extern struct mouse_features mouse_tabl + extern Gpm_Type mice[]; + extern Gpm_Type *repeated_type; + +-time_t last_selection_time; ++extern time_t last_selection_time; + + + diff --git a/gpm-glibc210.patch b/gpm-glibc210.patch new file mode 100644 index 0000000..c8ddda2 --- /dev/null +++ b/gpm-glibc210.patch @@ -0,0 +1,12 @@ +Index: gpm-1.20.1/src/gpm.c +=================================================================== +--- src/daemon/gpm.c ++++ src/daemon/gpm.c +@@ -22,6 +22,7 @@ + ********/ + + #include ++#define __USE_GNU + #include + #include /* strerror(); ?!? */ + #include diff --git a/gpm-int_ptr_casts.patch b/gpm-int_ptr_casts.patch new file mode 100644 index 0000000..5d57c55 --- /dev/null +++ b/gpm-int_ptr_casts.patch @@ -0,0 +1,13 @@ +Index: src/twiddler.c +=================================================================== +--- src/twiddler.c.orig 2009-02-09 10:58:53.000000000 +0100 ++++ src/twiddler.c 2010-09-08 18:13:31.706407202 +0200 +@@ -429,7 +429,7 @@ char *twiddler_rest_to_value(char *s) + return strdup(buf); + } + if (*ptr == '\\') +- return (char *)twiddler_escape_sequence(ptr+1, &len /* unused */); ++ return (char *)(long)twiddler_escape_sequence(ptr+1, &len /* unused */); + + if (strlen(ptr)==1) return ((char *)((unsigned long)*ptr & 0xFF)); + diff --git a/gpm-lib-silent.patch b/gpm-lib-silent.patch new file mode 100644 index 0000000..9dd1c5d --- /dev/null +++ b/gpm-lib-silent.patch @@ -0,0 +1,19 @@ +--- src/lib/report-lib.c.lib-silent 2002-12-24 23:57:16.000000000 +0100 ++++ src/lib/report-lib.c 2006-01-18 17:55:38.000000000 +0100 +@@ -24,8 +24,16 @@ + + #include "headers/message.h" + ++static int gpm_silent() { ++ if ( getenv( "GPM_VERBOSE" ) == NULL ) return 1; ++ return 0; ++} ++ + void gpm_report(int line, char *file, int stat, char *text, ... ) + { ++ if ( gpm_silent() && stat != GPM_STAT_OOPS ) ++ return; ++ + char *string = NULL; + int log_level; + va_list ap; diff --git a/gpm-log.patch b/gpm-log.patch new file mode 100644 index 0000000..c1b33c8 --- /dev/null +++ b/gpm-log.patch @@ -0,0 +1,16 @@ +Index: src/report.c +=================================================================== +--- src/report.c.orig 2010-09-08 17:04:41.743044084 +0200 ++++ src/report.c 2010-09-08 17:08:22.257855674 +0200 +@@ -92,8 +92,9 @@ void gpm_report(int line, char *file, in + switch(stat) { + case GPM_STAT_INFO: + #ifdef HAVE_VSYSLOG +- syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO); +- vsyslog(LOG_INFO | LOG_USER, text, ap2); ++ // gpm spams /var/log/messages (bnc#307209) ++ // syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO); ++ // vsyslog(LOG_INFO | LOG_USER, text, ap2); + #else + fprintf(stderr,GPM_STRING_INFO); + vfprintf(stderr,text,ap); diff --git a/gpm-multilib.patch b/gpm-multilib.patch new file mode 100644 index 0000000..e7b59ca --- /dev/null +++ b/gpm-multilib.patch @@ -0,0 +1,32 @@ +Index: contrib/Makefile.in +=================================================================== +--- contrib/Makefile.in.orig 2008-06-19 07:48:48.000000000 +0200 ++++ contrib/Makefile.in 2011-01-27 12:31:18.404745581 +0100 +@@ -9,10 +9,10 @@ top_builddir = .. + + include $(top_builddir)/Makefile.include + +-all: $(srcdir)/$(ELISP) ++all: $(filter-out %.elc,$(srcdir)/$(ELISP)) + + install: all +- if [ -n "$(ELISP)" ]; then for i in `echo $(ELISP)`; do \ ++ if [ -n "$(filter-out %.elc,$(ELISP))" ]; then for i in `echo $(filter-out %.elc,$(ELISP))`; do \ + $(INSTALL_DATA) $(srcdir)/$$i $(lispdir)/`basename $$i` ;\ + done; fi + +@@ -20,7 +20,7 @@ install: all + $(EMACS) -batch -l $(srcdir)/emacs/exec.el -exec '(byte-compile-file "$<")' + + uninstall: +- if [ -n "$(ELISP)" ]; then for i in `echo $(ELISP)`; do \ ++ if [ -n "$(filter-out %.elc,$(ELISP))" ]; then for i in `echo $(filter-out %.elc,$(ELISP))`; do \ + rm -f $(lispdir)/$$i ;\ + done; fi + +@@ -28,4 +28,4 @@ dist: + $(CP) -r $(srcdir) $(top_builddir)/gpm-$(release)/ + + clean distclean: +- $(RM) -f $(srcdir)/emacs/*.elc Makefile ++ $(RM) $(srcdir)/emacs/*.elc Makefile diff --git a/gpm-no_templates_for_new_multiple_mode.patch b/gpm-no_templates_for_new_multiple_mode.patch new file mode 100644 index 0000000..4bb0b45 --- /dev/null +++ b/gpm-no_templates_for_new_multiple_mode.patch @@ -0,0 +1,62 @@ +Index: src/daemon/cmdline.c +=================================================================== +--- src/daemon/cmdline.c.orig 2010-09-08 18:38:23.672261112 +0200 ++++ src/daemon/cmdline.c 2010-09-08 19:43:17.467206480 +0200 +@@ -46,38 +46,35 @@ void cmdline(int argc, char **argv) + if (optarg) + opt_age_limit = atoi(optarg); break; + case 'b': (which_mouse->opt_baud) = atoi(optarg); break; +- case 'B': (which_mouse->opt_sequence) = optarg; break; ++ case 'B': (which_mouse->opt_sequence) = optarg; break; + case 'd': (which_mouse->opt_delta) = atoi(optarg); break; + case 'D': option.run_status = GPM_RUN_DEBUG; break; + case 'g': (which_mouse->opt_glidepoint_tap)=atoi(optarg); break; + case 'h': exit(usage(NULL)); +- case 'i': (which_mouse->opt_time)=atoi(optarg); break; ++ case 'i': (which_mouse->opt_time)=atoi(optarg); break; + case 'k': check_kill(); break; + case 'l': opt_lut = optarg; break; +- case 'm': add_mouse(GPM_ADD_DEVICE,optarg); +- (which_mouse->opt_dev) = optarg; break; /* GO AWAY!*/ ++ case 'm': (which_mouse->opt_dev) = optarg; break; /* GO AWAY!*/ + case 'M': opt_double++; option.repeater++; + if (option.repeater_type == 0) + option.repeater_type = "msc"; + which_mouse=mouse_table+2; break; +- case 'o': add_mouse(GPM_ADD_OPTIONS,optarg); +- gpm_report(GPM_PR_DEBUG,"options: %s",optarg); +- (which_mouse->opt_options) = optarg; break; /* GO AWAY */ ++ case 'o': gpm_report(GPM_PR_DEBUG,"options: %s",optarg); ++ (which_mouse->opt_options) = optarg; break; /* GO AWAY */ + case 'p': opt_ptrdrag = 0; break; + case 'r': + /* being called responsiveness, I must take the inverse */ + (which_mouse->opt_scale)=atoi(optarg); + if(!(which_mouse->opt_scale) || (which_mouse->opt_scale) > 100) (which_mouse->opt_scale)=100; /* the maximum */ +- else (which_mouse->opt_scale)=100/(which_mouse->opt_scale); break; ++ else (which_mouse->opt_scale)=100/(which_mouse->opt_scale); break; + case 'R': + option.repeater++; + if (optarg) option.repeater_type = optarg; + else option.repeater_type = "msc"; break; +- case 's': (which_mouse->opt_sample) = atoi(optarg); break; ++ case 's': (which_mouse->opt_sample) = atoi(optarg); break; + case 'S': if (optarg) opt_special = optarg; + else opt_special=""; break; +- case 't': add_mouse(GPM_ADD_TYPE,optarg); +- (which_mouse->opt_type) = optarg; break; /* GO AWAY */ ++ case 't': (which_mouse->opt_type) = optarg; break; /* GO AWAY */ + case 'u': option.autodetect = 1; break; + case 'T': opt_test++; break; + case 'v': printf(GPM_MESS_VERSION "\n"); exit(0); +Index: src/daemon/startup.c +=================================================================== +--- src/daemon/startup.c.orig 2010-09-08 18:38:23.672261112 +0200 ++++ src/daemon/startup.c 2010-09-08 19:42:23.770512127 +0200 +@@ -139,6 +139,5 @@ void startup(int argc, char **argv) + + /****************** OLD CODE from gpn.c END ***********************/ + +- init_mice(option.micelist); /* reads option.micelist */ + atexit(gpm_exited); /* call gpm_exited at the end */ + } diff --git a/gpm-syn_conf.patch b/gpm-syn_conf.patch new file mode 100644 index 0000000..a83efed --- /dev/null +++ b/gpm-syn_conf.patch @@ -0,0 +1,158 @@ +--- conf/gpm-syn.conf ++++ conf/gpm-syn.conf +@@ -1,49 +1,107 @@ ++/* generated from src/synaptics.c, gpm-1.20.1 */ + /* enabling configuration parameters */ +-[edge_motion_enabled] TRUE +-[edge_motion_speed_enabled] TRUE +-[corner_taps_enabled] TRUE +-[tap_gesture_enabled] TRUE +-[pressure_speed_enabled] TRUE +-[tossing_enabled] TRUE +-[does_toss_use_static_speed] TRUE +-/* pressure induced speed related configuration parameters */ +-[low_pressure] 60 +-[speed_up_pressure] 60 +-[pressure_factor] 0.10 +-[standard_speed_factor] 0.10 +-/* toss/catch related parameters */ +-[min_toss_time] 100 +-[max_toss_time] 300 +-[prevent_toss_time] 300 +-[min_toss_dist] 2 +-[static_toss_speed] 70 +-[toss_speed_factor] 0.5 +-/* edge motion related configuration parameters */ +-[edge_speed] 20 +-/* corner tap actions */ +-[upper_left_action] 0 (none) +-[upper_right_action] 2 (middle) +-[lower_left_action] 0 (none) +-[lower_right_action] 3 (right) +-/* wmode parameters */ +-[wmode_enabled] TRUE +-[drag_lock_enabled] FALSE +-[finger_threshold] 30 +-[tap_lower_limit] 5 +-[tap_upper_limit] 200 +-[tap_range] 100 +-[tap_interval] 200 +-[pads_tap_interval] 8 +-[multiple_tap_delay] 30 +-[palm_detect_enabled] TRUE +-[palm_detect_level] 12 +-[multi_finger_tap_enable] TRUE +-[multi_finger_stop_enabled] TRUE +-[multi_finger_stop_delay] 8 +- /* Additional options */ +-[touch_pad_enabled] TRUE +-[stick_enabled] TRUE +-[scrolling_enabled] TRUE +-[scrolling_edge] 2 +-[auto_scrolling_enabled] TRUE +- ++[edge_motion_enabled] TRUE ++[edge_motion_speed_enabled] TRUE ++[corner_taps_enabled] TRUE ++[tap_gesture_enabled] TRUE ++[pressure_speed_enabled] TRUE ++[tossing_enabled] TRUE ++[does_toss_use_static_speed] TRUE ++[tap_hold_edge_motion_enabled] TRUE ++/* pressure induced speed related configuration parameters */ ++[low_pressure] 60 ++[speed_up_pressure] 60 ++[pressure_factor] 0.05 ++[standard_speed_factor] 0.08 ++/* toss/catch related parameters */ ++[min_toss_time] 100 ++[max_toss_time] 300 ++[prevent_toss_time] 300 ++[min_toss_dist] 2 ++[static_toss_speed] 70 ++[toss_speed_factor] 0.5 ++/* edge motion related configuration parameters */ ++[x_min_center] 1632 ++[x_max_center] 5312 ++[y_min_center] 1408 ++[y_max_center] 4108 ++[edge_speed] 20 ++/* use wmode */ ++[wmode_enabled] TRUE ++[drag_lock_enabled] TRUE ++[finger_threshold] 30 ++[tap_lower_limit] 5 ++[tap_upper_limit] 200 ++[tap_range] 100 ++[tap_interval] 200 ++[multiple_tap_delay] 30 ++[pads_tap_interval] 8 ++/* Additional wmode parameters */ ++[palm_detect_enabled] TRUE ++[palm_detect_level] 12 ++[multi_finger_tap_enable] TRUE ++[multi_finger_stop_enabled] TRUE ++[multi_finger_stop_delay] 8 ++[fake_finger_layer_enabled] 1 ++/* Additional options*/ ++/* Values for [scrolling_edge]: ++ LEFT_EDGE 0x01 ++ RIGHT_EDGE 0x02 ++ TOP_EDGE 0x04 ++ BOTTOM_EDGE 0x08 ++ UPPER_LEFT_CORNER (LEFT_EDGE | TOP_EDGE) ++ LOWER_LEFT_CORNER (LEFT_EDGE | BOTTOM_EDGE) ++ UPPER_RIGHT_CORNER (RIGHT_EDGE | TOP_EDGE) ++ LOWER_RIGHT_CORNER (RIGHT_EDGE | BOTTOM_EDGE) */ ++[touchpad_enabled] TRUE ++[stick_enabled] TRUE ++[stick_pressure_enabled] FALSE ++[four_way_button_enabled] TRUE ++[four_way_button_is_mouse] TRUE ++[scrolling_enabled] TRUE ++[auto_scrolling_enabled] TRUE ++[scrolling_edge] 0x02 ++[scrolling_speed] 10 ++[scrolling_button_factor] 0.5 ++[auto_scrolling_factor] 2.0 ++/* Action id's: ++ No_Action = 0 ++ Left_Button_Action = 1 ++ Middle_Button_Action = 2 ++ Right_Button_Action = 3 ++ Fourth_Button_Action = 4 ++ Up_Button_Action = 5 ++ Down_Button_Action = 6 ++ Turn_On_Off_Action = 7 ++ Debug_On_Off_Action = 8 ++ Reset_Touchpad_Action = 9 ++ Toggle_Four_Way_Button_Action = 10 ++ Toggle_Stick_Pressure_Action = 11 ++ Toggle_Scrolling_Action = 12 ++ Left_Double_Click_Action = 13 ++*/ ++/* corner tap actions */ ++[upper_left_action] 0 ++[lower_left_action] 0 ++[upper_right_action] 2 ++[lower_right_action] 3 ++/* no. of fingers tap actions */ ++[one_finger_tap_action] 1 ++[two_fingers_tap_action] 3 ++[three_fingers_tap_action] 2 ++/* normal button actions */ ++[left_button_action] 1 ++[middle_button_action] 2 ++[right_button_action] 3 ++[fourth_button_action] 4 ++[up_button_action] 5 ++[down_button_action] 6 ++/* 4 way button actions */ ++[four_way_left_button_action] 2 ++[four_way_right_button_action] 4 ++[four_way_up_button_action] 5 ++[four_way_down_button_action] 6 ++/* Synaptic Stick (passthrugh,stick) actions */ ++[stick_left_button_action] 1 ++[stick_middle_button_action] 2 ++[stick_right_button_action] 3 diff --git a/gpm-use_getdtablesize.patch b/gpm-use_getdtablesize.patch new file mode 100644 index 0000000..d33d2bf --- /dev/null +++ b/gpm-use_getdtablesize.patch @@ -0,0 +1,13 @@ +Index: src/daemon/processspecial.c +=================================================================== +--- src/daemon/processspecial.c.orig 2009-02-09 10:58:53.000000000 +0100 ++++ src/daemon/processspecial.c 2010-09-08 17:41:17.533664061 +0200 +@@ -157,7 +157,7 @@ int processSpecial(Gpm_Event *event) + open(option.consolename,O_WRONLY); /* stdout */ + dup(1); /* stderr */ + int open_max = sysconf(_SC_OPEN_MAX); +- if (open_max == -1) open_max = 1024; ++ if (open_max == -1) open_max = getdtablesize(); + for (i=3;i return is requested ++ 1 -> exit(1) is requested ++ 2 -> _exit(1) is requested */ + + va_start(ap,text); + va_copy(ap3, ap); +@@ -129,7 +132,7 @@ void gpm_report(int line, char *file, in + vfprintf(stderr,text,ap); + fprintf(stderr,"\n"); + +- exit(1); /* we should have a oops()-function,but this works,too*/ ++ exit_request = 1; /* we should have an oops()-function,but this works,too*/ + break; + } + break; /* startup sequence */ +@@ -188,7 +191,7 @@ void gpm_report(int line, char *file, in + vfprintf(stderr,text,ap); + fprintf(stderr,"\n"); + +- _exit(1); /* we are the fork()-child */ ++ exit_request = 2; /* we are the fork()-child */ + break; + } + break; /* running gpm */ +@@ -216,7 +219,7 @@ void gpm_report(int line, char *file, in + vfprintf(console,text,ap); + fprintf(console,"\n"); + +- if(stat == GPM_STAT_OOPS) exit(1); ++ if(stat == GPM_STAT_OOPS) exit_request = 1; + + break; + } /* switch for current modus */ +@@ -226,6 +229,12 @@ void gpm_report(int line, char *file, in + #ifdef HAVE_VSYSLOG + va_end(ap2); + #endif ++ if (exit_request == 2) ++ _exit(1); ++ if (exit_request == 1) ++ exit(1); ++ ++ return; + } /* gpm_report */ + + diff --git a/gpm-verbosity.patch b/gpm-verbosity.patch new file mode 100644 index 0000000..1c18efb --- /dev/null +++ b/gpm-verbosity.patch @@ -0,0 +1,42 @@ +Index: src/prog/gpm-root.y +=================================================================== +--- src/prog/gpm-root.y.orig 2010-09-08 17:00:51.668569297 +0200 ++++ src/prog/gpm-root.y 2010-09-08 17:00:52.032543941 +0200 +@@ -870,7 +870,6 @@ int usage(void) + " -m modifier to use\n" + " -u inhibit user configuration files\n" + " -D don't auto-background and run as daemon\n" +- " -V increase amount of logged messages\n" + ); + + return 1; +Index: src/daemon/cmdline.c +=================================================================== +--- src/daemon/cmdline.c.orig 2010-09-08 17:00:51.788560939 +0200 ++++ src/daemon/cmdline.c 2010-09-08 17:01:43.769151777 +0200 +@@ -78,8 +78,9 @@ void cmdline(int argc, char **argv) + case 'u': option.autodetect = 1; break; + case 'T': opt_test++; break; + case 'v': printf(GPM_MESS_VERSION "\n"); exit(0); +- case '2': (which_mouse->opt_three) = -1; break; +- case '3': (which_mouse->opt_three) = 1; break; ++ case 'V': break; /* gpm_debug_level not supported anymore */ ++ case '2': (which_mouse->opt_three) = -1; break; ++ case '3': (which_mouse->opt_three) = 1; break; + default: exit(usage("commandline")); + } + } +Index: src/headers/message.h +=================================================================== +--- src/headers/message.h.orig 2010-09-08 17:00:51.984547286 +0200 ++++ src/headers/message.h 2010-09-08 17:00:53.060472330 +0200 +@@ -98,8 +98,7 @@ + " -t mouse-type sets mouse type (default '%s')\n" \ + " Use a non-existent type (e.g. \"help\") to get a list\n" \ + " -T test: read mouse, no clients\n" \ +- " -v print version and exit\n" \ +- " -V verbosity increase number of logged messages\n\n\n" \ ++ " -v print version and exit\n\n\n" \ + " Examples:\n\n" \ + " gpm -m /dev/misc/psaux -t ps2 to start with a ps2 mouse\n" \ + " gpm -m /dev/tts/0 -t mman to use mouse man on COM1\n\n" diff --git a/gpm-weak-wgetch.patch b/gpm-weak-wgetch.patch new file mode 100644 index 0000000..836a680 --- /dev/null +++ b/gpm-weak-wgetch.patch @@ -0,0 +1,40 @@ +--- + configure.ac.footer | 2 +- + src/lib/libcurses.c | 7 ++++++- + 2 files changed, 7 insertions(+), 2 deletions(-) + +Index: configure.ac.footer +=================================================================== +--- configure.ac.footer.orig 2013-04-16 12:26:55.701393713 +0200 ++++ configure.ac.footer 2013-04-16 12:29:05.441356326 +0200 +@@ -148,7 +148,7 @@ No|no|N|n) SHARED_LIBS=-lc ;; + AC_CHECK_LIB($i, wgetch,,,$TERMLIBS) + else :; fi + done +- SHARED_LIBS="$LIBS $TERMLIBS -lc" ++ SHARED_LIBS="-lc" + LIBS=$SAVELIBS ;; + esac + +Index: src/lib/libcurses.c +=================================================================== +--- src/lib/libcurses.c.orig 2012-10-26 23:21:38.000000000 +0200 ++++ src/lib/libcurses.c 2013-04-16 12:26:55.834390599 +0200 +@@ -41,7 +41,16 @@ + #endif /* HAVE_NCURSES_CURSES_H */ + #endif /* HAVE_NCURSES_H */ + +-#define GET(win) ((win) ? wgetch(win) : getch()) ++/* If win != NULL, it must have been created by ncurses anyway. ++ Avoid circular library dependencies. */ ++#pragma weak wgetch ++#if defined(NCURSES_VERSION_MAJOR) && (NCURSES_VERSION_MAJOR > 5) ++#pragma weak _nc_stdscr ++#else ++#pragma weak stdscr ++#endif ++ ++#define GET(win) ((win && wgetch) ? wgetch(win) : getch()) + + int Gpm_Wgetch(WINDOW *win) + { diff --git a/gpm.changes b/gpm.changes new file mode 100644 index 0000000..99a228d --- /dev/null +++ b/gpm.changes @@ -0,0 +1,791 @@ +------------------------------------------------------------------- +Fri Oct 15 07:29:47 UTC 2021 - Johannes Segitz + +- Added hardening to systemd service(s) (bsc#1181400). Modified: + * gpm.service + +------------------------------------------------------------------- +Wed Mar 10 13:17:37 UTC 2021 - Adam Majer + +- remove unnecessary StandardOutput override in the unit definition + file. (bsc#1182147) + +------------------------------------------------------------------- +Wed Jan 15 09:54:37 UTC 2020 - Adam Majer + +- gpm-fno-common.patch: fix compilation in Tumbleweed (bsc#1160873) + +------------------------------------------------------------------- +Thu Jan 9 07:43:00 UTC 2020 - Jean Delvare + +- Add back support for the TAOS evaluation module to inputattach. + +------------------------------------------------------------------- +Tue Mar 27 11:41:04 CEST 2018 - kukuk@suse.de + +- Use %license instead of %doc [bsc#1082318] + +------------------------------------------------------------------- +Thu Nov 23 13:40:02 UTC 2017 - rbrown@suse.com + +- Replace references to /var/adm/fillup-templates with new + %_fillupdir macro (boo#1069468) + +------------------------------------------------------------------- +Mon Sep 11 18:59:26 UTC 2017 - jengelh@inai.de + +- Update description and remove two unnecessary ldconfig calls. + +------------------------------------------------------------------- +Wed Jul 5 13:10:44 UTC 2017 - schwab@suse.de + +- decls.patch: fix missing declarations + +------------------------------------------------------------------- +Mon Jun 12 16:55:57 UTC 2017 - adam.majer@suse.de + +- synced SLE .changes into devel project (bnc#1041340) + +------------------------------------------------------------------- +Fri Jan 22 16:09:10 CET 2016 - pth@suse.de + +- Remove dependency on aaa_base as using %{_sysconfig} instead of + hardcoded /etc shuts up rpmlint. +- Use %{buildroot} and %{optflags} insead of env vars. + +------------------------------------------------------------------- +Wed Jan 13 10:54:53 CET 2016 - pth@suse.de + +- Add %post and %postun entries for libgpm2. +- Add a current version of GPL-2.0 with valid FSF address. +- Add gpm-fix_fsf_addess.patch to get the current FSF address into + gpm.h. +------------------------------------------------------------------- +Thu Jul 9 06:54:11 UTC 2015 - werner@suse.de + +- Make libgpm able to handle ncurses ABI 6 + +------------------------------------------------------------------- +Tue Apr 14 16:15:49 UTC 2015 - jengelh@inai.de + +- Update license: the only GPL3 parts found are in the scripts/ + directory, which is not packaged. + +------------------------------------------------------------------- +Wed May 21 11:06:04 UTC 2014 - jsegitz@novell.com + +- added necessary macros for systemd files + +------------------------------------------------------------------- +Tue May 13 10:34:12 UTC 2014 - nadvornik@suse.com + +- install gpm.service with mode 644 (bnc#877455) + +------------------------------------------------------------------- +Sat Apr 5 18:03:49 UTC 2014 - dimstar@opensuse.org + +- Install gpm.service without executable bit. The service files are + never 'started'. This silences a warning in journal: + systemd[1]: Configuration file /usr/lib/systemd/system/gpm.service + is marked executable. Please remove executable permission bits. + Proceeding anyway + +------------------------------------------------------------------- +Wed Mar 26 14:03:21 UTC 2014 - jengelh@inai.de + +- Implement shlib packaging guidelines: new libgpm2 subpackage +- Add missing %pre scriptlet + +------------------------------------------------------------------- +Mon Dec 2 11:40:18 UTC 2013 - coolo@suse.com + +- don't buildrequire systemd, we just need the macros + +------------------------------------------------------------------- +Mon Oct 28 13:46:46 UTC 2013 - p.drouand@gmail.com + +- Add systemd support and drop sysvinit support +- Change pid directory for new standard one +- Fix suse-wrong-suse-capitalisation rpmlint warning + +------------------------------------------------------------------- +Mon Apr 22 11:26:44 UTC 2013 - cfarrell@suse.com + +- license update: GPL-2.0+ and GPL-3.0+ + Scripts git-archive-tarbz2.sh and report_success.sh are GPL-3.0+ licensed + +------------------------------------------------------------------- +Tue Apr 16 15:01:42 CEST 2013 - pth@suse.de + +- Add software URL. +- Remove the patches tarball as upstream doesn't provide it anymore. + +------------------------------------------------------------------- +Tue Apr 16 12:23:35 CEST 2013 - pth@suse.de + +- Update to 1.20.7: + +- Adapt patches to changed sources. +- Add patch to pass the directory for gpm.h when generating + dependencies: gpm-dependencies.patch +- Add patch that enables the creation of the libgpm.so symlink + again and installs it: gpm-do_create_symlink.patch +- Removed patches not needed anymore: + gpm-gcc4.3.patch + gpm-libtool.patch + config-guess-sub-update.patch + +------------------------------------------------------------------- +Tue Feb 12 07:56:47 UTC 2013 - schwab@suse.de + +- config-guess-sub-update.patch: + Update config.guess/sub for aarch64 + +------------------------------------------------------------------- +Thu Jan 10 10:41:10 UTC 2013 - jengelh@inai.de + +- Remove obsolete/undesired tags/sections +- Use more robust make install call + +------------------------------------------------------------------- +Sat Oct 15 04:47:11 UTC 2011 - coolo@suse.com + +- add libtool as buildrequire to make the spec file more reliable + +------------------------------------------------------------------- +Fri Sep 30 15:18:56 UTC 2011 - uli@suse.com + +- cross-build fix: use %__cc macro + +------------------------------------------------------------------- +Thu Jan 27 16:57:52 CET 2011 - pth@suse.de + +- Through out the PS/2 patches that lead to gpm not working. +- Add patches from Fedora. + +------------------------------------------------------------------- +Tue Oct 26 16:44:52 UTC 2010 - cristian.rodriguez@opensuse.org + +- Own gpm pid file but %ghost it + +------------------------------------------------------------------- +Wed Sep 8 19:59:58 CEST 2010 - pth@suse.de + +- Fix patches. + +------------------------------------------------------------------- +Wed Sep 8 17:17:02 CEST 2010 - pth@suse.de + +- Update to latest stable version 1.20.6. Notable changes since + 1.20.1: + * Fix default handler in liblow.c + * Fixed SONAME (praise the Debian guys, Jonathan Nieder) + * Fix possible segfault (FD_SET/negative) + * Allow specifying ELISP variable on commandline + * Fix broken code semantics + * Fix socklen_t issue: Require posix header + * Fix building with glibc 2.8 + * Updated library to version 2.1.0 + * Gpm_GetLibVersion behaves more consistent (all numbers are one or two digits) +- Remove version number from patch name. +- Adapt and clean out patches. +- Split out contained patches to a separate tar ball as not to + confuse quilt. +- Use lzma instead of bzip2 to compress tarball. + +------------------------------------------------------------------- +Tue Sep 7 11:06:22 UTC 2010 - aj@suse.de + +- Split up devel package, do not package static library. +- Remove support for updating from SUSE Linux 8.2. + +------------------------------------------------------------------- +Sun Jan 10 19:07:40 UTC 2010 - coolo@novell.com + +- add baselibs.conf as source + +------------------------------------------------------------------- +Fri Jun 19 10:35:46 CEST 2009 - coolo@novell.com + +- disable as-needed for this package as it fails to build with it + +------------------------------------------------------------------- +Thu Jun 11 22:22:40 CEST 2009 - coolo@novell.com + +- fix build with glibc 2.10 + +------------------------------------------------------------------- +Wed Dec 10 12:34:56 CET 2008 - olh@suse.de + +- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade + (bnc#437293) + +------------------------------------------------------------------- +Mon Nov 24 12:34:56 CET 2008 - olh@suse.de + +- obsolete old -XXbit packages (bnc#437293) + +------------------------------------------------------------------- +Fri Aug 22 15:20:59 CEST 2008 - ro@suse.de + +- remove deprecated option from fillup_and_insserv + +------------------------------------------------------------------- +Mon Aug 11 10:20:49 CEST 2008 - anosek@suse.cz + +- fixed gpm not enabled at all run levels (bnc#340646) + - enabled gpm also for runlevel 5 in /etc/init.d/gpm + +------------------------------------------------------------------- +Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de + +- added baselibs.conf file to build xxbit packages + for multilib support + +------------------------------------------------------------------- +Wed Apr 9 09:26:43 CEST 2008 - anosek@suse.cz + +- fixed: gpm spams /var/log/messages (bnc#307209) (log.patch) + +------------------------------------------------------------------- +Fri Feb 22 00:01:15 CET 2008 - crrodriguez@suse.de + +- add missing calls to restart_on_update and stop_on_removal macros +- update obsolete XUnitedLinux tags in the init script + +------------------------------------------------------------------- +Wed Dec 12 11:17:26 CET 2007 - rguenther@suse.de + +- use FOPEN_MAX instead of OPEN_MAX to fix build. + +------------------------------------------------------------------- +Tue Aug 7 09:23:55 CEST 2007 - anosek@suse.cz + +- fixed /etc/sysconfig/mouse should configure the mouse by default for gpm + [#262749] + * modified sysconfig.mouse-gpm accordingly + +------------------------------------------------------------------- +Thu May 24 11:45:20 CEST 2007 - schwab@suse.de + +- Don't install t-mouse.el, part of emacs now. + +------------------------------------------------------------------- +Mon Mar 26 15:52:13 CEST 2007 - rguenther@suse.de + +- add bison BuildRequires + +------------------------------------------------------------------- +Thu Mar 22 16:37:52 CET 2007 - rguenther@suse.de + +- add ncurses-devel BuildRequires + +------------------------------------------------------------------- +Tue Feb 27 16:18:07 CET 2007 - prusnak@suse.cz + +- verbosity.patch [#247230] + * removed -V option from documentation (not supported anymore) + * silented error when -V provided on command-line + +------------------------------------------------------------------- +Tue Feb 13 14:03:56 CET 2007 - anosek@suse.cz + +- fixed libgpm.so.1 is not owned by any package [#244447] + (gpm-1.20.1.patch) + +------------------------------------------------------------------- +Thu Jan 4 12:00:46 CET 2007 - anosek@suse.cz + +- fixed twiddler.c:334: warning: operation on 'ptr' may be + undefined (warnings.patch) + +------------------------------------------------------------------- +Thu Feb 16 14:23:52 CET 2006 - mmarek@suse.cz + +- merge rcgpm-error-messages.diff into rcgpm +- hint users to run 'yast mouse' to configure gpm + [#114919 and duplicates] + +------------------------------------------------------------------- +Wed Jan 25 21:30:21 CET 2006 - mls@suse.de + +- converted neededforbuild to BuildRequires + +------------------------------------------------------------------- +Thu Nov 3 14:15:59 CET 2005 - mmarek@suse.cz + +- fix apparent typo in gunze touchscreen driver [#132053] + +------------------------------------------------------------------- +Tue Aug 23 17:54:03 CEST 2005 - pmladek@suse.cz + +- fixed the init script to print error messages if there are any + problems with configuration [#106700] + +------------------------------------------------------------------- +Sat Apr 9 17:18:33 CEST 2005 - aj@suse.de + +- Fix build also on i386 with GCC 4. + +------------------------------------------------------------------- +Sat Mar 26 23:48:12 CET 2005 - aj@suse.de + +- Fix build with GCC 4. + +------------------------------------------------------------------- +Thu Mar 24 16:10:02 CET 2005 - uli@suse.de + +- fixed to build on ARM + +------------------------------------------------------------------- +Wed Nov 10 11:50:47 CET 2004 - ro@suse.de + +- fixed file list + +------------------------------------------------------------------- +Fri Mar 05 17:32:00 CET 2004 - mcihar@suse.cz + +- fix possible segfault in Gpm_Open (bug #31970) + +------------------------------------------------------------------- +Fri Oct 17 17:41:03 CEST 2003 - mcihar@suse.cz + +- do not build as root + +------------------------------------------------------------------- +Mon Sep 15 09:14:47 CEST 2003 - mcihar@suse.cz + +- allow to set gpm repeating in sysconfig (GPM_REPEAT) + +------------------------------------------------------------------- +Thu Aug 14 15:53:27 CEST 2003 - mcihar@suse.cz + +- added activation metadata to sysconfig template (bug #28903) + +------------------------------------------------------------------- +Fri Jun 20 02:26:09 CEST 2003 - ro@suse.de + +- added directories to filelist + +------------------------------------------------------------------- +Thu Apr 24 14:52:03 CEST 2003 - ro@suse.de + +- merged postuns + +------------------------------------------------------------------- +Thu Apr 24 12:20:23 CEST 2003 - ro@suse.de + +- fix install_info --delete call and move from preun to postun + +------------------------------------------------------------------- +Fri Mar 14 19:41:59 CET 2003 - pmladek@suse.cz + +- redirected stdin, stdout and stderr to /dev/null in the daemon mode [#25386] + +------------------------------------------------------------------- +Tue Mar 04 19:18:59 CET 2003 - pmladek@suse.cz + +- fixed Gpm_Open to initialize option.consolename only for the first time + (Gpm_Open.patch) [#24587] + +------------------------------------------------------------------- +Mon Feb 17 17:33:43 CET 2003 - mmj@suse.de + +- Use %install_info macros [#23421] + +------------------------------------------------------------------- +Thu Jan 09 12:22:56 CET 2003 - pmladek@suse.cz + +- updated to the stable version 1.20.1: + * synaptics ps2 touchpad support + * code cleanup in various main files + * prototype of mouse support for n-mice. expect final in 1.20.3. +- removed the obsolete compat patch which fixed compactibility with an older + libgpm.so.1 +- removed the obsolete synaptic patch which fixed synaptics.c to read + /etc/gpm/syn.conf with TABs +- removed the obsolete old_pid_file patch which fixed the start of gpm server + when an old invalid /var/run/gpm.pid exists +- removed the prototype of mouse support for n-mice, because it does not work + for the present and it is uncomplete, it requires to define the mouse device + before the mouse type on the command line, but the option -M is still needed, + so this feature is not complete and can confuse the user + (no_templates_for_new_multiple_mode.patch) +- fixed the default gpm/syn.conf according to the new synaptics.c +- fixed to link with "-lm" if needed (ceil is not an inline function) + and where needed (gpm, libgpm.so) + +------------------------------------------------------------------- +Thu Jan 02 11:31:30 CET 2003 - pmladek@suse.cz + +- added metadata to the sysconfig template [#22660] +- got rid of the variable GPM_PROTOCOL from the init script and the + sysconfig template, used MOUSETYPE instead (both variables were generated + by YaST in SuLi 8.2, which is confusing and the variable MOUSETYPE + better conforms with other variable names MOUSEDEVICE and XMOUSETYPE) + +------------------------------------------------------------------- +Wed Sep 18 01:45:15 CEST 2002 - ro@suse.de + +- removed bogus self-provides + +------------------------------------------------------------------- +Mon Sep 2 08:47:50 CEST 2002 - kukuk@suse.de + +- Remove unused yacc from neededforbuild +- Move rcgpm symlink to the same location as the binary is +- Remove not existent services from init script header + +------------------------------------------------------------------- +Tue Aug 13 09:55:56 MEST 2002 - pmladek@suse.cz + +- already enabled __os_install_post macro + +------------------------------------------------------------------- +Mon Aug 12 19:33:06 MEST 2002 - pmladek@suse.de + +- fixed problem with variable argument lists [#17528] +- removed patch which fixes messages, they are completely disabled + in libgpm now, generally, no library should write messages on + standart output or standart error output (it made problems + with w3m for example) + +------------------------------------------------------------------- +Tue Jul 30 23:32:16 CEST 2002 - ro@suse.de + +- also rename MOUSE to MOUSEDEVICE on update +- added PreReqs + +------------------------------------------------------------------- +Tue Jul 30 17:26:03 MEST 2002 - pmladek@suse.cz + +- used the MOUSEDEVICE variable instead of the MOUSE variable [#17266] +- the MOUSEDEVICE variable is filled up into /etc/sysconfig/mouse + by this package now [#17266] + +------------------------------------------------------------------- +Thu Jul 25 11:15:51 CEST 2002 - pmladek@suse.cz + +- fixed compactibility with older libgpm.so.1 +- fixed gpm messages: + * added prefix "gpm: " + * disabled debug messages in libgpm + * improved message in function Gpm_Open when gpm server + is not running + +------------------------------------------------------------------- +Thu Jul 11 16:03:12 CEST 2002 - pmladek@suse.cz + +- added Silitek mouse drivers created by Dr. Werner Fink +- gpm config files changes: + * installed gpm-twiddler.conf, many thanks to Dr. Werner Fink for hint + * fixed and installed gpm-syn.conf + * moved all gpm config files from /etc to /etc/gpm + * removed prefix "gpm-" from gpm config file names + * created README.SuSE + * improved "probe" part in init script to check changes + in config files from /etc/gpm/* +- fixed synaptics.c to read /etc/gpm/syn.conf with TABs +- fixed support for reconnection for PS/2 mouses to save necessary values + in struct mouse_features (to work correctly with dual-mouse stuff) + +------------------------------------------------------------------- +Wed Jul 10 17:05:00 CEST 2002 - pmladek@suse.cz + +- updated to version 1.20.1rc1: + * synaptics ps2 touchpad support + * removed compile problems + * objdir/ support without problems + * cleaned up internal message functions + * clean {g,m,}awk support + * clean ps2 initialization (allows using ps2 mouse after you + used synps!) + * gpm clients can't cause gpm do die. +- removed obsolete patch for gpm-root.y +- removed obsolete ia64 patch +- removed obsolete Werner's patch for devfs.c +- improved patch for reconnection of PS/2 mouses +- fixed start of gpm server when an old invalid /var/run/gpm.pid exists +- reorganized patches +- used %run_ldconfig macro in %post and %postun sections +- fixed init script according to skeleton + +------------------------------------------------------------------- +Tue Jul 9 11:43:38 CEST 2002 - werner@suse.de + +- Bug fix in devfs.c for twid and other keyboards +- Bug fix in gpm.c: Some PS/2 devices really wants be readed + byte by byte +- Complete the PS/2 command bytes in headers/defines.h + +------------------------------------------------------------------- +Fri Mar 15 17:19:12 CET 2002 - kukuk@suse.de + +- fix typo in sysconfig.gpm [Bug #15034] + +------------------------------------------------------------------- +Thu Jan 17 19:06:13 CET 2002 - pmladek@suse.cz + +- added variable GPM_PROTOCOL to /etc/sysconfig/mouse +- if the variable GPM_PARAM is empty then gpm will start with option + "-t $GPM_PROTOCOL -m $MOUSE" now + +------------------------------------------------------------------- +Wed Jan 16 18:40:46 CET 2002 - ro@suse.de + +- removed setup.selection + +------------------------------------------------------------------- +Fri Jan 11 18:39:17 CET 2002 - pmladek@suse.cz + +- used macro %{_libdir} to fix for lib64 +- fixed rights of static library to 644 +- fixed documentation in /usr/share/doc/packages/gpm + +------------------------------------------------------------------- +Tue Jan 8 20:30:05 CET 2002 - egmont@suselinux.hu + +- removed colons from init script messages + +------------------------------------------------------------------- +Tue Jan 8 17:34:20 CET 2002 - ro@suse.de + +- moved GPM_PARAM to /etc/sysconfig/mouse + +------------------------------------------------------------------- +Mon Dec 10 18:03:26 CET 2001 - pmladek@suse.cz + +- updated to version 1.19.6: + * Synaptics 4 Button Touchpad support + * IntelliMouse Explorer support + * some bug fixes +- removed obsolete mktemp security patch + +------------------------------------------------------------------- +Wed Dec 5 02:18:19 CET 2001 - ro@suse.de + +- add "-p" to macro call to deactivate perl-hack + +------------------------------------------------------------------- +Wed Dec 5 01:51:46 CET 2001 - ro@suse.de + +- use fillup_and_insserv and removed START_GPM +- move variable GPM_PARAM to this package + +------------------------------------------------------------------- +Thu Oct 18 15:37:02 CEST 2001 - pmladek@suse.cz + +- fixed permissions of /dev/gpmctl back to 777, thus the + applications (mc) can use mouse support for normal user (#11893) + +------------------------------------------------------------------- +Mon Sep 17 12:08:03 CEST 2001 - pmladek@suse.cz + +- fixed to detect tokens AA 00 only in protocols + for ps/2 mouses + +------------------------------------------------------------------- +Mon Sep 10 17:46:51 CEST 2001 - pmladek@suse.cz + +- fixed to read only two bytes when mouse is + reconected and it sends tokens AA 00 + +------------------------------------------------------------------- +Fri Sep 7 11:44:56 CEST 2001 - pmladek@suse.cz + +- fixed detection of reconnection of ps2 mouses and friends + with kernel 2.4.9 or higher (bug #9822) + * I take inspiration in patch from + George Staikos (staikos@0wned.org) + +------------------------------------------------------------------- +Thu Aug 23 10:30:51 CEST 2001 - pmladek@suse.cz + +- updated to version 1.19.3: + * security fixes: + * close the newly accept()ed socket in case of + identification failure + * removed initial setuid(0) call + * added initgroups() + * many bugfixes + * features: + * re-check console size on console change + * changed use of -o option +- removed obsolete security patches +- removed obsolete resize patch +- applied two patches from RedHat: + * fix permissions on /dev/gpmctl + * call initgroups in gpm-root before spawning command as user + * make gpm-root work on big endian + +------------------------------------------------------------------- +Mon Aug 6 15:59:55 CEST 2001 - kukuk@suse.de + +- Fix comment about init script location [Bug #9494] + +------------------------------------------------------------------- +Thu Jun 14 16:46:45 CEST 2001 - pmladek@suse.cz + +- fixed link libgpm.so.1 + +------------------------------------------------------------------- +Fri Jun 8 12:26:36 CEST 2001 - kukuk@suse.de + +- Use _libdir macros + +------------------------------------------------------------------- +Fri Jun 8 11:14:55 CEST 2001 - pmladek@suse.cz + +- fixed to compile on sparc64 (libraries in /usr/lib64 now) +- fixed BUILD_ROOT + +------------------------------------------------------------------- +Wed May 16 15:15:24 CEST 2001 - pmladek@suse.cz + +- fixed cast warnings on ia64 + +------------------------------------------------------------------- +Mon Apr 23 07:51:16 CEST 2001 - pmladek@suse.cz + +- fixed warnings on ia64 + +------------------------------------------------------------------- +Thu Apr 12 05:33:05 CEST 2001 - pmladek@suse.cz + +- fixed init script by new skeleton +- fixed to compile + - removed include $(DEPS) from makefile + +------------------------------------------------------------------- +Mon Jan 15 10:06:52 CET 2001 - nadvornik@suse.cz + +- added Required-Start: $remote_fs $syslog [bug #5580] + +------------------------------------------------------------------- +Tue Jan 2 00:02:38 CET 2001 - olh@suse.de + +- add script name to %postin + +------------------------------------------------------------------- +Wed Dec 20 16:12:48 MET 2000 - pthomas@suse.de + +- Fix bug in Gpm_Wgetch + +------------------------------------------------------------------- +Tue Nov 28 18:31:00 CET 2000 - ro@suse.de + +- sbin/init.d -> etc/init.d + +------------------------------------------------------------------- +Wed Nov 22 10:58:21 CET 2000 - nadvornik@suse.cz + +- removed runlevel links +- fixed init script + +------------------------------------------------------------------- +Mon Oct 9 09:00:19 CEST 2000 - nadvornik@suse.cz + +- fixed Copyright +- used bzip2 + +------------------------------------------------------------------- +Fri Oct 6 09:46:00 CEST 2000 - schwab@suse.de + +- Use getdtablesize() instead of OPEN_MAX. + +------------------------------------------------------------------- +Mon Jul 17 09:33:58 CEST 2000 - nadvornik@suse.cz + +- added security patch for disable-paste. Now it don't + need to be installed with suid root. + +------------------------------------------------------------------- +Thu Apr 27 08:58:34 CEST 2000 - nadvornik@suse.cz + +- added initgroups() patch +- used --sysconfdir=/etc + +------------------------------------------------------------------- +Tue Apr 18 09:56:08 CEST 2000 - nadvornik@suse.cz + +- added BuildRoot + +------------------------------------------------------------------- +Mon Apr 3 15:12:32 MEST 2000 - uli@suse.de + +- merged in gpm-root fix by Alessandro Rubini + +------------------------------------------------------------------- +Fri Feb 25 15:38:57 CET 2000 - kukuk@suse.de + +- Move /usr/{info,man} -> /usr/share/{info,man} + +------------------------------------------------------------------- +Mon Jan 31 13:46:24 MET 2000 - uli@suse.de + +- added fix for possible /tmp race attacks by thomas@suse.de + +------------------------------------------------------------------- +Fri Dec 17 00:52:15 CET 1999 - ro@suse.de + +- removed params for ldconfig (-l does not work any more) +- update to 1.18.1 +- got rid of Makefile.Linux +- use RPM_OPT_FLAGS for configure + +------------------------------------------------------------------- +Mon Oct 11 12:35:02 MEST 1999 - uli@suse.de + +- update -> 1.18.0 + +------------------------------------------------------------------- +Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de + +- ran old prepare_spec on spec file to switch to new prepare_spec. + +------------------------------------------------------------------- +Tue Mar 16 18:15:37 MET 1999 - ro@suse.de + +- fixed rc-script: check if gpm already running + +------------------------------------------------------------------- +Fri Mar 5 17:48:03 MET 1999 - ro@suse.de + +- fixed rc script + +------------------------------------------------------------------- +Tue Mar 2 18:31:19 MET 1999 - ro@suse.de + +- update to 1.17.5 + +------------------------------------------------------------------- +Mon Dec 7 11:48:57 MET 1998 - ro@suse.de + +- updated init-script +- added rcgpm symlink + +---------------------------------------------------------------------------- +Fri Oct 24 15:06:18 MEST 1997 - florian@suse.de + +- update to gpm 1.13 + + +---------------------------------------------------------------------------- +Sun May 4 15:23:41 CEST 1997 - bs@suse.de + +- added /var/adm/setup/setup.selection + + +---------------------------------------------------------------------------- +Wed Apr 30 15:57:14 CEST 1997 - florian@suse.de + + +- update to version 1.12 + + +---------------------------------------------------------------------------- +Wed Nov 6 00:13:26 CET 1996 - florian@suse.de + + +- move startup scripts from aaa_base to gpm.tgz + diff --git a/gpm.service b/gpm.service new file mode 100644 index 0000000..18211d8 --- /dev/null +++ b/gpm.service @@ -0,0 +1,26 @@ +[Unit] +Description=Console Mouse manager + +# This could probably benefit from socket activation, but honestly I think it +# is time for gpm to go away, and hence I am not planning to spend the time +# to add socket activation here. + +[Service] +# added automatically, for details please see +# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort +ProtectSystem=full +ProtectHome=true +ProtectHostname=true +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectKernelLogs=true +ProtectControlGroups=true +RestrictRealtime=true +# end of automatic additions +EnvironmentFile=-/etc/sysconfig/mouse +ExecStart=/usr/sbin/gpm -m /dev/input/mice -t exps2 +Type=forking +PIDFile=/run/gpm.pid + +[Install] +WantedBy=multi-user.target diff --git a/gpm.spec b/gpm.spec new file mode 100644 index 0000000..fa2f79b --- /dev/null +++ b/gpm.spec @@ -0,0 +1,231 @@ +# +# spec file for package gpm +# +# Copyright (c) 2021 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +#Compat macro for new _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} + %define _fillupdir /var/adm/fillup-templates +%endif + +Name: gpm +%define lname libgpm2 +Version: 1.20.7 +Release: 0 +Summary: Console Mouse Support +License: GPL-2.0-or-later AND GPL-3.0-or-later +Group: System/Console +URL: http://linux.schottelius.org/gpm/ + +Source0: http://www.nico.schottelius.org/software/gpm/archives/gpm-%{version}.tar.lzma +Source2: gpm.service +Source3: sysconfig.mouse-%{name} +Source4: README.SUSE +Source5: baselibs.conf +Source6: inputattach.c +Source7: gpl-2.0.txt +Patch0: gpm-DESTDIR.patch +Patch4: gpm-syn_conf.patch +Patch6: gpm-conf.patch +Patch7: gpm-va_arg.patch +Patch9: gpm-no_templates_for_new_multiple_mode.patch +Patch10: gpm-ceil.patch +Patch11: gpm-Gpm_Open.patch +Patch12: gpm-daemon_mode.patch +Patch15: gpm-verbosity.patch +Patch17: gpm-log.patch +Patch18: gpm-glibc210.patch +Patch19: gpm-use_getdtablesize.patch +Patch20: gpm-int_ptr_casts.patch +Patch21: gpm-close-fds.patch +Patch23: gpm-lib-silent.patch +Patch25: gpm-multilib.patch +Patch26: gpm-weak-wgetch.patch +#PATCH-FIX-UPSTREAM Pass path to gpm.h +Patch28: gpm-dependencies.patch +#PATCH-FIX-UPSTREAM Create the symlink libgpm.so +Patch29: gpm-do_create_symlink.patch +#PATCH-FIX-UPSTREAM Copy the current licence text from gpl-2.0+ to gpm.h +Patch30: gpm-fix_fsf_addess.patch +#PATCH-FIX-UPSTREAM Fix missing declarations +Patch31: decls.patch +Patch32: gpm-fno-common.patch +BuildRequires: bison +BuildRequires: libtool +BuildRequires: lzma +BuildRequires: makeinfo +BuildRequires: ncurses-devel +BuildRequires: systemd-rpm-macros +Requires(pre): %install_info_prereq +Requires(pre): /bin/sed +Requires(pre): %fillup_prereq +%{?systemd_requires} +Provides: select +%ifarch ppc64 +# bug437293 +Obsoletes: gpm-64bit +%endif + +%description +The gpm (general purpose mouse) daemon is a mouse server for +applications running on the Linux console. It provides cut and paste +operations. If a gpm-aware program, such as mc (Midnight Commander) +or w3m (a text-based web browser), is active, they will use to gpm to +receive mouse events and do custom handling. + +%package -n %lname +Summary: Console mouse support library +License: GPL-2.0-or-later +Group: System/Libraries + +%description -n %lname +This package provides a library that handles mouse requests and +delivers them to applications. See the description for the "gpm" +package for more information. + +%package devel +Summary: Development files for gpm (Console Mouse Support) +License: GPL-2.0-or-later +Group: Development/Libraries/C and C++ +Requires: %lname = %version + +%description devel +Development files for the gpm (general purpose mouse) package. + +%prep +%setup -q +%patch0 +%patch4 +%patch6 +%patch7 +%patch9 +%patch10 +%patch11 +%patch12 +%patch15 +%patch17 +%patch18 +%patch19 +%patch20 +%patch21 +%patch23 +%patch25 +%patch26 +%patch28 +%patch29 +%patch30 +%patch31 -p1 +%patch32 -p1 +cp %{S:2} %{S:3} %{S:4} . +cp %{S:7} COPYING + +%build +# This package failed when testing with -Wl,-as-needed being default. +# So we disable it here, if you want to retest, just delete this comment and the line below. +#export SUSE_ASNEEDED=1 +NOCONFIGURE=1 ./autogen.sh +autoreconf -fi +export CFLAGS="%{optflags} -DQUIET_LIBGPM -D_REENTRANT" +%configure --disable-static \ + --sysconfdir=%{_sysconfdir}/gpm +make CC=gcc %{?_smp_mflags} +gcc %{optflags} -o inputattach %{SOURCE6} + +%install +make install DESTDIR="%buildroot" ROOT="" +# +# gpm confings +install -d %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/} +for file in conf/gpm-* ; do + install -d %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/} + install -m 644 $file %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/} +done +# +# lisp +# an updated version is part of emacs now +#install -d %%{buildroot}/usr/share/emacs/site-lisp +#install contrib/emacs/t-mouse.el* %%{buildroot}/usr/share/emacs/site-lisp +# +# start script +install -m 755 -d %{buildroot}%{_fillupdir} +install -m 755 -d %{buildroot}/%{_unitdir} +install -m 755 -d %{buildroot}/usr/sbin +install -m 755 inputattach %{buildroot}%{_sbindir} +install -m 644 sysconfig.mouse-%{name} %{buildroot}%{_fillupdir} +install -m 644 %{S:2} %{buildroot}/%{_unitdir}/gpm.service +ln -sf %{_sbindir}/service %{buildroot}/usr/sbin/rcgpm +# there were two variables with the same value GPM_PROTOCOL and MOUSETYPE +# in SuLi 8.2. The MOUSETYPE variable better conforms with with other +# variable names MOUSEDEVICE and XMOUSETYPE name scheme, so get rid of +# the obsolete GPM_PROTOCOL variable +if grep "^GPM_PROTOCOL=" %{_sysconfdir}/sysconfig/mouse 1>/dev/null 2>/dev/null ; then + if grep "^MOUSETYPE=" %{_sysconfdir}/sysconfig/mouse 1>/dev/null 2>/dev/null ; then + # comment out the obsolete MOUSETYPE variable + perl -pi -e "s|^(MOUSETYPE=.*)$|\#\$1 \# the variable GPM_PROTOCOL was renamed to MOUSETYPE|" %%{_sysconfdir}/sysconfig/mouse + fi + # rename GPM_PROTOCOL to MOUSETYPE + perl -pi -e "s|^GPM_PROTOCOL=(.*)$|\# the variable GPM_PROTOCOL was renamed to MOUSETYPE\nMOUSETYPE=\$1|" %%{_sysconfdir}/sysconfig/mouse +fi + +# Do not package static library +rm -fv %{buildroot}/%{_libdir}/libgpm.a +mkdir -p %{buildroot}/run +touch %{buildroot}/run/gpm.pid + +%pre +%service_add_pre gpm.service + +%preun +%service_del_preun gpm.service + +%post +%{fillup_only gpm} +%service_add_post gpm.service +%{fillup_only -an mouse} +%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz + +%postun +%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz +%service_del_postun gpm.service + +%post -n %lname -p /sbin/ldconfig +%postun -n %lname -p /sbin/ldconfig + +%files +%defattr(-,root,root) +%license COPYING +%doc README README.gpm2 README.SUSE TODO +%doc doc/Announce doc/FAQ doc/README* doc/changelog +%{_infodir}/* +%{_mandir}/*/* +%dir %config %{_sysconfdir}/gpm +%config %{_sysconfdir}/gpm/* +%{_unitdir}/gpm.service +%{_bindir}/* +%{_sbindir}/* +%{_fillupdir}/* +%ghost /run/gpm.pid + +%files -n %lname +%defattr(-,root,root) +%_libdir/libgpm.so.2* + +%files devel +%defattr(-,root,root) +%{_includedir}/gpm.h +%{_libdir}/libgpm.so + +%changelog diff --git a/inputattach.c b/inputattach.c new file mode 100644 index 0000000..825de80 --- /dev/null +++ b/inputattach.c @@ -0,0 +1,481 @@ +/* + * $Id: inputattach.c,v 1.2 2007/04/02 14:18:54 tjanouse Exp $ + * + * Copyright (c) 1999-2000 Vojtech Pavlik + * + * Sponsored by SuSE + * + * Twiddler support Copyright (c) 2001 Arndt Schoenewald + * Sponsored by Quelltext AG (http://www.quelltext-ag.de), Dortmund, Germany + */ + +/* + * Input line discipline attach program + */ + +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Should you need to contact me, the author, you can do so either by + * e-mail - mail your message to , or by paper mail: + * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic + */ + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +int readchar(int fd, unsigned char *c, int timeout) +{ + struct timeval tv; + fd_set set; + + tv.tv_sec = 0; + tv.tv_usec = timeout * 1000; + + FD_ZERO(&set); + FD_SET(fd, &set); + + if (!select(fd+1, &set, NULL, NULL, &tv)) return -1; + if (read(fd, c, 1) != 1) return -1; + + return 0; +} + + + +void setline(int fd, int flags, int speed) +{ + struct termios t; + + tcgetattr(fd, &t); + + t.c_cflag = flags | CREAD | HUPCL | CLOCAL; + t.c_iflag = IGNBRK | IGNPAR; + t.c_oflag = 0; + t.c_lflag = 0; + t.c_cc[VMIN ] = 1; + t.c_cc[VTIME] = 0; + + cfsetispeed(&t, speed); + cfsetospeed(&t, speed); + + tcsetattr(fd, TCSANOW, &t); +} + +int logitech_command(int fd, char *c) +{ + int i; + unsigned char d; + for (i = 0; c[i]; i++) { + write(fd, c + i, 1); + if (readchar(fd, &d, 1000)) + return -1; + if (c[i] != d) + return -1; + } + return 0; +} + +int magellan_init(int fd, long *id, long *extra) +{ + write(fd, "m3\rpBB\rz\r", 9); + return 0; +} + +int warrior_init(int fd, long *id, long *extra) +{ + if (logitech_command(fd, "*S")) return -1; + setline(fd, CS8, B4800); + return 0; +} + +int spaceball_waitchar(int fd, unsigned char c, unsigned char *d, int timeout) +{ + unsigned char b = 0; + + while (!readchar(fd, &b, timeout)) { + if (b == 0x0a) continue; + *d++ = b; + if (b == c) break; + } + + *d = 0; + + return -(b != c); +} + +int spaceball_waitcmd(int fd, char c, char *d) +{ + int i; + + for (i = 0; i < 8; i++) { + if (spaceball_waitchar(fd, 0x0d, d, 1000)) + return -1; + if (d[0] == c) + return 0; + } + + return -1; +} + +int spaceball_cmd(int fd, char *c, char *d) +{ + int i; + + for (i = 0; c[i]; i++) + write(fd, c + i, 1); + write(fd, "\r", 1); + + i = spaceball_waitcmd(fd, toupper(c[0]), d); + + return i; +} + +#define SPACEBALL_1003 1 +#define SPACEBALL_2003B 3 +#define SPACEBALL_2003C 4 +#define SPACEBALL_3003C 7 +#define SPACEBALL_4000FLX 8 +#define SPACEBALL_4000FLX_L 9 + +int spaceball_init(int fd, long *id, long *extra) +{ + char r[64]; + + if (spaceball_waitchar(fd, 0x11, r, 4000) || + spaceball_waitchar(fd, 0x0d, r, 1000)) + return -1; + + if (spaceball_waitcmd(fd, '@', r)) + return -1; + + if (strncmp("@1 Spaceball alive", r, 18)) + return -1; + + if (spaceball_waitcmd(fd, '@', r)) + return -1; + + if (spaceball_cmd(fd, "hm", r)) + return -1; + + if (!strncmp("Hm2003B", r, 7)) + *id = SPACEBALL_2003B; + if (!strncmp("Hm2003C", r, 7)) + *id = SPACEBALL_2003C; + if (!strncmp("Hm3003C", r, 7)) + *id = SPACEBALL_3003C; + + if (!strncmp("HvFirmware", r, 10)) { + + if (spaceball_cmd(fd, "\"", r)) + return -1; + + if (strncmp("\"1 Spaceball 4000 FLX", r, 21)) + return -1; + + if (spaceball_waitcmd(fd, '"', r)) + return -1; + + if (strstr(r, " L ")) + *id = SPACEBALL_4000FLX_L; + else + *id = SPACEBALL_4000FLX; + + if (spaceball_waitcmd(fd, '"', r)) + return -1; + + if (spaceball_cmd(fd, "YS", r)) + return -1; + + if (spaceball_cmd(fd, "M", r)) + return -1; + + return 0; + } + + if (spaceball_cmd(fd, "P@A@A", r) || + spaceball_cmd(fd, "FT@", r) || + spaceball_cmd(fd, "MSS", r)) + return -1; + + return 0; +} + +int stinger_init(int fd, long *id, long *extra) +{ + int i; + unsigned char c; + unsigned char *response = "\r\n0600520058C272"; + + if (write(fd, " E5E5", 5) != 5) /* Enable command */ + return -1; + + for (i = 0; i < 16; i++) /* Check for Stinger */ + if (readchar(fd, &c, 200) || (c != response[i])) + return -1; + + return 0; +} + +int mzp_init(int fd, long *id, long *extra) +{ + if (logitech_command(fd, "*X*q")) return -1; + setline(fd, CS8, B9600); + return 0; +} + +int newton_init(int fd, long *id, long *extra) +{ + int i; + unsigned char c; + unsigned char response[35] = + { 0x16, 0x10, 0x02, 0x64, 0x5f, 0x69, 0x64, 0x00, + 0x00, 0x00, 0x0c, 0x6b, 0x79, 0x62, 0x64, 0x61, + 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x6e, + 0x6f, 0x66, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x03, 0xdd, 0xe7 }; + + for (i = 0; i < 35; i++) + if (readchar(fd, &c, 400) || (c != response[i])) + return -1; + + return 0; +} + +int twiddler_init(int fd, long *id, long *extra) +{ + unsigned char c[10]; + int count, line; + + /* Turn DTR off, otherwise the Twiddler won't send any data. */ + if (ioctl(fd, TIOCMGET, &line)) return -1; + line &= ~TIOCM_DTR; + if (ioctl(fd, TIOCMSET, &line)) return -1; + + /* Check whether the device on the serial line is the Twiddler. + * + * The Twiddler sends data packets of 5 bytes which have the following + * properties: the MSB is 0 on the first and 1 on all other bytes, and + * the high order nibble of the last byte is always 0x8. + * + * We read and check two of those 5 byte packets to be sure that we + * are indeed talking to a Twiddler. */ + + /* Read at most 5 bytes until we find one with the MSB set to 0 */ + for (count = 0; count < 5; count++) { + if (readchar(fd, c+0, 500)) return -1; + if ((c[0] & 0x80) == 0) break; + } + + if (count == 5) { + /* Could not find header byte in data stream */ + return -1; + } + + /* Read remaining 4 bytes plus the full next data packet */ + for (count = 1; count < 10; count++) { + if (readchar(fd, c+count, 500)) return -1; + } + + /* Check whether the bytes of both data packets obey the rules */ + for (count = 1; count < 10; count++) { + if ((count % 5 == 0 && (c[count] & 0x80) != 0) + || (count % 5 == 4 && (c[count] & 0xF0) != 0x80) + || (count % 5 != 0 && (c[count] & 0x80) != 0x80)) { + /* Invalid byte in data packet */ + return -1; + } + } + + return 0; +} + +int dump_init(int fd, long *id, long *extra) +{ + unsigned char c, o = 0; + + c = 0x80; + + if (write(fd, &c, 1) != 1) /* Enable command */ + return -1; + + while (1) + if (!readchar(fd, &c, 1)) { + printf("%02x (%c) ", c, ((c > 32) && (c < 127)) ? c : 'x'); + o = 1; + } else { + if (o) { + printf("\n"); + o = 0; + } + } +} + +struct input_types { + char name[16]; + char name2[16]; + int speed; + int flags; + unsigned long type; + unsigned long id; + unsigned long extra; + int flush; + int (*init)(int fd, long *id, long *extra); +}; + +struct input_types input_types[] = { + +{ "--sunkbd", "-skb", B1200, CS8, SERIO_SUNKBD, 0, 0, 1, NULL }, +{ "--lkkbd", "-lk", B4800, CS8|CSTOPB, SERIO_LKKBD, 0, 0, 1, NULL }, +{ "--vsxxx-aa", "-vs", B4800, CS8|CSTOPB|PARENB|PARODD,SERIO_VSXXXAA, 0, 0, 1, NULL }, +{ "--spaceorb", "-orb", B9600, CS8, SERIO_SPACEORB, 0, 0, 1, NULL }, +{ "--spaceball", "-sbl", B9600, CS8, SERIO_SPACEBALL,0, 0, 0, spaceball_init }, +{ "--magellan", "-mag", B9600, CS8 | CSTOPB | CRTSCTS, SERIO_MAGELLAN, 0, 0, 1, magellan_init }, +{ "--warrior", "-war", B1200, CS7 | CSTOPB, SERIO_WARRIOR, 0, 0, 1, warrior_init }, +{ "--stinger", "-sting", B1200, CS8, SERIO_STINGER, 0, 0, 1, stinger_init }, +{ "--mousesystems", "-msc", B1200, CS8, SERIO_MSC, 0, 0x01, 1, NULL }, +{ "--sunmouse", "-sun", B1200, CS8, SERIO_SUN, 0, 0x01, 1, NULL }, +{ "--microsoft", "-bare", B1200, CS7, SERIO_MS, 0, 0, 1, NULL }, +{ "--mshack", "-ms", B1200, CS7, SERIO_MS, 0, 0x01, 1, NULL }, +{ "--mouseman", "-mman", B1200, CS7, SERIO_MP, 0, 0x01, 1, NULL }, +{ "--intellimouse", "-ms3", B1200, CS7, SERIO_MZ, 0, 0x11, 1, NULL }, +{ "--mmwheel", "-mmw", B1200, CS7 | CSTOPB, SERIO_MZP, 0, 0x13, 1, mzp_init }, +{ "--iforce", "-ifor", B38400, CS8, SERIO_IFORCE, 0, 0, 0, NULL }, +{ "--newtonkbd", "-newt", B9600, CS8, SERIO_NEWTON, 0, 0, 0, newton_init }, +{ "--h3600ts", "-ipaq", B115200, CS8, SERIO_H3600, 0, 0, 0, NULL }, +{ "--stowawaykbd", "-ipaqkbd", B115200, CS8, SERIO_STOWAWAY, 0, 0, 0, NULL }, +{ "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0, 0, 1, NULL }, +{ "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0, 0, 0, twiddler_init }, +{ "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0, 0, 0, twiddler_init }, +{ "--elotouch", "-elo", B9600, CS8 | CRTSCTS, SERIO_ELO, 0, 0, 0, NULL }, +{ "--elo4002", "-elo6b", B9600, CS8 | CRTSCTS, SERIO_ELO, 1, 0, 0, NULL }, +{ "--elo271-140", "-elo4b", B9600, CS8 | CRTSCTS, SERIO_ELO, 2, 0, 0, NULL }, +{ "--elo261-280", "-elo3b", B9600, CS8 | CRTSCTS, SERIO_ELO, 3, 0, 0, NULL }, +#ifdef SERIO_TAOSEVM +{ "--taos-evm", "-taos", B1200, CS8, SERIO_TAOSEVM, 0, 0, 0, NULL }, +#endif +{ "--dump", "-dump", B2400, CS8, 0, 0, 0, 0, dump_init }, +{ "", "", 0, 0 } + +}; + +int main(int argc, char **argv) +{ + unsigned long devt; + int ldisc; + int type; + long id, extra; + int fd; + char c; + + if (argc < 2 || argc > 4 || (argc == 4 && strcmp(argv[3], "--daemon")) || !strcmp("--help", argv[1])) { + puts(""); + puts("Usage: inputttach "); + puts(""); + puts("Modes:"); + puts(" --sunkbd -skb Sun Type 4 and Type 5 keyboards"); + puts(" --lkkbd -lk DEC LK201 / LK401 keyboards"); + puts(" --vsxxx-aa -vs DEC VSXXX-AA / VSXXX-GA mouse and VSXXX-AB tablet"); + puts(" --spaceorb -orb SpaceOrb 360 / SpaceBall Avenger"); + puts(" --spaceball -sbl SpaceBall 2003 / 3003 / 4000 FLX"); + puts(" --magellan -mag Magellan / SpaceMouse"); + puts(" --warrior -war WingMan Warrior"); + puts(" --stinger -stng Gravis Stinger"); + puts(" --mousesystems -msc 3-button Mouse Systems mice"); + puts(" --sunmouse -sun 3-button Sun mice"); + puts(" --microsoft -bare 2-button Microsoft mice"); + puts(" --mshack -ms 3-button mice in Microsoft mode"); + puts(" --mouseman -mman 3-button Logitech and Genius mice"); + puts(" --intellimouse -ms3 Microsoft IntelliMouse"); + puts(" --mmwheel -mmw Logitech mice with 4-5 buttons or wheel"); + puts(" --iforce -ifor I-Force joysticks and wheels"); + puts(" --h3600ts -ipaq Ipaq h3600 touchscreen"); + puts(" --stowawaykbd -ipaqkbd Stowaway keyboard"); + puts(" --ps2serkbd -ps2ser PS/2 via serial keyboard"); + puts(" --twiddler -twid Handykey Twiddler chording keyboard"); + puts(" --twiddler-joy -twidjoy Handykey Twiddler used as a joystick"); +#ifdef SERIO_TAOSEVM + puts(" --taos-evm -taos TAOS evaluation module"); +#endif + puts(""); + return 1; + } + + for (type = 0; input_types[type].speed; type++) { + if (!strncasecmp(argv[1], input_types[type].name, 16) || + !strncasecmp(argv[1], input_types[type].name2, 16)) + break; + } + + if (!input_types[type].speed) { + fprintf(stderr, "inputattach: invalid mode\n"); + return 1; + } + + if ((fd = open(argv[2], O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) { + perror("inputattach"); + return 1; + } + + setline(fd, input_types[type].flags, input_types[type].speed); + + if (input_types[type].flush) + while (!readchar(fd, &c, 100)); + + id = input_types[type].id; + extra = input_types[type].extra; + + if (input_types[type].init && input_types[type].init(fd, &id, &extra)) { + fprintf(stderr, "inputattach: device initialization failed\n"); + return 1; + } + + ldisc = N_MOUSE; + if(ioctl(fd, TIOCSETD, &ldisc)) { + fprintf(stderr, "inputattach: can't set line discipline\n"); + return 1; + } + + devt = input_types[type].type | (id << 8) | (extra << 16); + + if(ioctl(fd, SPIOCSTYPE, &devt)) { + fprintf(stderr, "inputattach: can't set device type\n"); + return 1; + } + + if (argc == 4 && !strcmp(argv[3],"--daemon")) + daemon(0,0); + + read(fd, NULL, 0); + + ldisc = 0; + ioctl(fd, TIOCSETD, &ldisc); + close(fd); + + return 0; +} diff --git a/sysconfig.mouse-gpm b/sysconfig.mouse-gpm new file mode 100644 index 0000000..47e50fc --- /dev/null +++ b/sysconfig.mouse-gpm @@ -0,0 +1,37 @@ +## Path: Hardware/Mouse/Console +## Description: Console mouse configuration +## ServiceRestart: gpm +# +## Type: string(/dev/input/mice,/dev/psaux) +## Default: "/dev/input/mice" +# +# The mouse device used on the console by gpm. +# The default value is generated by YaST. +# +MOUSEDEVICE="/dev/input/mice" + +## Type: string(imps2,ms,ms3,msc,mman,ps2,syn,synps2) +## Default: "imps2" +# +# The mouse type which defines the mouse protocol used by gpm for the mouse +# device in the variable MOUSEDEVICE +# The default value is generated by YaST +# +MOUSETYPE="imps2" + +## Type: string +## Default: "" +# +# You can define your own options to start gpm here. If the variable is empty +# then the gpm will start with the option "-m $MOUSEDEVICE -t $MOUSETYPE" +# +GPM_PARAM="" + +## Type: string(raw,imps2,ms,ms3,msc,mman,ps2,syn,synps2) +## Default: "" +# +# Define type of repeating for gpm. This is usually needed when you want to +# use gpm together with XFree. All mouse data will be repeated in fifo +# /dev/gpmdata. Use "raw" for repeating same data as received by gpm. +# +GPM_REPEAT=""