To make things easy WASP will now go out in the wild.
Ever wanted a 64 bit distribution of apache 2.4, svn and php but putting all the parts together caused butt pain?
Well here you go.
How stable is it?
It hasn't crashed in production. YET.
How is it configured?
httpd.conf. It uses lots of memory! It eats 2.3 GB of RAM, and then holds steady due to a 2GB svn cache. If you have a small repo and more RAM? MAKE the cache BIGGER!
In production it currently serves a 1.6TB svn repo with 465k revisions that is growing, and acts as a proxy for multiple internal web servers. It also runs PHP so you can use it to do other useful things. Uses rotatelogs to make daily rotating logs, cause usually no one sets this up either!
Why did I put it together?
Because nothing out there fit my needs.
Why did I put this here?
Because hopefully it'll benefit someone else that also wants to roll their own and not use collabnet/wandisco/visualsvn. They are all great products, but not quite what I'm looking for.
How do I install it?
Extract to C:\WASP. Run httpd.exe
Download
Tuesday, December 2, 2014
Monday, July 21, 2014
Note to self : 0x000001d error
Usually means some /arch: for code generation that is not supported, like SSE2 / AVX
Monday, June 9, 2014
Beware the Windows Scheduled Tasks!
I've had a TeamCity server run much much slower than it's other counterparts.
I finally narrowed it down to Scheduled Tasks. The agent was started at logon by Scheduled Tasks.
It looks like Scheduled Tasks will start in under below normal priority and while this wasn't a problem for many of our build tools, TortoiseSVN however performs very very poorly in below normal priority.
I finally narrowed it down to Scheduled Tasks. The agent was started at logon by Scheduled Tasks.
It looks like Scheduled Tasks will start in under below normal priority and while this wasn't a problem for many of our build tools, TortoiseSVN however performs very very poorly in below normal priority.
Simple Hall and Teamcity Integration
You will have to set up these 2 parameters as environment variables to be passed in your TeamCity project parameters configuration.
env.BuildID = %teamcity.build.id%
env.BuildTypeID = %system.teamcity.buildType.id%
Checks to see if it's running under TeamCity and then sends the INFO
env.BuildID = %teamcity.build.id%
env.BuildTypeID = %system.teamcity.buildType.id%
Checks to see if it's running under TeamCity and then sends the INFO
if not "%TEAMCITY_PROJECT_NAME%" == "" curl -X POST -H "Content-Type: application/json" -d "{\"title\":\"TeamCity\",\"message\":\"Failed - %TEAMCITY_PROJECT_NAME% - %TEAMCITY_BUILDCONF_NAME% - %BUILD_NUMBER% ^<a href="http://TEAMCITYURL/viewLog.html?buildId=%BuildID%&buildTypeId=%BuildTypeID%&tab=buildResultsDiv"^>View Build^</a^>\",\"picture\":\"http:/TEAMCITYURL/img/icons/TeamCity32.png\"}" https://hall.com/api/1/services/generic/HALLID
Thursday, June 5, 2014
Visual Studio Property files and line endings
If you like to lay out multi line preprocessor definition in macros in .props files.
<pc32_preprocessor>
WF_PC32;
WIN32;
_CRT_SECURE_NO_WARNINGS;
$(FORCED_ENVARS)
</pc32_preprocessor>
Something like that. Certain plugins like the clang plugin will cause all sorts of interesting errors because it'll pass the command line to the compiler with the CRLF.
Change line endings to Old Mac format CR only.
VS will allow you to edit and it will respect the line endings and wont convert it, and it seems to pass through to the compiler just fine.
<pc32_preprocessor>
WF_PC32;
WIN32;
_CRT_SECURE_NO_WARNINGS;
$(FORCED_ENVARS)
</pc32_preprocessor>
Something like that. Certain plugins like the clang plugin will cause all sorts of interesting errors because it'll pass the command line to the compiler with the CRLF.
Change line endings to Old Mac format CR only.
VS will allow you to edit and it will respect the line endings and wont convert it, and it seems to pass through to the compiler just fine.
Integrating windows hosted SVN with hall, logs and diffs provided with WEBSVN
For posterity
SET PATH=%PATH%;E:\svn;E:\curl\bin;E:\bin
SET REPOS="%1"
SET REV=%2
SET HALLROOM=put Group API Token here
SET WEBSVNHOST=https://YOUR_URL_HERE/revision.php?repname=REPONAME
SET PATHTOMATCH=trunk
REM HALL INTEGRATION
svnlook author %REPOS% --revision %REV%> E:\temp\svnlook%REV%_USER
SET /P SVN_USERNAME=<E:\temp\svnlook%REV%_USER
del E:\temp\svnlook%REV%_USER
svnlook log %REPOS% --revision %REV%> E:\temp\svnlook%REV%_LOG
SET /P SVN_COMMIT_MESSAGE=<E:\temp\svnlook%REV%_LOG
del E:\temp\svnlook%REV%_LOG
svnlook dirs-changed %REPOS% --revision %REV%> E:\temp\svnlook%REV%_CHANGED
SET /P SVN_COMMIT_DIRECTORY=<E:\temp\svnlook%REV%_CHANGED
SET SVNMESSAGE=Revision : %REV% - %SVN_USERNAME% - %SVN_COMMIT_MESSAGE%
grep -E "%PATHTOMATCH%" E:\temp\svnlook%REV%_CHANGED
if "%ERRORLEVEL%"=="0" curl -X POST -H "Content-Type: application/json" -d "{\"title\":\"SVN Commit\",\"message\":\"%SVNMESSAGE%^<br^> ^<a href="%WEBSVNHOST%&path=%%2F&rev=%REV%"^>Inspect Log^</a^>\"}" https://hall.com/api/1/services/generic/%HALLROOM%
del E:\temp\svnlook%REV%_CHANGED
Wednesday, May 1, 2013
Reset WINS cache on a QNAP device
Disable WINS server from web administration page
SSH into it
cd /var/log/samba/locks
delete wins.dat
Enable WINS server from web administration page
Done.
SSH into it
cd /var/log/samba/locks
delete wins.dat
Enable WINS server from web administration page
Done.
Wednesday, October 17, 2012
VSPTree is alive!
I've been using Windows 8 for the last couple of months and have been having a great time with it. It's Windows 7 with a nice flat UI, much faster I/O. Stability is the same, and pretty much have never opened a metro app. I'm not even sure how to use those correctly. The new Start Menu is just a very big start menu to me.
Anyway I digress, I needed to profile something and went with the usual suspects. CodeAnalyst, Got no data. AQTime, failed to launch the exe. Very Sleepy, worked but no hierarchical call graph. Tried to resurrect VSPTree with the VS2010 profiler and I got a driver not allowed error.
Oh well. Some digging around and I found Remote Tools for Visual Studio 2012.
So I took a little time and updated VSPTree to work with it, and added some minor usability updates. It's not the best application in the world, but sometimes it's handy just to have it.
VSPTree 0.5 : Now with Windows 8 64 bit support. Here.
Anyway I digress, I needed to profile something and went with the usual suspects. CodeAnalyst, Got no data. AQTime, failed to launch the exe. Very Sleepy, worked but no hierarchical call graph. Tried to resurrect VSPTree with the VS2010 profiler and I got a driver not allowed error.
Oh well. Some digging around and I found Remote Tools for Visual Studio 2012.
So I took a little time and updated VSPTree to work with it, and added some minor usability updates. It's not the best application in the world, but sometimes it's handy just to have it.
VSPTree 0.5 : Now with Windows 8 64 bit support. Here.
Friday, October 12, 2012
Conditionals in Property Sheets
I've since moved to using property sheets exclusively instead of wfMake and it's been going well. A bit more more typing but I like the fact that I can edit a bunch of includes and not have to regenerate the vcproj/vcxproj. The most time consuming part was going through all the projects and setting the right macros everywhere. But you only have to do it once.
It's one place to update everything and can be syntax highlighted and formatted quite neatly.
You end up with something like this. This is only an excerpt, the whole thing is quite huge. You can then string your macros any way you like. The fanciest bit of this is the conditionals at the top that I use because some sln's that include these projects are sometimes in different places, and there was no other way I could think of to correctly set the path.
It's one place to update everything and can be syntax highlighted and formatted quite neatly.
You end up with something like this. This is only an excerpt, the whole thing is quite huge. You can then string your macros any way you like. The fanciest bit of this is the conditionals at the top that I use because some sln's that include these projects are sometimes in different places, and there was no other way I could think of to correctly set the path.
$(ProjectDir)..\..\..\ $(ProjectDir)..\..\..\ $(SolutionDir) WF_DEBUG; _DEBUG WF_RELEASE; NDEBUG WF_FINAL; NDEBUG WF_PC32; WIN32; _CRT_SECURE_NO_WARNINGS; $(FORCED_ENVARS) $(WF_DEBUG); $(PC32_PREPROCESSOR); __PLACEMENT_NEW_INLINE
Wednesday, March 28, 2012
Pre-commit goodness
This solution was used to solve programmers frequently accidentally committing debug executables into SVN. On developer machines you rarely see this issue because all the debug libs exist, but a level designer or artist will frequently run into the problem and will have no idea what the problem is, and someone will have to take a look at it and figure out what in the world is going on. Then the doh! moment happens and someone has to recompile and commit that.
The precommit hook also show an example of how to deny committing certain files like .argb and thumb.db
The solution is simple enough. Add a precommit hook that scans all the exe's for debug libs. This method uses Dependency Walker by Steve Miller.
So far I've tested it on rather large commits with 20 exe's and it doesn't take more than 20 - 30 seconds to complete. Server is running a i7-960 for reference.
The precommit hook also show an example of how to deny committing certain files like .argb and thumb.db
The solution is simple enough. Add a precommit hook that scans all the exe's for debug libs. This method uses Dependency Walker by Steve Miller.
So far I've tested it on rather large commits with 20 exe's and it doesn't take more than 20 - 30 seconds to complete. Server is running a i7-960 for reference.
cd /d %~dp0 SETLOCAL ENABLEDELAYEDEXPANSION SET REPOS=%1 SET TXN=%2 SET PATH=E:\svn;E:\bin;E:\depends svnlook changed %REPOS% -t %TXN% > E:\temp\svnlook%TXN% grep -E "A.+(.argb)" E:\temp\svnlook%TXN% if "%ERRORLEVEL%"=="0" ( echo Do not commit ARGB files! >&2 goto :error ) grep -E "A.+(thumbs.db)" E:\temp\svnlook%TXN% if "%ERRORLEVEL%"=="0" ( echo Do not commit thumbs.db! >&2 goto :error ) grep -P -o "(?<=\w\s\s\s).+\.exe" E:\temp\svnlook%TXN% > E:\temp\svnlook%TXN%_exegrep for /f "tokens=1 delims=¶" %%f IN (E:\temp\svnlook%TXN%_exegrep) DO ( svnlook cat %REPOS% -t %TXN% "%%f" > E:\temp\temp depends.exe /c /of:E:\temp\dep.txt E:\temp\temp grep -E "QT.+D4.DLL" E:\temp\dep.txt if "!ERRORLEVEL!"=="0" ( echo Do not commit Debug executables! %%f is in debug>&2 goto :error ) ) del E:\temp\svnlook%TXN% del E:\temp\svnlook%TXN%_exegrep exit 0 :error del E:\temp\svnlook%TXN% del E:\temp\svnlook%TXN%_exegrep exit 1
Subscribe to:
Posts (Atom)