mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Allow HAL choice during first stage setup
svn path=/trunk/; revision=13698
This commit is contained in:
parent
c0cf3a6c0a
commit
96969f6dc7
6 changed files with 84 additions and 14 deletions
|
@ -22,7 +22,6 @@ cdrom.sys = 3
|
||||||
class2.sys = 3
|
class2.sys = 3
|
||||||
disk.sys = 3
|
disk.sys = 3
|
||||||
floppy.sys = 3
|
floppy.sys = 3
|
||||||
hal.dll = 2
|
|
||||||
keyboard.sys = 3
|
keyboard.sys = 3
|
||||||
l_intl.nls = 2
|
l_intl.nls = 2
|
||||||
ntfs.sys = 3
|
ntfs.sys = 3
|
||||||
|
@ -48,6 +47,15 @@ DefaultLayout = 00000409
|
||||||
|
|
||||||
[Computer]
|
[Computer]
|
||||||
pci_up = "Standard-PC"
|
pci_up = "Standard-PC"
|
||||||
|
pci_mp = "Standard-PC Multiprocessor"
|
||||||
|
|
||||||
|
[Files.pci_up]
|
||||||
|
; <filename> = <directory_id>,<new name>
|
||||||
|
hal.dll = 2
|
||||||
|
|
||||||
|
[Files.pci_mp]
|
||||||
|
; <filename> = <directory_id>,<new name>
|
||||||
|
halmp.dll = 2,hal.dll
|
||||||
|
|
||||||
[Display]
|
[Display]
|
||||||
;<id> = <user friendly name>,<spare>,<service key name>
|
;<id> = <user friendly name>,<spare>,<service key name>
|
||||||
|
|
|
@ -1294,7 +1294,7 @@ InfGetLineCount(HINF InfHandle,
|
||||||
|
|
||||||
/* Iterate through list of sections */
|
/* Iterate through list of sections */
|
||||||
CacheSection = Cache->FirstSection;
|
CacheSection = Cache->FirstSection;
|
||||||
while (Section != NULL)
|
while (CacheSection != NULL)
|
||||||
{
|
{
|
||||||
DPRINT("Comparing '%S' and '%S'\n", CacheSection->Name, Section);
|
DPRINT("Comparing '%S' and '%S'\n", CacheSection->Name, Section);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
#include <ntdll/rtl.h>
|
#include <ntdll/rtl.h>
|
||||||
#include <ntos/minmax.h>
|
#include <ntos/minmax.h>
|
||||||
|
#include <rosrtl/string.h>
|
||||||
|
|
||||||
#include "usetup.h"
|
#include "usetup.h"
|
||||||
#include "infcache.h"
|
#include "infcache.h"
|
||||||
|
@ -352,6 +353,28 @@ CreateDisplayDriverList(HINF InfFile)
|
||||||
return List;
|
return List;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
ProcessComputerFiles(HINF InfFile, PGENERIC_LIST List, PWCHAR* AdditionalSectionName)
|
||||||
|
{
|
||||||
|
PGENERIC_LIST_ENTRY Entry;
|
||||||
|
static WCHAR SectionName[128];
|
||||||
|
|
||||||
|
DPRINT("ProcessComputerFiles() called\n");
|
||||||
|
|
||||||
|
Entry = GetGenericListEntry(List);
|
||||||
|
if (Entry == NULL)
|
||||||
|
{
|
||||||
|
DPRINT("GetGenericListEntry() failed\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wcscpy(SectionName, L"Files.");
|
||||||
|
wcscat(SectionName, Entry->UserData);
|
||||||
|
*AdditionalSectionName = SectionName;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
ProcessDisplayRegistry(HINF InfFile, PGENERIC_LIST List)
|
ProcessDisplayRegistry(HINF InfFile, PGENERIC_LIST List)
|
||||||
|
|
|
@ -33,6 +33,11 @@ CreateComputerTypeList(HINF InfFile);
|
||||||
PGENERIC_LIST
|
PGENERIC_LIST
|
||||||
CreateDisplayDriverList(HINF InfFile);
|
CreateDisplayDriverList(HINF InfFile);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
ProcessComputerFiles(HINF InfFile,
|
||||||
|
PGENERIC_LIST List,
|
||||||
|
PWCHAR* AdditionalSectionName);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
ProcessDisplayRegistry(HINF InfFile,
|
ProcessDisplayRegistry(HINF InfFile,
|
||||||
PGENERIC_LIST List);
|
PGENERIC_LIST List);
|
||||||
|
|
|
@ -2301,6 +2301,7 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
ULONG Line;
|
ULONG Line;
|
||||||
ULONG i;
|
ULONG i;
|
||||||
|
PLIST_ENTRY Entry;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -2761,27 +2762,24 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
|
||||||
|
|
||||||
|
|
||||||
static BOOLEAN
|
static BOOLEAN
|
||||||
PrepareCopyPageInfFile(HINF InfFile,
|
AddSectionToCopyQueue(HINF InfFile,
|
||||||
|
PWCHAR SectionName,
|
||||||
PWCHAR SourceCabinet,
|
PWCHAR SourceCabinet,
|
||||||
PINPUT_RECORD Ir)
|
PINPUT_RECORD Ir)
|
||||||
{
|
{
|
||||||
WCHAR PathBuffer[MAX_PATH];
|
|
||||||
INFCONTEXT FilesContext;
|
INFCONTEXT FilesContext;
|
||||||
INFCONTEXT DirContext;
|
INFCONTEXT DirContext;
|
||||||
PWCHAR KeyValue;
|
|
||||||
ULONG Length;
|
|
||||||
NTSTATUS Status;
|
|
||||||
PWCHAR FileKeyName;
|
PWCHAR FileKeyName;
|
||||||
PWCHAR FileKeyValue;
|
PWCHAR FileKeyValue;
|
||||||
PWCHAR DirKeyValue;
|
PWCHAR DirKeyValue;
|
||||||
PWCHAR TargetFileName;
|
PWCHAR TargetFileName;
|
||||||
|
|
||||||
/* Search for the 'SourceFiles' section */
|
/* Search for the SectionName section */
|
||||||
if (!InfFindFirstLine (InfFile, L"SourceFiles", NULL, &FilesContext))
|
if (!InfFindFirstLine (InfFile, SectionName, NULL, &FilesContext))
|
||||||
{
|
{
|
||||||
PopupError("Setup failed to find the 'SourceFiles' section\n"
|
char Buffer[128];
|
||||||
"in TXTSETUP.SIF.\n", // FIXME
|
sprintf(Buffer, "Setup failed to find the '%S' section\nin TXTSETUP.SIF.\n", SectionName);
|
||||||
"ENTER = Reboot computer");
|
PopupError(Buffer, "ENTER = Reboot computer");
|
||||||
|
|
||||||
while(TRUE)
|
while(TRUE)
|
||||||
{
|
{
|
||||||
|
@ -2795,7 +2793,7 @@ PrepareCopyPageInfFile(HINF InfFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enumerate the files in the 'SourceFiles' section
|
* Enumerate the files in the section
|
||||||
* and add them to the file queue.
|
* and add them to the file queue.
|
||||||
*/
|
*/
|
||||||
do
|
do
|
||||||
|
@ -2843,6 +2841,36 @@ PrepareCopyPageInfFile(HINF InfFile,
|
||||||
}
|
}
|
||||||
while (InfFindNextLine(&FilesContext, &FilesContext));
|
while (InfFindNextLine(&FilesContext, &FilesContext));
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOLEAN
|
||||||
|
PrepareCopyPageInfFile(HINF InfFile,
|
||||||
|
PWCHAR SourceCabinet,
|
||||||
|
PINPUT_RECORD Ir)
|
||||||
|
{
|
||||||
|
WCHAR PathBuffer[MAX_PATH];
|
||||||
|
INFCONTEXT DirContext;
|
||||||
|
PWCHAR AdditionalSectionName;
|
||||||
|
PWCHAR KeyValue;
|
||||||
|
ULONG Length;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Add common files */
|
||||||
|
if (!AddSectionToCopyQueue(InfFile, L"SourceFiles", SourceCabinet, Ir))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* Add specific files depending of computer type */
|
||||||
|
if (SourceCabinet == NULL)
|
||||||
|
{
|
||||||
|
if (!ProcessComputerFiles(InfFile, ComputerList, &AdditionalSectionName))
|
||||||
|
return FALSE;
|
||||||
|
if (AdditionalSectionName)
|
||||||
|
{
|
||||||
|
if (!AddSectionToCopyQueue(InfFile, AdditionalSectionName, SourceCabinet, Ir))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Create directories */
|
/* Create directories */
|
||||||
|
|
||||||
|
|
|
@ -295,6 +295,12 @@ ifeq ($(TARGET_TYPE),hal)
|
||||||
MK_RES_BASE := $(TARGET_NAME)
|
MK_RES_BASE := $(TARGET_NAME)
|
||||||
MK_INSTALL_BASENAME := hal
|
MK_INSTALL_BASENAME := hal
|
||||||
MK_INSTALL_FULLNAME := hal.dll
|
MK_INSTALL_FULLNAME := hal.dll
|
||||||
|
ifeq ($(TARGET_BOOTSTRAP),yes)
|
||||||
|
TARGET_BOOTSTRAP_NAME := hal.dll
|
||||||
|
else
|
||||||
|
TARGET_BOOTSTRAP_NAME := $(TARGET_NAME)$(MK_DEFEXT)
|
||||||
|
endif
|
||||||
|
TARGET_BOOTSTRAP := yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET_TYPE),bootpgm)
|
ifeq ($(TARGET_TYPE),bootpgm)
|
||||||
|
|
Loading…
Reference in a new issue