Compare commits

...

152 Commits

Author SHA1 Message Date
Sebastian Lackner
4476d8af38 Update changelog for release 1.7.19-1. 2014-06-02 23:55:55 +02:00
Sebastian Lackner
b216cdce2c Update FD cache patch to allow complication with -DNDEBUG. 2014-06-02 20:57:19 +02:00
Sebastian Lackner
fc086bb2bc Add additional check to ensure wineserver doesn't crash if mem_alloc fails. 2014-06-02 01:42:23 +02:00
Sebastian Lackner
772dfd9f5a Work around compiler signed <-> unsigned casting issues. 2014-06-02 01:38:40 +02:00
Michael MĂĽller
b4d53a7344 Add support for xattr/ACLs on FreeBSD 2014-06-01 22:10:22 +02:00
Sebastian Lackner
e5c7fe8c18 Merge branch 'master' of github.com:compholio/wine-compholio-daily 2014-06-01 23:48:40 +02:00
Sebastian Lackner
fdc24226bf 02-ACL_Extended_Attributes: Add additional patch to prevent crashes in case of invalid extended attributes. 2014-06-01 23:47:53 +02:00
Michael MĂĽller
3886ee9fae Add patch to detect direct rendering in Wine applications. 2014-06-01 22:55:11 +02:00
Sebastian Lackner
229eb9bba5 Update fd cache patches (use slightly slower interlocked commands, which should also work well on less usual processor architectures). 2014-05-31 22:10:09 +02:00
Sebastian Lackner
1800d1f853 Fixed possible race-condition in FD cache patches. 2014-05-31 18:38:40 +02:00
Sebastian Lackner
24d682fd91 Add patch to fix exception test failures on x86_64. 2014-05-31 14:12:22 +02:00
Sebastian Lackner
979900f060 Add lockfree implementation for get_cached_fd to ntdll. 2014-05-31 04:02:40 +02:00
Michael MĂĽller
d094743650 Fix patchlist. 2014-05-31 03:46:10 +02:00
Michael MĂĽller
2c9d2d8f64 Merge branch 'master' of https://github.com/compholio/wine-compholio-daily 2014-05-31 03:42:29 +02:00
Michael MĂĽller
457c0bf7e1 Add patches to fix current Unity3D webplayer. 2014-05-31 03:42:21 +02:00
Sebastian Lackner
d2209c6ee0 Add additional patch for --check-libs commandline option. 2014-05-30 01:26:10 +02:00
Sebastian Lackner
84997e39ab Separate patchlist into patch-list.patch (containing the autogenerated list) and 00-Commandline for the commandline option changes. 2014-05-30 01:04:27 +02:00
Michael MĂĽller
01be545e92 Replace strict draw ordering patch with a different approach. 2014-05-27 03:03:03 +02:00
Erich E. Hoover
bfb7d535af Updated SIO_ADDRESS_LIST_CHANGE patches. 2014-05-16 13:32:52 -06:00
Sebastian Lackner
94813ecf3c Update changelog for release 1.7.18-1. 2014-05-13 20:49:41 +02:00
Sebastian Lackner
b09ed0f3d2 Rebase 02-ACL_Extended_Attributes patches. 2014-05-04 01:32:57 +02:00
Sebastian Lackner
807da03757 Add additional patch to silence repeated wined3d_swapchain_present FIXMEs. 2014-05-04 00:55:43 +02:00
Sebastian Lackner
af447c6cfd Simplify patch to silence repeated resource_check_usage FIXMEs. 2014-05-04 00:43:52 +02:00
Sebastian Lackner
aac5a0da53 Add additional patch to silence repeated CompareStringEx FIXME messages. 2014-05-04 00:29:57 +02:00
Michael Mueller
7fede3cd56 Fix gitapply on BSD systems 2014-05-03 02:31:56 +02:00
Michael Mueller
43b781b453 Fix problem with CURDIR on BSD systems 2014-05-03 02:19:22 +02:00
Erich E. Hoover
d989770f24 Update changelog for release 1.7.18. 2014-05-02 13:05:45 -06:00
Michael MĂĽller
036250b6da Update timer patch 2014-05-02 20:50:58 +02:00
Erich E. Hoover
d787be6d20 Update changelog for release 1.7.17. 2014-04-18 16:04:47 -06:00
Erich E. Hoover
c35db80eae Split the storage of the ownership information into a separate patch. 2014-04-18 15:48:33 -06:00
Erich E. Hoover
4328f2e964 Update ACL patches to store user/group data instead of replacing it on the retrieval side. 2014-04-18 15:29:56 -06:00
Erich E. Hoover
eecf7c4a68 ACL data is now stored in binary instead of converting it to ASCII. 2014-04-17 16:53:10 -06:00
compholio
4d01de8fcd Update README.md with linguistic casing removal 2014-04-17 13:03:11 -06:00
Erich E. Hoover
f5ef032c89 Removed linguistic casing patches (accepted upstream). 2014-04-17 12:56:29 -06:00
Erich E. Hoover
f9eebd5599 Removed dynamic unwind patches (accepted upstream). 2014-04-16 16:52:37 -06:00
Erich E. Hoover
48bbae3fb7 Fix strndup move not being properly rebased. 2014-04-15 15:30:37 -06:00
Michael MĂĽller
fdbc47e09e Merge branch 'master' of https://github.com/compholio/wine-compholio-daily 2014-04-15 23:19:39 +02:00
Michael MĂĽller
2b4093a0ea Remove recommendation for gettext and libgif 2014-04-15 23:18:52 +02:00
Erich E. Hoover
580ff7c1c5 Move strndup call inside of file_get_parent_sd. 2014-04-15 15:14:15 -06:00
Erich E. Hoover
454c09ddbe Remove old test code for adding extra ACLs. 2014-04-15 15:08:23 -06:00
Erich E. Hoover
810202432b Ensure ACL buffers are NULL terminated for all string processing. 2014-04-15 15:05:36 -06:00
Erich E. Hoover
737eb1005a Add bounds checking on SubAuthorityCount. 2014-04-15 14:56:44 -06:00
Erich E. Hoover
58eeb19b3e Rebase security attribute retrieval patch. 2014-04-15 14:32:21 -06:00
Erich E. Hoover
c8be20f3cf Remove unnecessary check for INHERIT_ONLY_ACE. 2014-04-15 14:28:42 -06:00
Erich E. Hoover
b6d34ea7d2 Do not unnecessarily move 'struct stat st;'. 2014-04-15 14:20:06 -06:00
slackner
f6d14c47ec Merge pull request #3 from anish/patch-1
Update gitapply.sh (Turn off whitespace warnings)
2014-04-10 04:08:07 +02:00
Anish Bhatt
78d6102645 Update gitapply.sh
Turn off whitespace warnings
2014-04-09 19:03:06 -07:00
Erich E. Hoover
b862f600f5 Start putting changelog entries in prior to releases. 2014-04-05 17:46:37 -06:00
Erich E. Hoover
e0b037b82a Update the linguistic casing patches to print a FIXME that the flags are not fully supported. 2014-04-05 14:28:26 -06:00
Erich E. Hoover
69b0f7ebd7 Split Arial replacement into two patches. 2014-04-05 13:29:29 -06:00
Erich E. Hoover
7c95fad661 Dropped liblcms2-dev dependency for old Ubuntu versions. 2014-04-04 19:52:26 -06:00
Sebastian Lackner
67cc61ffca Update changelog. 2014-04-05 03:49:35 +02:00
Sebastian Lackner
0df720506a Fix build failure caused by dynamic unwind patches on 32-bit. 2014-04-05 03:47:22 +02:00
Sebastian Lackner
68c91b3113 Merge branch 'master' of github.com:compholio/wine-compholio-daily 2014-04-05 02:03:52 +02:00
Sebastian Lackner
ac36f88de1 11-Dynamic_Unwind: Add forward from kernel32 to ntdll. 2014-04-05 02:03:07 +02:00
Erich E. Hoover
9fcd7e7113 Fix date in changelog. 2014-04-04 17:28:07 -06:00
Erich E. Hoover
903a8e54d4 Update changelog for release 1.7.16. 2014-04-04 17:25:15 -06:00
Sebastian Lackner
3de6b17d8a Update dynamic unwind patches and add test. 2014-04-05 01:24:13 +02:00
Sebastian Lackner
74bd451363 11-Dynamic_Unwind: Explicitly declare unwind table callback as CDECL. 2014-04-04 19:56:20 +02:00
Sebastian Lackner
22a1e1ff59 Add proper implementation for dynamic unwind functions, removed stub implementation. 2014-04-04 19:47:11 +02:00
Sebastian Lackner
c781d177e1 Removed first set of DXVA2 patches (accepted upstream). 2014-04-04 19:44:11 +02:00
Erich E. Hoover
f13c0f3cd8 Further split out the SIO_ADDRESS_LIST_CHANGE patches. 2014-04-04 11:34:29 -06:00
Michael MĂĽller
9ebbbcfc9f Add stub for RtlInstallFunctionTableCallback 2014-04-04 07:15:16 +02:00
Sebastian Lackner
d886426f50 Updated DXVA2 stub and header patches. 2014-04-04 07:06:47 +02:00
Erich E. Hoover
d30bfe1a41 Add patch to silence repeated resource_check_usage FIXME. 2014-04-03 21:39:17 -06:00
Erich E. Hoover
30825c59a9 SetWaitableTimerEx FIXME patch accepted upstream. 2014-04-03 21:37:49 -06:00
Sebastian Lackner
7d03df647f Fix lcms dependency (wine requires lcms2 instead of lcms1), add build dependency to libsane-dev. 2014-04-03 19:50:14 +02:00
Sebastian Lackner
a046f03792 Add patch to silence SetWaitableTimerEx fixme message (heavily used by Adobe Flash). 2014-04-03 05:31:09 +02:00
Erich E. Hoover
b744f3d37b Use 'Multi-Arch: foreign' flag for wine-compholio package. 2014-04-02 20:28:54 -06:00
Michael MĂĽller
c52df465c1 Merge branch 'wine64' 2014-04-02 23:59:54 +02:00
Sebastian Lackner
09bfdcb009 Update DXVA2 patches, remove last work-in-progress part. 2014-03-29 06:53:54 +01:00
Erich E. Hoover
2f449562d1 First SIO_ADDRESS_LIST_CHANGE patch accepted upstream. 2014-03-28 15:58:51 -06:00
Sebastian Lackner
3c6c730333 Remove previous dxva2 patch (accepted upstream), added additional dxva2 implementation patches. 2014-03-26 22:28:10 +01:00
Michael MĂĽller
809ee539f3 Fix version number in Replaces/Breaks. 2014-03-25 17:08:07 +01:00
Michael MĂĽller
339892ffe6 Try to fix upgrading from old versions. 2014-03-25 15:58:12 +01:00
Michael MĂĽller
2e7f83fbf8 Add changelog entry. 2014-03-25 06:09:09 +01:00
Michael MĂĽller
9043eadbcb Fix search path for dh_shlibdeps. 2014-03-25 04:50:06 +01:00
Michael MĂĽller
5386c7843d Update dependencies and make them 64 bit ready. 2014-03-25 02:04:35 +01:00
Michael MĂĽller
0675620019 Pass CONFFLAGS to ./configure. 2014-03-25 01:02:13 +01:00
Michael MĂĽller
552b6acf97 Initial work to make wine-compholio 64 bit ready. 2014-03-25 00:52:10 +01:00
Sebastian Lackner
86c9842e64 Fix bug in generate-patchlist.sh. 2014-03-24 18:48:08 +01:00
Michael MĂĽller
d0e9447fb6 dxva2: Added stub dll 2014-03-24 00:17:29 +01:00
Erich E. Hoover
47ddb3a6d1 Update changelog for release 1.7.15. 2014-03-23 12:54:12 +01:00
Sebastian Lackner
5a4ba9a546 Fix build dependencies for Debian Sid. 2014-03-22 00:03:02 +01:00
Erich E. Hoover
b51c16c86a Fix free() of a const variable (Bug #1). 2014-03-11 11:10:23 -06:00
Sebastian Lackner
c1edf8d5c4 Remove 'register user administrative tools shell folder' patch (accepted upstream). 2014-03-10 21:22:56 +01:00
Sebastian Lackner
ebf2fb3d7d Updated patch 02-ACL/0002 to be compatible with -Werror compile flag. 2014-03-08 02:22:13 +01:00
Sebastian Lackner
ca1e83ef3f Update changelog. 2014-03-08 01:15:11 +01:00
Sebastian Lackner
054930fd52 Add additional patch to register user administrative tools shell folder (required for GoToMeeting). 2014-03-08 01:13:52 +01:00
Erich E. Hoover
56fd91825e Update changelog for release 1.7.14. 2014-03-07 13:59:51 -07:00
Erich E. Hoover
a6b295029c Remove sha1sum dependency, it is part of coreutils. 2014-03-05 17:22:34 -07:00
Sebastian Lackner
ddf6dd7f6a gitapply.sh: Improve a few comments. 2014-03-05 22:53:11 +01:00
Sebastian Lackner
524c64dd2a Fix build dependencies for binary patching script. 2014-03-05 22:47:17 +01:00
Erich E. Hoover
e470b33f7c Update the build dependencies to work with the binary patching script. 2014-03-05 12:38:21 -07:00
Sebastian Lackner
556aa9335e Fallback to 'git apply' if available to speed up applying the patches. 2014-03-05 01:13:32 +01:00
Sebastian Lackner
0817bd1a57 Use gitapply.sh to apply all the patches 2014-03-05 01:00:27 +01:00
Sebastian Lackner
2f7523bffe Move generate-patchlist.sh script into folder debian/tools, integrate patch-list-template.diff into the shell script 2014-03-05 00:02:01 +01:00
Erich E. Hoover
9fd0a6eb9d Manually install the Arial replacement font when make install is run. 2014-02-26 13:01:53 -07:00
Erich E. Hoover
f5f50d333c Add Liberation Sans (SIL Open Font License) as an Arial replacement. 2014-02-25 17:49:46 -07:00
Erich E. Hoover
2d3f9334f8 Improve the readability of the user shell folder ACL patch. 2014-02-25 12:59:27 -07:00
Erich E. Hoover
9466f14d52 Fix a memory leak in ACL inheritance. 2014-02-25 12:58:07 -07:00
Erich E. Hoover
79c4f4391e Update changelog. 2014-02-21 09:00:15 -07:00
Erich E. Hoover
820cc2e861 Fix a typo in the configure check for extended attributes. 2014-02-21 08:58:55 -07:00
Sebastian Lackner
29d69db459 Abort if patching the source files fails. 2014-02-21 04:54:31 +01:00
Erich E. Hoover
7642c422ed Updated the changelog for release 1.7.13. 2014-02-20 18:48:44 -07:00
Erich E. Hoover
d56138d8ec Allow Makefile DESTDIR to contain a relative path. 2014-02-17 10:09:44 -07:00
Erich E. Hoover
b5687dc502 Explicitly run configure with '--with-xattr' when building debian packages. 2014-02-16 09:30:22 -07:00
Erich E. Hoover
7a15599a3a Auto-update the patch list when 'make DESTDIR=dest_dir install' is run. 2014-02-15 18:38:28 -07:00
Erich E. Hoover
7e5038e76c Fail on configure when '--with-xattr' is passed and xattr.h cannot be found. 2014-02-15 18:21:54 -07:00
Erich E. Hoover
30f3d023d5 Further separate the file ACL patches. 2014-02-15 18:18:22 -07:00
compholio
a7a1f83013 Update README.md with pipe access patch removal 2014-02-14 22:35:16 -07:00
Erich E. Hoover
53053927fd Update the SIO_ADDRESS_LIST_CHANGE patch to properly return the number of bytes in WSAIoctl. 2014-02-12 14:58:45 -07:00
Erich E. Hoover
35cab4ef93 Update linguistic casing patches to include tests. 2014-02-12 13:29:06 -07:00
Erich E. Hoover
43b0d84ae9 Remove the named pipe security access patch (accepted upstream). 2014-02-10 20:37:09 -07:00
Erich E. Hoover
825145217c Updated the patch list template to be compatible with 'git am'. 2014-02-07 21:31:59 -07:00
Erich E. Hoover
99c6fe660f Provide a Makefile option to change the patching tool. 2014-02-07 21:31:56 -07:00
Erich E. Hoover
4a69f63a78 Output the progress of the patching process. 2014-02-07 20:51:20 -07:00
Erich E. Hoover
39fa530c33 Add an uninstall rule to the patch Makefile. 2014-02-07 20:43:37 -07:00
Erich E. Hoover
564f8aeafc Move the patching code out of the debian rules into a Makefile. 2014-02-07 20:37:54 -07:00
Erich E. Hoover
e77f05ee52 Add support for inherited file ACLs. 2014-02-07 20:20:32 -07:00
Erich E. Hoover
f352182c20 Fixed PulseAudio driver pthread dependency for upstream Wine 1.7.12. 2014-02-07 17:52:58 -07:00
Sebastian Lackner
7bb4be5d03 Fix pulseaudio patch to be compatible with 'git am'. 2014-02-08 01:14:59 +01:00
Erich E. Hoover
ef956caf59 Fixed PulseAudio driver configure file for upstream Wine 1.7.12. 2014-02-07 16:50:34 -07:00
Erich E. Hoover
8e45d4c99f Updated the changelog for release 1.7.12. 2014-02-07 14:57:59 -07:00
compholio
004109b3bd Update README.md with GetVolumePathName patches 2014-01-25 10:14:04 -07:00
Erich E. Hoover
dd5b1514b2 Implement GetVolumePathName. 2014-01-25 10:08:49 -07:00
Erich E. Hoover
34a6c25071 Remove dh_installdocs from debian rules file. 2014-01-19 20:39:51 -07:00
compholio
6dc4078d74 Update README.md to include a couple more patches 2014-01-18 10:47:43 -07:00
compholio
6fcc7f732d Update README.md to include a list of patches. 2014-01-18 10:41:35 -07:00
Erich E. Hoover
997c04f7f8 Move the TransmitFile test so that the entire series of compholio patches can be applied with git-am. 2014-01-17 12:41:40 -07:00
Erich E. Hoover
658fe4e3ae Updated the changelog for release 1.7.11. 2014-01-17 12:27:54 -07:00
Erich E. Hoover
40aaeb61f8 Support for junction points/reparse points. 2014-01-17 11:52:25 -07:00
Erich E. Hoover
6274002623 SRWLock patch is now included in upstream Wine. 2014-01-17 11:52:13 -07:00
Erich E. Hoover
24af73d1d2 Add patches to support TransmitFile. 2014-01-16 19:29:11 -07:00
Erich E. Hoover
155a364280 Update the wineserver protocol request data when the build farm compiles the package. 2014-01-16 18:33:05 -07:00
Sebastian Lackner
9c1492069b Add SRWLock patches and workarounds for shlwapi url functions. 2014-01-17 01:34:27 +01:00
Sebastian Lackner
c3d5bcab99 Moved pipelight related patches to a separate folder. 2014-01-16 20:37:17 +01:00
Erich E. Hoover
c3052d2e31 Add support for security access parameters for named pipes. 2014-01-16 11:40:00 -07:00
Erich E. Hoover
87fd81b9d8 Fix a path length bug in the ACL inheritance patch. 2014-01-13 18:34:28 -07:00
Sebastian Lackner
062426558b Rebased patch 01-Address_Change_Notification/0003 2014-01-14 01:12:38 +01:00
Sebastian Lackner
1c6aeef3b4 Added patch to add support for WINE_STRICT_DRAW_ORDERING environment variable 2014-01-13 23:41:07 +01:00
Michael MĂĽller
f7de528788 Add SetTimer patch 2014-01-09 03:03:04 +01:00
Sebastian Lackner
8d45dc126d Updated winepulse patches 2014-01-06 01:26:32 +01:00
Erich E. Hoover
1a0d969d12 Updated the changelog for release 1.7.10. 2014-01-03 12:22:22 -07:00
Erich E. Hoover
a926ab3deb Remove the monitor GUID patch (accepted upstream). 2014-01-02 21:50:29 -07:00
Erich E. Hoover
d31a32b073 Update SIO_ADDRESS_LIST_CHANGE patch with latest proposed version. 2014-01-02 21:46:22 -07:00
Michael MĂĽller
c21aa8beb3 Add VMR7 monitor enumeration GUID patch 2013-12-31 03:33:23 +01:00
Erich E. Hoover
67079f94ae Update the changelog for a new release. 2013-12-27 12:04:29 -07:00
Sebastian Lackner
c1dccff70a Added new patch to support linux windowlessmode (required for Qt5 browsers) 2013-12-22 00:38:52 +01:00
Erich E. Hoover
7b41306c4b Update the changelog for a new release. 2013-12-07 10:49:20 -07:00
Erich E. Hoover
2d7390de4b Fix mistake in the rules file causing patches to not be applied. 2013-12-07 10:32:24 -07:00
Erich E. Hoover
28bbb866f2 Add PulseAudio dependency to the debian control file. 2013-12-07 10:31:34 -07:00
122 changed files with 228341 additions and 1749 deletions

View File

@@ -2,3 +2,17 @@ wine-compholio-daily
====================
Daily updates for the Wine "Compholio" Edition.
Current patches include:
* Support for interface change notifications (http://bugs.winehq.org/show_bug.cgi?id=32328)
* Support for stored file ACLs (http://bugs.winehq.org/show_bug.cgi?id=31858)
* Support for inherited file ACLs (http://bugs.winehq.org/show_bug.cgi?id=34406)
* Support for Junction Points (http://bugs.winehq.org/show_bug.cgi?id=12401)
* Support for TransmitFile (http://bugs.winehq.org/show_bug.cgi?id=5048)
* Support for GetVolumePathName
* Implement an Arial replacement font (http://bugs.winehq.org/show_bug.cgi?id=32323)
* Workaround for TransactNamedPipe not being supported (http://bugs.winehq.org/show_bug.cgi?id=17273)
* XEMBED support for embedding Wine windows inside Linux applications
* Reduced SetTimer minimum value from 15 ms to 5 ms (improves Silverlight framerates)
* Workaround for shlwapi URLs with relative paths
* Support for PulseAudio backend for audio

116
debian/changelog vendored
View File

@@ -1,3 +1,119 @@
wine-compholio (1.7.19-1) unstable; urgency=low
* Added a patch to fix return value for FSCTL_PIPE_WAIT (required for Unity3D).
* Added a patch to stub TokenAppContainerSid in NtQueryInformationToken (required for Unity3D).
* Added a patch to optimize the file descriptor cache by using lockfree algorithms.
* Add additional checks in XATTR patch to ensure wineserver doesn't crash if data is corrupted.
* Add support for extended attributes on FreeBSD systems.
* Added a patch to fix ntdll/exception test failures on x86_64.
* Allow to change 'strict draw ordering' at runtime.
* Add ability to test if all dynamic libraries are installed with "wine --check-libs".
* Added a patch to query if direct rendering is enabled via GLX extension.
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 02 Jun 2014 23:50:23 +0200
wine-compholio (1.7.19) unstable; urgency=low
* Updated SIO_ADDRESS_LIST_CHANGE patches.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Tue, 06 May 2014 15:42:32 -0600
wine-compholio (1.7.18-1) unstable; urgency=low
* Fix some issues on BSD systems.
* Add additional patches to silence a few FIXMEs.
* Rebase 02-ACL_Extended_Attributes patches.
-- Sebastian Lackner <sebastian@fds-team.de> Tue, 13 May 2014 20:47:23 +0200
wine-compholio (1.7.18) unstable; urgency=low
* Updated SetTimer patch (10 ms accepted upstream).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 02 May 2014 13:05:13 -0600
wine-compholio (1.7.17) unstable; urgency=low
* Split Arial replacement into two patches.
* Removed dynamic unwind patches (accepted upstream).
* Removed linguistic casing patches (accepted upstream).
* ACL data is now stored in binary instead of converting it to ASCII.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 18 Apr 2014 16:03:57 -0600
wine-compholio (1.7.16-1) unstable; urgency=low
* Fix build failure caused by dynamic unwind functions.
* Dropped liblcms2-dev dependency for old Ubuntu versions.
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 05 Apr 2014 03:48:25 +0200
wine-compholio (1.7.16) unstable; urgency=low
* Add stub for RtlInstallFunctionTableCallback.
* Further split out the SIO_ADDRESS_LIST_CHANGE patches.
* Add proper implementation for dynamic unwind functions, removed stub implementation.
* Fix lcms dependency (Wine requires lcms2 instead of lcms1), add build dependency to libsane-dev.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 04 Apr 2014 17:27:52 -0600
wine-compholio (1.7.15-1) unstable; urgency=low
* Build 64 bit version of Wine.
* First SIO_ADDRESS_LIST_CHANGE patch accepted upstream.
* Added stub dll for DirectX Video Acceleration (dxva2.dll).
* Update DXVA2 patches (additional implementation details, parts accepted upstream).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Tue, 25 Mar 2014 06:08:01 +0100
wine-compholio (1.7.15) unstable; urgency=low
* Fixed build dependencies for Debian Sid.
* Fixed free() of a const variable (Bug #1).
* Removed get_dir_unix_fd (no longer used, fixes compiling with "-Werror").
* Removed 'register user administrative tools shell folder' patch (accepted upstream).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sun, 23 Mar 2014 12:53:32 +0100
wine-compholio (1.7.14) unstable; urgency=low
* Minor updates to the ACL patches.
* Added Liberation Sans (SIL Open Font License) as an Arial replacement.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 07 Mar 2014 13:59:11 -0700
wine-compholio (1.7.13-1) unstable; urgency=low
* Fixed a typo in the configure check for extended attributes.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 21 Feb 2014 09:00:00 -0700
wine-compholio (1.7.13) unstable; urgency=low
* Added support for inherited file ACLs.
* Further separated the file ACL patches.
* Updated linguistic casing patches to include tests.
* Updated the patch list template to be compatible with 'git am'.
* Moved the patching code out of the debian rules into a Makefile.
* Removed the named pipe security access patch (accepted upstream).
* Explicitly run configure with '--with-xattr' when building debian packages.
* Will now fail on configure when '--with-xattr' is passed and xattr.h cannot be found.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Thu, 20 Feb 2014 18:48:03 -0700
wine-compholio (1.7.12-1) unstable; urgency=low
* Fixed PulseAudio patches to apply with 'git am'.
* Fixed PulseAudio driver configure file for upstream Wine 1.7.12.
* Fixed PulseAudio driver pthread dependency for upstream Wine 1.7.12.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 07 Feb 2014 17:52:32 -0700
wine-compholio (1.7.12) unstable; urgency=low
* Added new patches to support GetVolumePathName.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 07 Feb 2014 14:57:33 -0700
wine-compholio (1.7.11) unstable; urgency=low
* Added SRWLock patch.
* Added new patches to support TransmitFile.
* Added new patches to support Junction Points.
* Moved pipelight-specific patches to a separate folder.
* Removed SRWLock patch included in upstream Wine 1.7.11.
* Reduced SetTimer minimum limitation from 15 ms to 5 ms.
* Added support for security access parameters for named pipes.
* Added WINE_STRICT_DRAW_ORDERING command line environment variable.
* Fixed a path length bug in the ACL inheritance patch (assumed DOS limitation).
* Added some workarounds for shlwapi url functions not handling relative paths well.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 17 Jan 2014 12:27:32 -0700
wine-compholio (1.7.10) unstable; urgency=low
* Removed monitor enumeration patch included in upstream Wine 1.7.10.
* Updated SIO_ADDRESS_LIST_CHANGE patch with latest proposed version.
* Added new patch to support linux windowlessmode (required for Qt5 browsers).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 03 Jan 2014 12:19:14 -0700
wine-compholio (1.7.9) unstable; urgency=low
* Added a new patch for windowless mode for Qt5 browsers.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 27 Dec 2013 12:03:22 -0700
wine-compholio (1.7.8-1) unstable; urgency=low
* Fixed several build problems.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sat, 07 Dec 2013 10:49:03 -0700
wine-compholio (1.7.8) unstable; urgency=low
* Added PulseAudio support patches.
* Updated SIO_ADDRESS_LIST_CHANGE patches.

182
debian/control vendored
View File

@@ -5,27 +5,21 @@ Maintainer: Erich E. Hoover <ehoover@mines.edu>
XSBC-Original-Maintainer: Scott Ritchie <scottritchie@ubuntu.com>
Build-Depends: autotools-dev,
autoconf,
bind9-host,
bison,
bsdmainutils,
coreutils,
debhelper (>= 7),
docbook-to-man,
docbook-utils,
docbook-xsl,
flex,
fontforge,
gawk,
gcc-4.5 | gcc-4.7 | ubuntu-desktop (<< 1.207),
gcc-4.5-multilib [amd64] | ubuntu-desktop (<< 1.207) [amd64],
gcc-multilib [amd64],
gettext,
ia32-libs [amd64],
ia32-libs-dev [amd64] | ubuntu-desktop (<< 1.267) [amd64],
ia32-libs-multiarch [amd64] | ubuntu-desktop (<< 1.267) [amd64],
lib32asound2-dev [amd64],
lib32ncurses5-dev [amd64],
lib32z1-dev [amd64],
gzip,
libacl1-dev,
libasound2-dev [i386 lpia],
libc6-dev-i386 [amd64],
libasound2-dev,
libcapi20-dev,
libcups2-dev,
libdbus-1-dev,
@@ -33,27 +27,27 @@ Build-Depends: autotools-dev,
libesd0-dev,
libfontconfig1-dev | libfontconfig-dev,
libfreetype6-dev,
libgif-dev | libungif4-dev,
libgl1-mesa-dev | nvidia-glx-dev | fglrx-driver-dev | libgl-dev,
libglu1-mesa-dev | libglu-dev,
libgnutls-dev,
libgphoto2-dev | libgphoto2-6-dev | libgphoto2-2-dev (>= 2.4.6),
libgphoto2port-dev | ubuntu-desktop (>= 1.245) | debian-edu-config,
libgsm1-dev,
libgstreamer-plugins-base0.10-dev,
libgstreamer0.10-dev,
libice-dev,
libjpeg-dev,
liblcms1-dev, liblcms-dev,
liblcms2-dev | ubuntu-desktop (<< 1.267),
libldap2-dev, libldap-dev,
libmpg123-dev,
libncurses5-dev [i386] | libncurses-dev [i386],
libncurses5-dev | libncurses-dev,
libopenal-dev (>= 1:1.12) | ubuntu-desktop (<< 1.207),
libpng12-dev,
libpulse-dev,
libsane-dev,
libssl-dev,
libstdc++6-4.5-dev | libstdc++-dev,
libtiff4-dev,
libv4l-dev [i386],
libtiff5-dev | libtiff4-dev | libtiff-dev,
libv4l-dev,
libx11-dev,
libxcomposite-dev,
libxcursor-dev,
@@ -68,30 +62,28 @@ Build-Depends: autotools-dev,
libxxf86vm-dev,
linux-kernel-headers,
linux-libc-dev,
prelink [i386 amd64],
prelink,
quilt (>= 0.46-7~),
sharutils,
unixodbc-dev,
x11proto-xinerama-dev
Standards-Version: 3.9.2
Package: wine-compholio
Package: wine-compholio-i386
Architecture: i386
Multi-Arch: foreign
Pre-Depends: dpkg (>= 1.14.12ubuntu3), ${misc:Pre-Depends}
Depends: ${shlibs:Depends},
libasound2-plugins,
libncurses5
Recommends: gettext,
libcapi20-3,
Recommends: libcapi20-3,
libcups2,
libdbus-1-3,
libfontconfig1 | libfontconfig,
libfreetype6,
libgif4,
libgnutls26,
libgphoto2-6 | libgphoto2-2 (>= 2.4.6),
libgphoto2-port0 (>= 2.4.6),
libgphoto2-port10 | libgphoto2-port0 (>= 2.4.6),
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
@@ -99,7 +91,7 @@ Recommends: gettext,
libpulse0,
libsane,
libssl1.0.0,
libtiff4,
libtiff5 | libtiff4,
libv4l-0,
libxcomposite1,
libxcursor1,
@@ -111,7 +103,93 @@ Recommends: gettext,
libxt6,
libxxf86vm1,
unixodbc
Provides: wine-compholio
Section: otherosfs
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package provides support for loading 32-bit x86 Windows applications
.
This package is based on a recent Wine beta. While many more applications will
work, there may be some loss of functionality compared with the stable release
provided by the regular wine package.
Package: wine-compholio-amd64
Architecture: amd64
Multi-Arch: foreign
Pre-Depends: dpkg (>= 1.14.12ubuntu3), ${misc:Pre-Depends}
Depends: ${shlibs:Depends},
libasound2-plugins,
libncurses5
Recommends: libcapi20-3,
libcups2,
libdbus-1-3,
libfontconfig1 | libfontconfig,
libfreetype6,
libgnutls26,
libgphoto2-6 | libgphoto2-2 (>= 2.4.6),
libgphoto2-port10 | libgphoto2-port0 (>= 2.4.6),
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
libpng12-0,
libpulse0,
libsane,
libssl1.0.0,
libtiff5 | libtiff4,
libv4l-0,
libxcomposite1,
libxcursor1,
libxi6,
libxinerama1,
libxrandr2,
libxrender1,
libxslt1.1,
libxt6,
libxxf86vm1,
unixodbc
Section: otherosfs
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package provides support for loading 64-bit x86 Windows applications
.
This package is based on a recent Wine beta. While many more applications will
work, there may be some loss of functionality compared with the stable release
provided by the regular wine package.
Package: wine-compholio
Architecture: i386 amd64
Multi-Arch: foreign
Pre-Depends: dpkg (>= 1.14.12ubuntu3), ${misc:Pre-Depends}
Depends: ${misc:Depends}, ${shlibs:Depends},
wine-compholio-i386 (= ${binary:Version}) [i386 amd64],
wine-compholio-amd64 (= ${binary:Version}) [amd64],
Section: otherosfs
Priority: optional
Description: The Compholio Edition is a special build of the popular Wine software
@@ -134,3 +212,57 @@ Description: The Compholio Edition is a special build of the popular Wine softwa
This package is based on a recent Wine beta. While many more applications will
work, there may be some loss of functionality compared with the stable release
provided by the regular wine package.
Package: wine-compholio-dev
Architecture: i386 amd64
Pre-Depends: dpkg (>= 1.14.12ubuntu3), ${misc:Pre-Depends}
Depends: libc6-dev,
${shlibs:Depends},
wine-compholio-i386 (= ${binary:Version}) [i386 amd64],
wine-compholio-amd64 (= ${binary:Version}) [amd64],
Section: libdevel
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package consists of the development files needed to compile programs
using wine's free version of the Microsoft Windows API.
Package: wine-compholio-dbg
Architecture: i386 amd64
Multi-Arch: same
Pre-Depends: dpkg (>= 1.14.12ubuntu3), ${misc:Pre-Depends}
Depends: ${shlibs:Depends},
wine-compholio-i386 (= ${binary:Version}) [i386 amd64],
wine-compholio-amd64 (= ${binary:Version}) [amd64],
Section: debug
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package includes debugging symbols useful for reporting crashes and other
failures.

167
debian/rules vendored
View File

@@ -1,36 +1,4 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
else
CROSS= --build $(DEB_BUILD_GNU_TYPE)
endif
# Apparently it's important to have an empty LDFLAGS, see:
# http://www.winehq.org/pipermail/wine-bugs/2007-July/062505.html
# For Wine 1.1.44 it's also important not to compile at -O0
LDFLAGS =
CFLAGS = -Wall -g -O2
# On amd64 the 32-bit libraries are in lib32 instead of lib
ifeq ($(DEB_BUILD_ARCH), amd64)
CONFFLAGS += --libdir=\$${prefix}/lib32
endif
# Use gcc-4.5 if it's available
ifeq ($(shell which gcc-4.5),)
@@ -39,115 +7,40 @@ else
CC = gcc-4.5
endif
# Support passing of parallel=<n> in build options
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
%:
dh $@ --parallel
configure:
# Unpack the original Wine version
tar -xjvf wine-*.tar.bz2
mv wine-*/* .
rm wine-*/.* || true
rm wine-*.tar.bz2
rmdir wine-*
override_dh_auto_configure:
config.status: configure
dh_testdir
# Add here commands to configure the package.
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
cp -f /usr/share/misc/config.guess config.guess
endif
# Apply our patches, reconfigure, and update the wineserver protocol request data
make -C "$(CURDIR)/patches/" DESTDIR="$(CURDIR)" install
# Apply our patches to Wine
for DIR in $(find $(CURDIR)/patches/ -type d | sort); do \
for FILE in $(ls $$DIR | sort); do \
patch -N -p0 --strip=1 < $$DIR/$$FILE || exit 1; \
done \
done
# Update the configure script
autoreconf
# Configure
CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/opt/wine-compholio --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info $(CONFFLAGS)
build: build-stamp
build-stamp: config.status
dh_testdir
# Add here commands to compile the package.
$(MAKE) depend
$(MAKE) $(MAKEFLAGS)
#docbook-to-man debian/wine-compholio.sgml > wine-compholio.1
touch $@
clean:
dh_testdir
dh_testroot
rm -f build-stamp
# Add here commands to clean up after the build process.
[ ! -f Makefile ] || $(MAKE) distclean
rm -f config.sub config.guess
dh_clean
install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
# Add here commands to install the package into debian/wine-compholio.
$(MAKE) DESTDIR=$(CURDIR)/debian/wine-compholio install
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
# dh_installchangelogs ChangeLog
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_python
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
dh_makeshlibs
dh_installdeb
ifeq ($(DEB_BUILD_ARCH), amd64)
dh_gencontrol -- -V"shlibs:Depends= ia32-libs (>= 1.6), lib32asound2 (>> 1.0.14), libc6-i386 (>= 2.6-1), lib32nss-mdns (>= 0.10-3)"
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib64 --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-win64 --with-xattr $(CONFFLAGS)
else
LD_LIBRARY_PATH="$(CURDIR)/debian/wine-compholio/opt/wine-compholio/lib:${LD_LIBRARY_PATH}" dh_shlibdeps -L wine-compholio -l debian/wine-compholio/opt/wine-compholio/lib
dh_gencontrol
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --with-xattr $(CONFFLAGS)
endif
dh_md5sums
dh_builddeb -- -Z lzma
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
override_dh_auto_test:
# Wine's test suite does not pass on build daemons, skip it for now
override_dh_installdocs:
dh_installdocs --link-doc=wine-compholio
override_dh_install:
dh_install --fail-missing
# These files will end up in multiple packages otherwise
rm -f debian/wine-compholio/opt/wine-compholio/bin/wine
rm -f debian/wine-compholio/opt/wine-compholio/bin/wine-preloader
rm -f debian/wine-compholio/opt/wine-compholio/bin/wine64
rm -f debian/wine-compholio/opt/wine-compholio/bin/wine64-preloader
override_dh_strip:
dh_strip -Xwine-pthread -Xwine-kthread --dbg-package=wine-compholio-dbg
override_dh_shlibdeps:
ifeq ($(DEB_HOST_ARCH),amd64)
dh_shlibdeps -l $(CURDIR)/debian/tmp/opt/wine-compholio/lib64/
else
dh_shlibdeps -l $(CURDIR)/debian/tmp/opt/wine-compholio/lib/
endif

91
debian/tools/generate-patchlist.sh vendored Executable file
View File

@@ -0,0 +1,91 @@
#!/bin/sh
PATCH_DATA="";
for FILE in patches/*/*.def; do
UUID=$(echo "${FILE}" | sed -e 's|^.*/||g' -e 's|\.def$||g');
REVISION=$(cat "${FILE}" | sed -n 's|Revision: \(.*\)|\1|p');
AUTHOR=$(cat "${FILE}" | sed -n 's|Author: \(.*\)|\1|p');
TITLE=$(cat "${FILE}" | sed -n 's|Title: \(.*\)|\1|p');
if [ "${AUTHOR}" = "" ] && [ "${TITLE}" = "" ]; then
continue;
fi
if [ "${PATCH_DATA}" != "" ]; then
PATCH_DATA="${PATCH_DATA}
";
fi
PATCH_DATA="${PATCH_DATA}+ { \"${UUID}:${REVISION}\", \"${AUTHOR}\", \"${TITLE}\" },";
done
PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l);
PATCH_LINES=$((${PATCH_LINES}+20));
PATCH_DATA=$(echo "${PATCH_DATA}" | sed ':a;N;$!ba;s/\n/\\n/g');
cat <<EOF | sed -e "s|##PATCH_LINES##|${PATCH_LINES}|" \
-e "s|##PATCH_DATA##|${PATCH_DATA}|"
From: "FDS-Team" <webmaster@fds-team.de>
Subject: Autogenerated patch list.
---
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5fa0cd5 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -478,6 +478,##PATCH_LINES## @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
+struct wine_patch {
+ const char *hash;
+ const char *author;
+ const char *title;
+} wine_patch_data[] = {
##PATCH_DATA##
+ { NULL, NULL, NULL }
+};
+
+/* return the applied non-standard patches */
+const void * wine_get_patches(void)
+{
+ return &wine_patch_data[0];
+}
+
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index ed315bd..5b42029 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -83,6 +83,7 @@ EXPORTS
wine_get_sortkey
wine_get_user_name
wine_get_version
+ wine_get_patches
wine_init
wine_init_argv0_path
wine_is_dbcs_leadbyte
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -90,6 +90,7 @@ WINE_1.0
wine_get_ss;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
diff --git a/include/wine/library.h b/include/wine/library.h
index 242bb69..aa9e585 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
+extern const void *wine_get_patches(void);
extern const char *wine_get_build_id(void);
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
EOF

572
debian/tools/gitapply.sh vendored Executable file

File diff suppressed because it is too large Load Diff

4
debian/wine-compholio-amd64.install vendored Normal file
View File

@@ -0,0 +1,4 @@
/opt/wine-compholio/lib64/libwine.so*
/opt/wine-compholio/lib64/wine
/opt/wine-compholio/bin/wine64
/opt/wine-compholio/bin/wine64-preloader

1
debian/wine-compholio-dev.install vendored Normal file
View File

@@ -0,0 +1 @@
/opt/wine-compholio/include

4
debian/wine-compholio-i386.install vendored Normal file
View File

@@ -0,0 +1,4 @@
/opt/wine-compholio/lib/libwine.so*
/opt/wine-compholio/lib/wine
/opt/wine-compholio/bin/wine
/opt/wine-compholio/bin/wine-preloader

4
debian/wine-compholio.docs vendored Normal file
View File

@@ -0,0 +1,4 @@
documentation/README.*
ANNOUNCE
AUTHORS
README

2
debian/wine-compholio.install vendored Normal file
View File

@@ -0,0 +1,2 @@
/opt/wine-compholio/bin
/opt/wine-compholio/share

View File

@@ -1,24 +0,0 @@
#!/bin/sh
PATCH_DATA="";
for FILE in patches/*/*.def; do
UUID=$(echo "${FILE}" | sed -e 's|^.*/||g' -e 's|\.def$||g');
REVISION=$(cat "${FILE}" | sed -n 's|Revision: \(.*\)|\1|p');
AUTHOR=$(cat "${FILE}" | sed -n 's|Author: \(.*\)|\1|p');
TITLE=$(cat "${FILE}" | sed -n 's|Title: \(.*\)|\1|p');
if [ "${AUTHOR}" = "" ] && [ "${TITLE}" = "" ]; then
continue;
fi
if [ "${PATCH_DATA}" != "" ]; then
PATCH_DATA="${PATCH_DATA}
";
fi
PATCH_DATA="${PATCH_DATA}+ { \"${UUID}:${REVISION}\", \"${AUTHOR}\", \"${TITLE}\" },";
done
PATCH_LINES=$(echo "${PATCH_DATA}" | grep -c '\n');
PATCH_LINES=$((${PATCH_LINES}+20));
PATCH_DATA=$(echo "${PATCH_DATA}" | sed ':a;N;$!ba;s/\n/\\n/g');
cat patch-list-template.diff | sed \
-e "s|##PATCH_LINES##|${PATCH_LINES}|" \
-e "s|##PATCH_DATA##|${PATCH_DATA}|"
#

View File

@@ -1,3 +1,14 @@
From d88eb32e40bff9b8279f57b13a5f2cc09a9273ea Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 29 May 2014 23:43:45 +0200
Subject: loader: Add commandline option --patches to show the patch list.
---
dlls/ntdll/misc.c | 8 ++++++++
dlls/ntdll/ntdll.spec | 1 +
loader/main.c | 19 ++++++++++++++++++-
3 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index 8bd4eb7..4b4c318 100644
--- a/dlls/ntdll/misc.c
@@ -18,10 +29,10 @@ index 8bd4eb7..4b4c318 100644
*/
const char * CDECL NTDLL_wine_get_build_id(void)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 70bf94f..42eddcf 100644
index 5bac269..ab50882 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1410,6 +1410,7 @@
@@ -1419,6 +1419,7 @@
# Version
@ cdecl wine_get_version() NTDLL_wine_get_version
@@ -29,58 +40,8 @@ index 70bf94f..42eddcf 100644
@ cdecl wine_get_build_id() NTDLL_wine_get_build_id
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5fa0cd5 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -478,6 +478,##PATCH_LINES## @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
+struct wine_patch {
+ const char *hash;
+ const char *author;
+ const char *title;
+} wine_patch_data[] = {
##PATCH_DATA##
+ { NULL, NULL, NULL }
+};
+
+/* return the applied non-standard patches */
+const void * wine_get_patches(void)
+{
+ return &wine_patch_data[0];
+}
+
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index ed315bd..5b42029 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -83,6 +83,7 @@ EXPORTS
wine_get_sortkey
wine_get_user_name
wine_get_version
+ wine_get_patches
wine_init
wine_init_argv0_path
wine_is_dbcs_leadbyte
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -90,6 +90,7 @@ WINE_1.0
wine_get_ss;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
diff --git a/loader/main.c b/loader/main.c
index ac67290..516fd82 100644
index ac67290..71e5055 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -79,6 +79,12 @@ static inline void reserve_area( void *addr, size_t size )
@@ -96,7 +57,7 @@ index ac67290..516fd82 100644
/***********************************************************************
* check_command_line
*
@@ -89,7 +96,8 @@ static void check_command_line( int argc, char *argv[] )
@@ -89,7 +95,8 @@ static void check_command_line( int argc, char *argv[] )
static const char usage[] =
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
@@ -106,7 +67,7 @@ index ac67290..516fd82 100644
if (argc <= 1)
{
@@ -106,6 +114,16 @@ static void check_command_line( int argc, char *argv[] )
@@ -106,6 +113,16 @@ static void check_command_line( int argc, char *argv[] )
printf( "%s\n", wine_get_build_id() );
exit(0);
}
@@ -123,15 +84,6 @@ index ac67290..516fd82 100644
}
diff --git a/include/wine/library.h b/include/wine/library.h
index 242bb69..aa9e585 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
+extern const void *wine_get_patches(void);
extern const char *wine_get_build_id(void);
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
--
1.7.9.5

View File

@@ -0,0 +1,301 @@
From eb9657a39d222aa59140f6b0aff657ae86d1824d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 28 May 2014 19:50:51 +0200
Subject: loader: Add commandline option --check-libs.
---
include/wine/library.h | 2 ++
libs/wine/config.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 +++++++++++++++++++
libs/wine/wine.def | 2 ++
libs/wine/wine.map | 2 ++
loader/main.c | 50 +++++++++++++++++++++++++-
6 files changed, 182 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index fae73fe..7395a11 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -40,6 +40,7 @@ extern "C" {
extern const char *wine_get_build_dir(void);
extern const char *wine_get_config_dir(void);
extern const char *wine_get_data_dir(void);
+extern const char **wine_get_libs(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
@@ -52,6 +53,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
typedef void (*load_dll_callback_t)( void *, const char * );
+extern int wine_dladdr( void *addr, void *info, char *error, size_t errorsize );
extern void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize );
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 954035d..3fb7327 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -444,6 +444,97 @@ const char *wine_get_build_dir(void)
return build_dir;
}
+const char *wine_libs[] = {
+#ifdef SONAME_LIBCAPI20
+ SONAME_LIBCAPI20,
+#endif
+#ifdef SONAME_LIBCUPS
+ SONAME_LIBCUPS,
+#endif
+#ifdef SONAME_LIBCURSES
+ SONAME_LIBCURSES,
+#endif
+#ifdef SONAME_LIBDBUS_1
+ SONAME_LIBDBUS_1,
+#endif
+#ifdef SONAME_LIBFONTCONFIG
+ SONAME_LIBFONTCONFIG,
+#endif
+#ifdef SONAME_LIBGL
+ SONAME_LIBGL,
+#endif
+#ifdef SONAME_LIBGNUTLS
+ SONAME_LIBGNUTLS,
+#endif
+#ifdef SONAME_LIBGSM
+ SONAME_LIBGSM,
+#endif
+#ifdef SONAME_LIBHAL
+ SONAME_LIBHAL,
+#endif
+#ifdef SONAME_LIBJPEG
+ SONAME_LIBJPEG,
+#endif
+#ifdef SONAME_LIBNCURSES
+ SONAME_LIBNCURSES,
+#endif
+#ifdef SONAME_LIBNETAPI
+ SONAME_LIBNETAPI,
+#endif
+#ifdef SONAME_LIBODBC
+ SONAME_LIBODBC,
+#endif
+#ifdef SONAME_LIBOSMESA
+ SONAME_LIBOSMESA,
+#endif
+#ifdef SONAME_LIBPNG
+ SONAME_LIBPNG,
+#endif
+#ifdef SONAME_LIBSANE
+ SONAME_LIBSANE,
+#endif
+#ifdef SONAME_LIBTIFF
+ SONAME_LIBTIFF,
+#endif
+#ifdef SONAME_LIBV4L1
+ SONAME_LIBV4L1,
+#endif
+#ifdef SONAME_LIBXCOMPOSITE
+ SONAME_LIBXCOMPOSITE,
+#endif
+#ifdef SONAME_LIBXCURSOR
+ SONAME_LIBXCURSOR,
+#endif
+#ifdef SONAME_LIBXEXT
+ SONAME_LIBXEXT,
+#endif
+#ifdef SONAME_LIBXI
+ SONAME_LIBXI,
+#endif
+#ifdef SONAME_LIBXINERAMA
+ SONAME_LIBXINERAMA,
+#endif
+#ifdef SONAME_LIBXRANDR
+ SONAME_LIBXRANDR,
+#endif
+#ifdef SONAME_LIBXRENDER
+ SONAME_LIBXRENDER,
+#endif
+#ifdef SONAME_LIBXSLT
+ SONAME_LIBXSLT,
+#endif
+#ifdef SONAME_LIBXXF86VM
+ SONAME_LIBXXF86VM,
+#endif
+ NULL
+};
+
+/* return the list of shared libs used by wine */
+const char **wine_get_libs(void)
+{
+ return &wine_libs[0];
+}
+
/* return the full name of the server directory (the one containing the socket) */
const char *wine_get_server_dir(void)
{
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 5c0192d..91a4428 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -1054,6 +1054,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
}
/***********************************************************************
+ * wine_dladdr
+ */
+int wine_dladdr( void *addr, void *info, char *error, size_t errorsize )
+{
+#ifdef HAVE_DLADDR
+ int ret;
+ const char *s;
+ dlerror(); dlerror();
+ ret = dladdr( addr, (Dl_info *)info );
+ s = dlerror();
+ if (error && errorsize)
+ {
+ if (s)
+ {
+ size_t len = strlen(s);
+ if (len >= errorsize) len = errorsize - 1;
+ memcpy( error, s, len );
+ error[len] = 0;
+ }
+ else error[0] = 0;
+ }
+ dlerror();
+ return ret;
+#else
+ if (error)
+ {
+ static const char msg[] = "dladdr interface not detected by configure";
+ size_t len = min( errorsize, sizeof(msg) );
+ memcpy( error, msg, len );
+ error[len - 1] = 0;
+ }
+ return 0;
+#endif
+}
+
+/***********************************************************************
* wine_dlsym
*/
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index 5b42029..6acf329 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -64,6 +64,7 @@ EXPORTS
wine_dbg_sprintf
wine_dbgstr_an
wine_dbgstr_wn
+ wine_dladdr
wine_dlclose
wine_dll_enum_load_path
wine_dll_get_owner
@@ -79,6 +80,7 @@ EXPORTS
wine_get_build_id
wine_get_config_dir
wine_get_data_dir
+ wine_get_libs
wine_get_server_dir
wine_get_sortkey
wine_get_user_name
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 7cb2918..72ffed8 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -65,6 +65,7 @@ WINE_1.0
wine_dbg_sprintf;
wine_dbgstr_an;
wine_dbgstr_wn;
+ wine_dladdr;
wine_dlclose;
wine_dll_enum_load_path;
wine_dll_get_owner;
@@ -85,6 +86,7 @@ WINE_1.0
wine_get_es;
wine_get_fs;
wine_get_gs;
+ wine_get_libs;
wine_get_server_dir;
wine_get_sortkey;
wine_get_ss;
diff --git a/loader/main.c b/loader/main.c
index 71e5055..131ac2f 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -36,6 +36,12 @@
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#ifdef HAVE_DLADDR
+# include <dlfcn.h>
+#endif
+#ifdef HAVE_LINK_H
+# include <link.h>
+#endif
#include <pthread.h>
#include "wine/library.h"
@@ -96,7 +102,8 @@ static void check_command_line( int argc, char *argv[] )
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
" wine --version Output version information and exit\n"
- " wine --patches Output patch information and exit";
+ " wine --patches Output patch information and exit\n"
+ " wine --check-libs Checks if shared libs are installed";
if (argc <= 1)
{
@@ -123,6 +130,47 @@ static void check_command_line( int argc, char *argv[] )
}
exit(0);
}
+ if (!strcmp( argv[1], "--check-libs" ))
+ {
+ void* lib_handle;
+ int ret = 0;
+ const char **wine_libs = wine_get_libs();
+
+ for(; *wine_libs; wine_libs++)
+ {
+ lib_handle = wine_dlopen( *wine_libs, RTLD_NOW, NULL, 0 );
+ if (lib_handle)
+ {
+ #ifdef HAVE_DLADDR
+ Dl_info libinfo;
+ void* symbol;
+
+ #ifdef HAVE_LINK_H
+ struct link_map *lm = (struct link_map *)lib_handle;
+ symbol = (void *)lm->l_addr;
+ #else
+ symbol = wine_dlsym( lib_handle, "_init", NULL, 0 );
+ #endif
+ if (symbol && wine_dladdr( symbol, &libinfo, NULL, 0 ))
+ {
+ printf( "%s: %s\n", *wine_libs, libinfo.dli_fname );
+ }
+ else
+ #endif
+ {
+ printf( "%s: found\n", *wine_libs );
+ }
+ wine_dlclose( lib_handle, NULL, 0 );
+ }
+ else
+ {
+ printf( "%s: missing\n", *wine_libs );
+ ret = 1;
+ }
+ }
+
+ exit(ret);
+ }
}
--
1.7.9.5

View File

@@ -0,0 +1,3 @@
Revision: 1
Author: Sebastian Lackner
Title: Add commandline option --patches to show the patch list.

View File

@@ -0,0 +1,3 @@
Revision: 1
Author: Michael MĂĽller
Title: Add commandline option --check-libs to test if shared libraries are installed.

View File

@@ -0,0 +1,77 @@
From a0625ca7d07703028fdad511c37c587e213ff481 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 3 Apr 2014 09:21:51 -0600
Subject: server: Implement socket-specific ioctl() routine.
---
server/sock.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/server/sock.c b/server/sock.c
index 5ffb1fe..3eb1bdf 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -49,6 +49,8 @@
#include "windef.h"
#include "winternl.h"
#include "winerror.h"
+#define USE_WS_PREFIX
+#include "winsock2.h"
#include "process.h"
#include "file.h"
@@ -83,9 +85,6 @@
#define FD_WINE_RAW 0x80000000
#define FD_WINE_INTERNAL 0xFFFF0000
-/* Constants for WSAIoctl() */
-#define WSA_FLAG_OVERLAPPED 0x01
-
struct sock
{
struct object obj; /* object header */
@@ -117,6 +116,8 @@ static void sock_destroy( struct object *obj );
static int sock_get_poll_events( struct fd *fd );
static void sock_poll_event( struct fd *fd, int event );
static enum server_fd_type sock_get_fd_type( struct fd *fd );
+static obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *async,
+ int blocking, const void *data, data_size_t size );
static void sock_queue_async( struct fd *fd, const async_data_t *data, int type, int count );
static void sock_reselect_async( struct fd *fd, struct async_queue *queue );
static void sock_cancel_async( struct fd *fd, struct process *process, struct thread *thread, client_ptr_t iosb );
@@ -151,7 +152,7 @@ static const struct fd_ops sock_fd_ops =
sock_poll_event, /* poll_event */
no_flush, /* flush */
sock_get_fd_type, /* get_fd_type */
- default_fd_ioctl, /* ioctl */
+ sock_ioctl, /* ioctl */
sock_queue_async, /* queue_async */
sock_reselect_async, /* reselect_async */
sock_cancel_async /* cancel_async */
@@ -518,6 +519,23 @@ static enum server_fd_type sock_get_fd_type( struct fd *fd )
return FD_TYPE_SOCKET;
}
+obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *async_data,
+ int blocking, const void *data, data_size_t size )
+{
+ struct sock *sock = get_fd_user( fd );
+
+ assert( sock->obj.ops == &sock_ops );
+
+ switch(code)
+ {
+ case WS_SIO_ADDRESS_LIST_CHANGE:
+ /* intentional fallthrough, not yet supported */
+ default:
+ set_error( STATUS_NOT_SUPPORTED );
+ return 0;
+ }
+}
+
static void sock_queue_async( struct fd *fd, const async_data_t *data, int type, int count )
{
struct sock *sock = get_fd_user( fd );
--
1.7.9.5

View File

@@ -1,97 +0,0 @@
From 362ec39591ce54bcb5ce825c1baab8f5d0885193 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 5 Dec 2013 13:32:34 -0700
Subject: ws2_32: Ask the server to process unsupported WSAIoctl operations.
---
dlls/ws2_32/socket.c | 56 +++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 49 insertions(+), 7 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 304b0eb..170dde7 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3608,6 +3608,36 @@ static const char *debugstr_wsaioctl(DWORD ioctl)
(USHORT)(ioctl & 0xffff));
}
+/* do an ioctl call through the server */
+static DWORD server_ioctl_sock( SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size,
+ LPVOID out_buff, DWORD out_size, LPDWORD ret_size,
+ LPWSAOVERLAPPED overlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE completion )
+{
+ HANDLE event = overlapped ? overlapped->hEvent : 0;
+ HANDLE handle = SOCKET2HANDLE( s );
+ struct ws2_async *wsa;
+ NTSTATUS status;
+ PIO_STATUS_BLOCK io;
+
+ if (!(wsa = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*wsa) )))
+ return WSA_NOT_ENOUGH_MEMORY;
+ wsa->hSocket = handle;
+ wsa->user_overlapped = overlapped;
+ wsa->completion_func = completion;
+ io = (overlapped ? (PIO_STATUS_BLOCK)overlapped : &wsa->local_iosb);
+
+ status = NtDeviceIoControlFile( handle, event, (PIO_APC_ROUTINE)ws2_async_apc, wsa, io, code,
+ in_buff, in_size, out_buff, out_size );
+ if (status == STATUS_NOT_SUPPORTED)
+ FIXME("Unsupported ioctl %x (device=%x access=%x func=%x method=%x)\n",
+ code, code >> 16, (code >> 14) & 3, (code >> 2) & 0xfff, code & 3);
+
+ if (status != STATUS_PENDING) RtlFreeHeap( GetProcessHeap(), 0, wsa );
+
+ return NtStatusToWSAError( status );
+}
+
/**********************************************************************
* WSAIoctl (WS2_32.50)
*
@@ -3799,12 +3829,6 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
break;
}
- case WS_SIO_ADDRESS_LIST_CHANGE:
- FIXME("-> SIO_ADDRESS_LIST_CHANGE request: stub\n");
- /* FIXME: error and return code depend on whether socket was created
- * with WSA_FLAG_OVERLAPPED, but there is no easy way to get this */
- break;
-
case WS_SIO_ADDRESS_LIST_QUERY:
{
DWORD size;
@@ -4040,11 +4064,29 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
WSASetLastError(WSAEOPNOTSUPP);
return SOCKET_ERROR;
default:
- FIXME("unsupported WS_IOCTL cmd (%s)\n", debugstr_wsaioctl(code));
status = WSAEOPNOTSUPP;
break;
}
+ if (status == WSAEOPNOTSUPP)
+ {
+ status = server_ioctl_sock(s, code, in_buff, in_size, out_buff, out_size, ret_size,
+ overlapped, completion);
+ if (status != WSAEOPNOTSUPP)
+ {
+ if (status == 0 || status == WSA_IO_PENDING)
+ TRACE("-> %s request\n", debugstr_wsaioctl(code));
+ else
+ ERR("-> %s request failed with status 0x%x\n", debugstr_wsaioctl(code), status);
+
+ /* overlapped and completion operations will be handled by the server */
+ completion = NULL;
+ overlapped = NULL;
+ }
+ else
+ FIXME("unsupported WS_IOCTL cmd (%s)\n", debugstr_wsaioctl(code));
+ }
+
if (completion)
{
FIXME( "completion routine %p not supported\n", completion );
--
1.7.9.5

View File

@@ -0,0 +1,145 @@
From 864781654bfbb059a351fdcda6773e2857019278 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Tue, 6 May 2014 08:39:18 -0600
Subject: server: Add socket-side support for the interface change
notification object.
---
server/sock.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 86 insertions(+), 1 deletion(-)
diff --git a/server/sock.c b/server/sock.c
index 3eb1bdf..ad20a69 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -106,12 +106,18 @@ struct sock
struct sock *deferred; /* socket that waits for a deferred accept */
struct async_queue *read_q; /* queue for asynchronous reads */
struct async_queue *write_q; /* queue for asynchronous writes */
+ struct async_queue *ifchange_q; /* queue for interface change notifications */
+ struct object *ifchange_obj; /* the interface change notification object */
+ struct list ifchange_entry; /* entry in ifchange notification list */
};
static void sock_dump( struct object *obj, int verbose );
+static void sock_add_ifchange( struct sock *sock, const async_data_t *async_data );
static int sock_signaled( struct object *obj, struct wait_queue_entry *entry );
static struct fd *sock_get_fd( struct object *obj );
static void sock_destroy( struct object *obj );
+static struct async_queue *sock_get_ifchange_q( struct sock *sock );
+static void sock_destroy_ifchange_q( struct sock *sock );
static int sock_get_poll_events( struct fd *fd );
static void sock_poll_event( struct fd *fd, int event );
@@ -529,7 +535,8 @@ obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *a
switch(code)
{
case WS_SIO_ADDRESS_LIST_CHANGE:
- /* intentional fallthrough, not yet supported */
+ sock_add_ifchange( sock, async_data );
+ return 0;
default:
set_error( STATUS_NOT_SUPPORTED );
return 0;
@@ -610,6 +617,7 @@ static void sock_destroy( struct object *obj )
free_async_queue( sock->read_q );
free_async_queue( sock->write_q );
+ sock_destroy_ifchange_q( sock );
if (sock->event) release_object( sock->event );
if (sock->fd)
{
@@ -636,6 +644,8 @@ static void init_sock(struct sock *sock)
sock->deferred = NULL;
sock->read_q = NULL;
sock->write_q = NULL;
+ sock->ifchange_q = NULL;
+ sock->ifchange_obj = NULL;
memset( sock->errors, 0, sizeof(sock->errors) );
}
@@ -924,6 +934,81 @@ static void sock_set_error(void)
set_error( sock_get_ntstatus( errno ) );
}
+/* add interface change notification to a socket */
+static void sock_add_ifchange( struct sock *sock, const async_data_t *async_data )
+{
+ struct async_queue *ifchange_q = NULL;
+ struct async *async;
+
+ if (!(ifchange_q = sock_get_ifchange_q( sock )))
+ return;
+
+ if (!(async = create_async( current, ifchange_q, async_data )))
+ {
+ if (!async_queued( ifchange_q ))
+ sock_destroy_ifchange_q( sock );
+
+ set_error( STATUS_NO_MEMORY );
+ return;
+ }
+
+ release_object( async );
+ set_error( STATUS_PENDING );
+}
+
+/* stub ifchange object */
+static struct object *get_ifchange( void )
+{
+ set_error( STATUS_NOT_SUPPORTED );
+ return NULL;
+}
+
+/* stub ifchange add socket to list */
+static void ifchange_add_sock( struct object *obj, struct sock *sock )
+{
+}
+
+/* create a new ifchange queue for a specific socket or, if one already exists, reuse the existing one */
+static struct async_queue *sock_get_ifchange_q( struct sock *sock )
+{
+ struct object *ifchange = NULL;
+ struct fd *fd;
+
+ if (sock->ifchange_q) /* reuse existing ifchange_q for this socket */
+ return sock->ifchange_q;
+
+ if (!(ifchange = get_ifchange()))
+ return NULL;
+
+ /* create the ifchange notification queue */
+ fd = ifchange->ops->get_fd( ifchange );
+ sock->ifchange_q = create_async_queue( fd );
+ release_object( fd );
+ if (!sock->ifchange_q)
+ {
+ release_object( ifchange );
+ set_error( STATUS_NO_MEMORY );
+ return NULL;
+ }
+
+ /* add the socket to the ifchange notification list */
+ ifchange_add_sock( ifchange, sock );
+ sock->ifchange_obj = ifchange;
+ return sock->ifchange_q;
+}
+
+/* destroy an existing ifchange queue for a specific socket */
+static void sock_destroy_ifchange_q( struct sock *sock )
+{
+ if (sock->ifchange_q)
+ {
+ list_remove( &sock->ifchange_entry );
+ free_async_queue( sock->ifchange_q );
+ sock->ifchange_q = NULL;
+ release_object( sock->ifchange_obj );
+ }
+}
+
/* create a socket */
DECL_HANDLER(create_socket)
{
--
1.7.9.5

View File

@@ -1,452 +0,0 @@
From 8bd705add6a11c82faa1695656fd84c2611358c1 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 5 Dec 2013 13:45:15 -0700
Subject: server: Implement an interface change notification object.
---
server/event.c | 13 +++
server/named_pipe.c | 13 ---
server/object.h | 1 +
server/sock.c | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 313 insertions(+), 17 deletions(-)
diff --git a/server/event.c b/server/event.c
index b8515af..e8a3888 100644
--- a/server/event.c
+++ b/server/event.c
@@ -124,6 +124,19 @@ struct event *create_event( struct directory *root, const struct unicode_str *na
return event;
}
+obj_handle_t alloc_wait_event( struct process *process )
+{
+ obj_handle_t handle = 0;
+ struct event *event = create_event( NULL, NULL, 0, 1, 0, NULL );
+
+ if (event)
+ {
+ handle = alloc_handle( process, event, EVENT_ALL_ACCESS, 0 );
+ release_object( event );
+ }
+ return handle;
+}
+
struct event *get_event_obj( struct process *process, obj_handle_t handle, unsigned int access )
{
return (struct event *)get_handle_obj( process, handle, access, &event_ops );
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 4c85104..6ba2145 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -587,19 +587,6 @@ static enum server_fd_type pipe_client_get_fd_type( struct fd *fd )
return FD_TYPE_PIPE;
}
-static obj_handle_t alloc_wait_event( struct process *process )
-{
- obj_handle_t handle = 0;
- struct event *event = create_event( NULL, NULL, 0, 1, 0, NULL );
-
- if (event)
- {
- handle = alloc_handle( process, event, EVENT_ALL_ACCESS, 0 );
- release_object( event );
- }
- return handle;
-}
-
static obj_handle_t pipe_server_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *async_data,
int blocking, const void *data, data_size_t size )
{
diff --git a/server/object.h b/server/object.h
index bb3ff21..bad162f 100644
--- a/server/object.h
+++ b/server/object.h
@@ -159,6 +159,7 @@ extern struct event *create_event( struct directory *root, const struct unicode_
const struct security_descriptor *sd );
extern struct keyed_event *create_keyed_event( struct directory *root, const struct unicode_str *name,
unsigned int attr, const struct security_descriptor *sd );
+extern obj_handle_t alloc_wait_event( struct process *process );
extern struct event *get_event_obj( struct process *process, obj_handle_t handle, unsigned int access );
extern struct keyed_event *get_keyed_event_obj( struct process *process, obj_handle_t handle, unsigned int access );
extern void pulse_event( struct event *event );
diff --git a/server/sock.c b/server/sock.c
index 1a3a8f7..a34d086 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -44,11 +44,17 @@
#include <time.h>
#include <unistd.h>
+#ifdef HAVE_LINUX_RTNETLINK_H
+# include <linux/rtnetlink.h>
+#endif
+
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
#include "winternl.h"
#include "winerror.h"
+#define USE_WS_PREFIX
+#include "winsock2.h"
#include "process.h"
#include "file.h"
@@ -83,9 +89,6 @@
#define FD_WINE_RAW 0x80000000
#define FD_WINE_INTERNAL 0xFFFF0000
-/* Constants for WSAIoctl() */
-#define WSA_FLAG_OVERLAPPED 0x01
-
struct sock
{
struct object obj; /* object header */
@@ -107,8 +110,19 @@ struct sock
struct sock *deferred; /* socket that waits for a deferred accept */
struct async_queue *read_q; /* queue for asynchronous reads */
struct async_queue *write_q; /* queue for asynchronous writes */
+#ifdef HAVE_LINUX_RTNETLINK_H
+ struct async_queue *ifchange_q; /* queue for interface change notifications */
+ struct list ifchange_entry; /* entry in ifchange notification list */
+#endif
};
+#ifdef HAVE_LINUX_RTNETLINK_H
+/* only keep one ifchange object around, all sockets waiting for wakeups will look to it */
+static struct object *ifchange_object = NULL;
+
+static int sock_add_ifchange( struct sock *sock, const async_data_t *async_data );
+#endif
+
static void sock_dump( struct object *obj, int verbose );
static int sock_signaled( struct object *obj, struct wait_queue_entry *entry );
static struct fd *sock_get_fd( struct object *obj );
@@ -117,6 +131,8 @@ static void sock_destroy( struct object *obj );
static int sock_get_poll_events( struct fd *fd );
static void sock_poll_event( struct fd *fd, int event );
static enum server_fd_type sock_get_fd_type( struct fd *fd );
+static obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *async,
+ int blocking, const void *data, data_size_t size );
static void sock_queue_async( struct fd *fd, const async_data_t *data, int type, int count );
static void sock_reselect_async( struct fd *fd, struct async_queue *queue );
static void sock_cancel_async( struct fd *fd, struct process *process, struct thread *thread, client_ptr_t iosb );
@@ -151,7 +167,7 @@ static const struct fd_ops sock_fd_ops =
sock_poll_event, /* poll_event */
no_flush, /* flush */
sock_get_fd_type, /* get_fd_type */
- default_fd_ioctl, /* ioctl */
+ sock_ioctl, /* ioctl */
sock_queue_async, /* queue_async */
sock_reselect_async, /* reselect_async */
sock_cancel_async /* cancel_async */
@@ -518,6 +534,43 @@ static enum server_fd_type sock_get_fd_type( struct fd *fd )
return FD_TYPE_SOCKET;
}
+obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *async_data,
+ int blocking, const void *data, data_size_t size )
+{
+ struct sock *sock = get_fd_user( fd );
+ obj_handle_t wait_handle = 0;
+ async_data_t new_data;
+
+ assert( sock->obj.ops == &sock_ops );
+
+ if (blocking)
+ {
+ if (!(wait_handle = alloc_wait_event( current->process ))) return 0;
+ new_data = *async_data;
+ new_data.event = wait_handle;
+ async_data = &new_data;
+ }
+ switch(code)
+ {
+ case WS_SIO_ADDRESS_LIST_CHANGE:
+#ifdef HAVE_LINUX_RTNETLINK_H
+ if (sock_add_ifchange( sock, async_data ))
+ {
+ set_error( STATUS_PENDING );
+ return wait_handle;
+ }
+#else
+ set_error( STATUS_NOT_SUPPORTED );
+#endif
+ break;
+ default:
+ close_handle( current->process, wait_handle );
+ return default_fd_ioctl(fd, code, async_data, blocking, data, size);
+ }
+ close_handle( current->process, wait_handle );
+ return 0;
+}
+
static void sock_queue_async( struct fd *fd, const async_data_t *data, int type, int count )
{
struct sock *sock = get_fd_user( fd );
@@ -592,6 +645,14 @@ static void sock_destroy( struct object *obj )
free_async_queue( sock->read_q );
free_async_queue( sock->write_q );
+#ifdef HAVE_LINUX_RTNETLINK_H
+ if (sock->ifchange_q)
+ {
+ free_async_queue( sock->ifchange_q );
+ list_remove( &sock->ifchange_entry );
+ release_object( ifchange_object );
+ }
+#endif
if (sock->event) release_object( sock->event );
if (sock->fd)
{
@@ -618,6 +679,9 @@ static void init_sock(struct sock *sock)
sock->deferred = NULL;
sock->read_q = NULL;
sock->write_q = NULL;
+#ifdef HAVE_LINUX_RTNETLINK_H
+ sock->ifchange_q = NULL;
+#endif
memset( sock->errors, 0, sizeof(sock->errors) );
}
@@ -906,6 +970,237 @@ static void sock_set_error(void)
set_error( sock_get_ntstatus( errno ) );
}
+#ifdef HAVE_LINUX_RTNETLINK_H
+
+static void ifchange_dump( struct object *obj, int verbose );
+static struct fd *ifchange_get_fd( struct object *obj );
+static void ifchange_destroy( struct object *obj );
+
+static int ifchange_get_poll_events( struct fd *fd );
+static void ifchange_poll_event( struct fd *fd, int event );
+static void ifchange_reselect_async( struct fd *fd, struct async_queue *queue );
+
+struct ifchange
+{
+ struct object obj; /* object header */
+ struct fd *fd; /* interface change file descriptor */
+ struct list sockets; /* list of sockets to send interface change notifications */
+};
+
+static const struct object_ops ifchange_ops =
+{
+ sizeof(struct ifchange), /* size */
+ ifchange_dump, /* dump */
+ no_get_type, /* get_type */
+ add_queue, /* add_queue */
+ NULL, /* remove_queue */
+ NULL, /* signaled */
+ no_satisfied, /* satisfied */
+ no_signal, /* signal */
+ ifchange_get_fd, /* get_fd */
+ default_fd_map_access, /* map_access */
+ default_get_sd, /* get_sd */
+ default_set_sd, /* set_sd */
+ no_lookup_name, /* lookup_name */
+ no_open_file, /* open_file */
+ no_close_handle, /* close_handle */
+ ifchange_destroy /* destroy */
+};
+
+static const struct fd_ops ifchange_fd_ops =
+{
+ ifchange_get_poll_events, /* get_poll_events */
+ ifchange_poll_event, /* poll_event */
+ NULL, /* flush */
+ NULL, /* get_fd_type */
+ NULL, /* ioctl */
+ NULL, /* queue_async */
+ ifchange_reselect_async, /* reselect_async */
+ NULL /* cancel_async */
+};
+
+static void ifchange_dump( struct object *obj, int verbose )
+{
+ assert( obj->ops == &ifchange_ops );
+ printf( "ifchange\n" );
+}
+
+static struct fd *ifchange_get_fd( struct object *obj )
+{
+ struct ifchange *ifchange = (struct ifchange *)obj;
+ return (struct fd *)grab_object( ifchange->fd );
+}
+
+static void ifchange_destroy( struct object *obj )
+{
+ struct ifchange *ifchange = (struct ifchange *)obj;
+ assert( obj->ops == &ifchange_ops );
+
+ /* reset the global ifchange object so that it will be recreated if it is needed again */
+ ifchange_object = NULL;
+ /* shut the socket down to force pending poll() calls in the client to return */
+ shutdown( get_unix_fd(ifchange->fd), SHUT_RDWR );
+ release_object( ifchange->fd );
+}
+
+static int ifchange_get_poll_events( struct fd *fd )
+{
+ return POLLIN;
+}
+
+/* add a socket to the interface change notification's list of sockets */
+void ifchange_add_sock( struct object *obj, struct sock *sock )
+{
+ struct ifchange *ifchange = (struct ifchange *)obj;
+
+ list_add_tail( &ifchange->sockets, &sock->ifchange_entry );
+}
+
+static int init_ifchange( struct ifchange *ifchange )
+{
+ struct sockaddr_nl addr;
+ int unix_fd;
+
+ list_init( &ifchange->sockets );
+ unix_fd = socket( PF_NETLINK, SOCK_RAW, NETLINK_ROUTE );
+ if (unix_fd == -1)
+ {
+ sock_set_error();
+ return 0;
+ }
+ fcntl( unix_fd, F_SETFL, O_NONBLOCK ); /* make socket nonblocking */
+ memset( &addr, 0, sizeof(addr) );
+ addr.nl_family = AF_NETLINK;
+ addr.nl_groups = RTMGRP_IPV4_IFADDR;
+ /* bind the socket to the special netlink kernel interface */
+ if (bind( unix_fd, (struct sockaddr *)&addr, sizeof(addr) ) == -1)
+ {
+ sock_set_error();
+ close( unix_fd );
+ return 0;
+ }
+ if (!(ifchange->fd = create_anonymous_fd( &ifchange_fd_ops, unix_fd, &ifchange->obj, 0 )))
+ {
+ close( unix_fd );
+ return 0;
+ }
+ /* enable read wakeup on the file descriptor */
+ set_fd_events( ifchange->fd, POLLIN );
+ return 1;
+}
+
+/* create a new ifchange notifier or, if one already exists, reuse the existing one */
+static struct object *create_ifchange( void )
+{
+ struct ifchange *ifchange;
+
+ /* we only need one of these interface notification objects, all of the sockets dependent upon
+ * it will wake up when a notification event occurs */
+ if (ifchange_object)
+ return grab_object( ifchange_object );
+ if (!(ifchange = alloc_object( &ifchange_ops )))
+ return NULL;
+ if (!init_ifchange( ifchange ))
+ {
+ release_object( ifchange );
+ return NULL;
+ }
+ ifchange_object = &ifchange->obj;
+ return ifchange_object;
+}
+
+/* wake up an ifchange notification queue for a socket and decrement the ifchange object refcount */
+void sock_ifchange_wake_up( struct sock *sock, unsigned int status )
+{
+ assert( sock->ifchange_q );
+ async_wake_up( sock->ifchange_q, status );
+ free_async_queue( sock->ifchange_q );
+ sock->ifchange_q = NULL;
+ list_remove( &sock->ifchange_entry );
+ release_object( ifchange_object );
+}
+
+/* wake up all the sockets waiting for a change notification event */
+static void ifchange_wake_up( struct object *obj, unsigned int status )
+{
+ struct ifchange *ifchange = (struct ifchange *)obj;
+ struct list *ptr, *next;
+
+ assert( obj->ops == &ifchange_ops );
+ LIST_FOR_EACH_SAFE( ptr, next, &ifchange->sockets )
+ {
+ struct sock *sock = LIST_ENTRY( ptr, struct sock, ifchange_entry );
+
+ sock_ifchange_wake_up( sock, status );
+ }
+}
+
+static void ifchange_poll_event( struct fd *fd, int event )
+{
+ struct object *ifchange = get_fd_user( fd );
+ unsigned int status = STATUS_PENDING;
+ char buffer[0x1000];
+ int r;
+
+ r = recv( get_unix_fd(fd), buffer, sizeof(buffer), MSG_DONTWAIT );
+ if (r < 0)
+ {
+ if (errno == EWOULDBLOCK || errno == EAGAIN)
+ return; /* retry when poll() says the socket is ready */
+ status = sock_get_ntstatus( errno );
+ }
+ else if (r != 0)
+ {
+ struct nlmsghdr *nlh;
+
+ for (nlh = (struct nlmsghdr*)buffer; NLMSG_OK(nlh, r); nlh = NLMSG_NEXT(nlh, r))
+ {
+ if (nlh->nlmsg_type == NLMSG_DONE)
+ break;
+ if (nlh->nlmsg_type == RTM_NEWADDR || nlh->nlmsg_type == RTM_DELADDR)
+ status = STATUS_SUCCESS;
+ }
+ }
+ if (status != STATUS_PENDING)
+ ifchange_wake_up( ifchange, status );
+}
+
+static void ifchange_reselect_async( struct fd *fd, struct async_queue *queue )
+{
+ /* do nothing, this object is about to disappear */
+}
+
+/* add interface change notification to a socket */
+int sock_add_ifchange( struct sock *sock, const async_data_t *async_data )
+{
+ struct object *ifchange = ifchange_object;
+ struct async *async;
+ struct fd *fd;
+
+ if (!sock->ifchange_q)
+ {
+ /* associate this socket with the interface change object */
+ ifchange = create_ifchange();
+ if (!ifchange) return FALSE;
+ ifchange_add_sock( ifchange, sock ); /* add this socket to the change notification list */
+ if (!(fd = ifchange_get_fd( ifchange ))) goto fail;
+ sock->ifchange_q = create_async_queue( fd );
+ release_object( fd );
+ if (!sock->ifchange_q) goto fail;
+ }
+ if (!(async = create_async( current, sock->ifchange_q, async_data ))) goto fail;
+ release_object( async );
+ return TRUE;
+
+fail:
+ free_async_queue( sock->ifchange_q );
+ sock->ifchange_q = NULL;
+ release_object( ifchange );
+ return FALSE;
+}
+
+#endif
+
/* create a socket */
DECL_HANDLER(create_socket)
{
--
1.7.9.5

Some files were not shown because too many files have changed in this diff Show More