On 1 December 2016 at 08:23, William A Rowe Jr <wr...@rowe-clan.net> wrote: > Even as httpd is operating under paralysis by analysis, we are long past a > year since the last releases. > > Is there anything holding up the jumps to 1.6, or 2.0? > > I'd personally like to see an API harmonising memcache to redis, but that > can't possibly be a showstopper to any incremental release. > > If nobody else offers, I'll T&R 1.6 objects in 72 or so hours for a vote, > alongside the first 2.0 RC. > > Feedback welcomed. >
1. Currently apr 1.6.x doesn't build on Windows using makefiles: [[[ link.exe @C:\Users\ivan\AppData\Local\Temp\nm2BCE.tmp Creating library .\x64\Release\libapr-1.lib and object .\x64\Release\libapr-1.exp poll.obj : error LNK2019: unresolved external symbol apr_poll_drain_wakeup_pipe referenced in function impl_pollset_poll select.obj : error LNK2001: unresolved external symbol apr_poll_drain_wakeup_pipe pollcb.obj : error LNK2019: unresolved external symbol apr_poll_create_wakeup_pipe referenced in function apr_pollcb_create_ex pollset.obj : error LNK2001: unresolved external symbol apr_poll_create_wakeup_pipe pollcb.obj : error LNK2019: unresolved external symbol apr_poll_close_wakeup_pipe referenced in function pollcb_cleanup pollset.obj : error LNK2001: unresolved external symbol apr_poll_close_wakeup_pipe .\x64\Release\libapr-1.dll : fatal error LNK1120: 3 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files (x86)\VS14\VC\BIN\amd64\link.exe"' : return code '0x460' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\VS14\VC\BIN\amd64\nmake.exe"' : return code '0x2' Stop. ]]] Attached patch apr-1.6.x-win32-fix-makefiles-v1.patch.txt fixes this problem. There is no makefiles for Windows on trunk, so how should I proceed? May I just commit this patch to 1.6.x branch or it's better to propose it to STATUS? 2. The same problem with CMake build. There is no such problem on trunk. Attached patch apr-1.6.x-win32-fix-cmake-v1.patch 3. Compilation fails due unresolved external symbol file_socket_pipe_close referenced in function _apr_poll_close_wakeup_pipe. This happens because there is no file_socket_pipe_close() function on the 1.6.x branch: it's named apr_file_socket_pipe_close(). Solution could either backport r892386 [1] from trunk or apply attached patch (apr-1.6.x-unix-wakeup.patch.txt) . The r892386 doesn't merge cleanly so I think applying local patch to branch is better. I'm not familiar with APR release/backport process yet, so please excuse me if my questions are stupid. [1] https://svn.apache.org/r892386 -- Ivan Zhakov
Index: apr.mak =================================================================== --- apr.mak (revision 1772461) +++ apr.mak (working copy) @@ -115,6 +115,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -215,6 +216,7 @@ "$(INTDIR)\poll.obj" \ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\select.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ @@ -329,6 +331,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -430,6 +433,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -543,6 +547,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -644,6 +649,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -757,6 +763,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -858,6 +865,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -971,6 +979,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -1072,6 +1081,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -1185,6 +1195,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\apr-1.lib" -@erase ".\include\apr.h" -@erase ".\include\apr_gen_test_char.h" @@ -1286,6 +1297,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -1632,7 +1644,11 @@ "$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h" $(CPP) $(CPP_PROJ) $(SOURCE) +SOURCE=.\poll\unix\wakeup.c +"$(INTDIR)\wakeup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h" + $(CPP) $(CPP_PROJ) $(SOURCE) + SOURCE=.\random\unix\apr_random.c "$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h" Index: libapr.mak =================================================================== --- libapr.mak (revision 1772461) +++ libapr.mak (working copy) @@ -117,6 +117,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\libapr-1.dll" -@erase "$(OUTDIR)\libapr-1.exp" -@erase "$(OUTDIR)\libapr-1.lib" @@ -245,6 +246,7 @@ "$(INTDIR)\timestr.obj" \ "$(INTDIR)\groupinfo.obj" \ "$(INTDIR)\userinfo.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\libapr.res" "$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) @@ -353,6 +355,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\libapr-1.dll" -@erase "$(OUTDIR)\libapr-1.exp" -@erase "$(OUTDIR)\libapr-1.lib" @@ -481,6 +484,7 @@ "$(INTDIR)\timestr.obj" \ "$(INTDIR)\groupinfo.obj" \ "$(INTDIR)\userinfo.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\libapr.res" "$(OUTDIR)\libapr-1.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) @@ -589,6 +593,7 @@ -@erase "$(INTDIR)\userinfo.obj" -@erase "$(INTDIR)\utf8.obj" -@erase "$(INTDIR)\version.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(OUTDIR)\libapr-1.dll" -@erase "$(OUTDIR)\libapr-1.exp" -@erase "$(OUTDIR)\libapr-1.lib" @@ -696,6 +701,7 @@ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ "$(INTDIR)\select.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ "$(INTDIR)\sha2_glue.obj" \ @@ -798,6 +804,7 @@ -@erase "$(INTDIR)\poll.obj" -@erase "$(INTDIR)\pollcb.obj" -@erase "$(INTDIR)\pollset.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(INTDIR)\proc.obj" -@erase "$(INTDIR)\proc_mutex.obj" -@erase "$(INTDIR)\rand.obj" @@ -931,6 +938,7 @@ "$(INTDIR)\poll.obj" \ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\select.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ @@ -1034,6 +1042,7 @@ -@erase "$(INTDIR)\poll.obj" -@erase "$(INTDIR)\pollcb.obj" -@erase "$(INTDIR)\pollset.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(INTDIR)\proc.obj" -@erase "$(INTDIR)\proc_mutex.obj" -@erase "$(INTDIR)\rand.obj" @@ -1167,6 +1176,7 @@ "$(INTDIR)\poll.obj" \ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\select.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ @@ -1270,6 +1280,7 @@ -@erase "$(INTDIR)\poll.obj" -@erase "$(INTDIR)\pollcb.obj" -@erase "$(INTDIR)\pollset.obj" + -@erase "$(INTDIR)\wakeup.obj" -@erase "$(INTDIR)\proc.obj" -@erase "$(INTDIR)\proc_mutex.obj" -@erase "$(INTDIR)\rand.obj" @@ -1403,6 +1414,7 @@ "$(INTDIR)\poll.obj" \ "$(INTDIR)\pollcb.obj" \ "$(INTDIR)\pollset.obj" \ + "$(INTDIR)\wakeup.obj" \ "$(INTDIR)\select.obj" \ "$(INTDIR)\apr_random.obj" \ "$(INTDIR)\sha2.obj" \ @@ -1758,7 +1770,12 @@ "$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h" $(CPP) $(CPP_PROJ) $(SOURCE) +SOURCE=.\poll\unix\wakeup.c +"$(INTDIR)\wakeup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h" + $(CPP) $(CPP_PROJ) $(SOURCE) + + SOURCE=.\poll\unix\select.c "$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 1772461) +++ CMakeLists.txt (working copy) @@ -181,6 +181,7 @@ poll/unix/pollcb.c poll/unix/pollset.c poll/unix/select.c + poll/unix/wakeup.c random/unix/apr_random.c random/unix/sha2.c random/unix/sha2_glue.c
Index: poll/unix/wakeup.c =================================================================== --- poll/unix/wakeup.c (revision 1772461) +++ poll/unix/wakeup.c (working copy) @@ -32,8 +32,8 @@ { apr_status_t rv; - if ((rv = file_socket_pipe_create(&wakeup_pipe[0], &wakeup_pipe[1], - pool)) != APR_SUCCESS) + if ((rv = apr_file_socket_pipe_create(&wakeup_pipe[0], &wakeup_pipe[1], + pool)) != APR_SUCCESS) return rv; pfd->reqevents = APR_POLLIN; @@ -49,11 +49,11 @@ /* Close both sides of the wakeup pipe */ if (wakeup_pipe[0]) { - rv0 = file_socket_pipe_close(wakeup_pipe[0]); + rv0 = apr_file_socket_pipe_close(wakeup_pipe[0]); wakeup_pipe[0] = NULL; } if (wakeup_pipe[1]) { - rv1 = file_socket_pipe_close(wakeup_pipe[1]); + rv1 = apr_file_socket_pipe_close(wakeup_pipe[1]); wakeup_pipe[1] = NULL; } return rv0 ? rv0 : rv1;