added in old production bits, only relevant on win32 and only if we build dlls, which
authorChris Koeritz <fred@gruntose.com>
Sat, 14 Apr 2012 21:11:46 +0000 (17:11 -0400)
committerChris Koeritz <fred@gruntose.com>
Sat, 14 Apr 2012 21:11:46 +0000 (17:11 -0400)
we still do not yet do (again).  so not so relevant.  but no longer a to-do, so whoohoo!

production/assign_bases/makefile [new file with mode: 0755]
production/assign_bases/rebaser.sh [new file with mode: 0644]
production/assign_bases/whack_odd_dlls.sh [new file with mode: 0644]
production/check_versions/check_versions.cpp [new file with mode: 0644]
production/check_versions/makefile [new file with mode: 0755]
production/makefile

diff --git a/production/assign_bases/makefile b/production/assign_bases/makefile
new file mode 100755 (executable)
index 0000000..98a9177
--- /dev/null
@@ -0,0 +1,12 @@
+include cpp/variables.def
+
+PROJECT = rebaser
+ifeq "$(OP_SYSTEM)" "WIN32"
+  TARGETS = perform_rebasing
+endif
+TYPE = hierarchy
+
+include cpp/rules.def
+
+perform_rebasing:
+       $(HIDESH)./rebaser.sh
diff --git a/production/assign_bases/rebaser.sh b/production/assign_bases/rebaser.sh
new file mode 100644 (file)
index 0000000..eaa8bfc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+bash $PRODUCTION_DIR/assign_bases/whack_odd_dlls.sh
+"$VS80COMNTOOLS/Bin"/rebase.exe -b 0x68000000 -d $DYNAMIC_LIBRARY_DIR/*.dll
+
diff --git a/production/assign_bases/whack_odd_dlls.sh b/production/assign_bases/whack_odd_dlls.sh
new file mode 100644 (file)
index 0000000..b30d7cb
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+DA_DIR="$PRODUCTION_DIR/binaries"
+
+rm -f $DA_DIR/AxInterop.*.dll \
+  $DA_DIR/DevAge*dll \
+  $DA_DIR/DevComponents*dll \
+  $DA_DIR/devcomponents*dll \
+  $DA_DIR/DirectShowLib* \
+  $DA_DIR/Dundas*dll \
+  $DA_DIR/ICreateDataGrid.dll \
+  $DA_DIR/ICreateTypeProbe.dll \
+  $DA_DIR/Interop.*.dll \
+  $DA_DIR/libeay32.dll \
+  $DA_DIR/MagicLibrary.dll \
+  $DA_DIR/Microsoft.SqlServer.*.dll \
+  $DA_DIR/NineRays.Win.Widgets.dll \
+  $DA_DIR/SlimDX.dll \
+  $DA_DIR/SourceGrid.Extensions.dll \
+  $DA_DIR/SourceLibrary.dll \
+  $DA_DIR/ssleay32.dll \
+  $DA_DIR/ToolkitPro*.dll \
+  $DA_DIR/xunit.dll \
+  $DA_DIR/xunit.extensions.dll \
+  $DA_DIR/*.vshost.exe
+
diff --git a/production/check_versions/check_versions.cpp b/production/check_versions/check_versions.cpp
new file mode 100644 (file)
index 0000000..340dab5
--- /dev/null
@@ -0,0 +1,160 @@
+/*****************************************************************************\
+*                                                                             *
+*  Name   : version checks                                                    *
+*  Author : Chris Koeritz                                                     *
+*                                                                             *
+*  Purpose:                                                                   *
+*                                                                             *
+*    Ensures that all the libraries have a version stamp and that they match  *
+*  the version we expect.                                                     *
+*                                                                             *
+*******************************************************************************
+* Copyright (c) 2002-$now By Author.  This program is free software; you can  *
+* redistribute it and/or modify it under the terms of the GNU General Public  *
+* License as published by the Free Software Foundation; either version 2 of   *
+* the License or (at your option) any later version.  This is online at:      *
+*     http://www.fsf.org/copyleft/gpl.html                                    *
+* Please send any updates to: fred@gruntose.com                               *
+\*****************************************************************************/
+
+#include <basis/portable.h>
+#include <basis/string_array.h>
+#include <basis/version_checker.h>
+#include <basis/version_record.h>
+#include <loggers/console_logger.h>
+#include <opsystem/directory.h>
+#include <loggers/file_logger.h>
+#include <data_struct/static_memory_gremlin.h>
+
+#include <__build_version.h>
+
+HOOPLE_STARTUP_CODE;
+
+#undef LOG
+#define LOG(s) program_wide_logger().log(s)
+
+static bool failure = false;
+static string_array badness_list;
+
+#define complain(where) { \
+  LOG(istring("the file ") +  where + " failed the version check."); \
+  badness_list += where; \
+  failure = true; \
+}
+
+int main(int formal(argc), char *formal(argv)[])
+{
+  SET_DEFAULT_COMBO_LOGGER;
+  // get our main repository directory for the source.
+  istring repodir = portable::env_string("REPOSITORY_DIR");
+
+  // find all the dlls.
+#ifdef __WIN32__
+  directory dlldir(repodir + "/dll", "*.dll");
+#else
+  directory dlldir(repodir + "/dll", "*.so");
+#endif
+  string_array dll_files = dlldir.files();
+
+  // find all the exes.
+#ifdef __WIN32__
+  directory exedir(repodir + "/exe", "*.exe");
+#else
+  directory exedir(repodir + "/exe", "*");
+#endif
+  string_array exe_files = exedir.files();
+
+  // set our path to include the dll and exe directories.
+  istring path = dlldir.path() + ";" + exedir.path() + ";"
+      + portable::env_string("PATH");
+  portable::set_environ("PATH", path);
+//LOG(istring("path is now: ") + portable::env_string("PATH"));
+
+  // calculate the proper version.
+  version good_version(__build_FILE_VERSION);
+  LOG(istring("this is build ") + good_version.flex_text_form());
+
+  for (int i = 0; i < dll_files.length(); i++) {
+    const istring &current = dll_files[i];
+    version found = version_checker::get_version(current);
+    if (good_version != found)
+      complain(current);
+  }
+  for (int i = 0; i < exe_files.length(); i++) {
+    const istring &current = exe_files[i];
+    // skip any obvious non-executable products.
+    if ( (current == "manifest.txt") || (current == "paths.ini")
+        || (current == "shutdown_list.dat") ) continue;
+    version found = version_checker::get_version(current);
+    if (good_version != found) {
+      complain(current);
+    }
+  }
+
+  istring lib_type = "release";
+#ifdef _DEBUG
+  lib_type = "debug";
+#endif
+  LOG(istring("finished checking ") + lib_type + " versions.");
+  if (failure) {
+    LOG("one or more version checks failed!  this is the full set:");
+    LOG(badness_list.text_form());
+  } else {
+    LOG("all attempted version checks succeeded.");
+  }
+
+  return !!failure;
+}
+
+#ifdef __BUILD_STATIC_APPLICATION__
+  // static dependencies found by buildor_gen_deps.sh:
+  #include <basis/byte_array.cpp>
+  #include <basis/callstack_tracker.cpp>
+  #include <basis/convert_utf.cpp>
+  #include <basis/definitions.cpp>
+  #include <basis/earth_time.cpp>
+  #include <basis/guards.cpp>
+  #include <basis/istring.cpp>
+  #include <basis/log_base.cpp>
+  #include <basis/memory_checker.cpp>
+  #include <basis/mutex.cpp>
+  #include <basis/object_base.h>
+  #include <basis/outcome.cpp>
+  #include <basis/packable.cpp>
+  #include <basis/portable.cpp>
+  #include <basis/trap_new.addin>
+  #include <basis/untrap_new.addin>
+  #include <basis/utility.cpp>
+  #include <basis/version_checker.cpp>
+  #include <basis/version_record.cpp>
+  #include <data_struct/bit_vector.cpp>
+  #include <data_struct/byte_hasher.cpp>
+  #include <data_struct/configurator.cpp>
+  #include <data_struct/pointer_hash.h>
+  #include <data_struct/stack.h>
+  #include <data_struct/static_memory_gremlin.cpp>
+  #include <data_struct/string_hash.h>
+  #include <data_struct/string_hasher.cpp>
+  #include <data_struct/string_table.cpp>
+  #include <data_struct/symbol_table.h>
+  #include <data_struct/table_configurator.cpp>
+  #include <loggers/console_logger.cpp>
+  #include <loggers/file_logger.cpp>
+  #include <loggers/locked_logger.cpp>
+  #include <loggers/null_logger.cpp>
+  #include <loggers/program_wide_logger.cpp>
+  #include <opsystem/byte_filer.cpp>
+  #include <opsystem/command_line.cpp>
+  #include <opsystem/critical_events.cpp>
+  #include <opsystem/directory.cpp>
+  #include <opsystem/filename.cpp>
+  #include <opsystem/ini_config.cpp>
+  #include <opsystem/ini_parser.cpp>
+  #include <opsystem/path_configuration.cpp>
+  #include <opsystem/rendezvous.cpp>
+  #include <textual/byte_format.cpp>
+  #include <textual/parser_bits.cpp>
+  #include <textual/string_manipulation.cpp>
+  #include <textual/tokenizer.cpp>
+#endif // __BUILD_STATIC_APPLICATION__
+
diff --git a/production/check_versions/makefile b/production/check_versions/makefile
new file mode 100755 (executable)
index 0000000..ac03b7d
--- /dev/null
@@ -0,0 +1,25 @@
+CONSOLE_MODE = t
+
+include cpp/variables.def
+
+PROJECT = check_versions
+TYPE = test
+#TARGETS = check_versions.exe
+DEFINITIONS += __BUILD_STATIC_APPLICATION__
+
+ifeq "$(OP_SYSTEM)" "WIN32"
+ ifeq "$(BOOT_STRAPPING)" ""
+  LAST_TARGETS = run_checks
+ endif
+endif
+
+include cpp/rules.def
+
+run_checks:
+       echo version checks temporarily turned off.
+#      -$(HIDESH)-c '\
+if [ ! -d $(REPOSITORY_DIR)/logs ]; then \
+  mkdir $(REPOSITORY_DIR)/logs; \
+fi'
+#      -$(CATCHER)$(EXECUTABLE_DIR)/check_versions.exe >$(REPOSITORY_DIR)/logs/version_report.txt 2>&1
+
index e599cfbfe75c1318e0a056fee49ec008abc10aae..85e0a2b6e94b3436f3afe01919cfcac9552991eb 100644 (file)
@@ -1,7 +1,15 @@
 include variables.def
 
 PROJECT = feisty_meow_production_dept
-BUILD_BEFORE = setup_src
+
+BUILD_BEFORE = assign_bases 
+# assign_bases is run after all the dynamic libraries have been built.
+# on win32, it resets the DLL base addresses, so that we do not try to load where
+# everyone else will, at the default location.
+
+BUILD_AFTER = check_versions setup_src
+# check_versions ensures that all the version stamps on DLLs match our expectations.
+# setup_src hierarchy will build our installers.
 
 include rules.def