Building Palemoon 27 for XP

Talk about code development, features, specific bugzilla bugs, enhancements, patches, and other highly technical things.

Moderator: satrow

Forum rules
Please keep everything here strictly on-topic.
This board is meant for Pale Moon source code development related subjects only like code snippets, patches, specific referenced Bugzilla bugs, mercurial, etc.

This is not for tech support! Please do not post tech support questions in the "Development" board!
Please make sure not to use this board for support questions. Most "bug reports" do not belong in this board and should initially be posted in Community Support or other relevant support boards.

Please keep things on-topic as this forum will be used for reference for Pale Moon development. Expect topics that aren't relevant as such to be moved or deleted.
User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Building Palemoon 27 for XP

Postby Fedor2 » Tue Jul 25, 2017 10:36 pm

It can be done the same way as was for 26. Only more code editing. You will have the same Palemoon as original with New moon name.

1. First read there a general build instruction.
viewtopic.php?f=19&t=13556
Unfortunately VS2013 wont install on XP, so you must have newer windows. That why i want make it bulding under mingw.
2. Get source code from github
3. Do editting, according following entries, probably you can make and apply them as patch.
4. Compile, mozconfig is regular as of [1]. And i added new option too --disable-skia, use it if you know why.

configure.in
427c427
< WINVER=600
---
> WINVER=502
2183c2183
< WIN32_SUBSYSTEM_VERSION=6.00
---
> WIN32_SUBSYSTEM_VERSION=5.01
5716a5717,5719
> MOZ_DIRECTX_SDK_PATH=
> MOZ_D3DCOMPILER_XP_DLL=
> MOZ_D3DCOMPILER_XP_CAB=
5740a5744,5745
> MOZ_REQUIRE_ALL_D3DCS=1
>
5788a5794,5843
> ######################################
> # Find _43 for use by XP.
>
> # Get the SDK path from the registry.
> # First try to get the June 2010 SDK
> MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
> if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
> # Otherwise just take whatever comes first
> MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
> fi
> MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`
>
> if test -n "$MOZ_DIRECTX_SDK_PATH" &&
> test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
> AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
> else
> AC_MSG_RESULT([DirectX SDK not found.])
> MOZ_DIRECTX_SDK_PATH=
> fi
>
> # Check that our DirectX SDK is acceptable.
> if test -n "$MOZ_DIRECTX_SDK_PATH"; then
> if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
> AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
> MOZ_DIRECTX_SDK_PATH=
> fi
> fi
>
> if test -n "$MOZ_DIRECTX_SDK_PATH"; then
> # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
> # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
> MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
>
> if test -n "$MOZ_D3DX9_VERSION" ; then
> MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
>
> if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
> MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
> else
> AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
> AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
> MOZ_DIRECTX_SDK_PATH=
> fi
> else
> AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
> MOZ_DIRECTX_SDK_PATH=
> fi
> else
> AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
> fi
5792a5848
> MOZ_FOUND_BOTH_D3D_COMPILERS=1
5796a5853,5861
> else
> MOZ_FOUND_BOTH_D3D_COMPILERS=
> fi
>
> if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
> MOZ_FOUND_A_D3D_COMPILER=1
> AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
> else
> MOZ_FOUND_BOTH_D3D_COMPILERS=
5802a5868,5872
>
> if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
> AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
> AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
> fi
7672a7743,7747
> MOZ_ARG_ENABLE_BOOL(skia,
> [ --disable-skia Disable use of Skia],
> MOZ_ENABLE_SKIA=,
> MOZ_ENABLE_SKIA=)
>
8188a8264,8266
> AC_SUBST(MOZ_DIRECTX_SDK_PATH)
> AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
> AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)

browser\app\nsBrowserApp.cpp
180,186d179
< #ifdef XP_WIN
< if (!IsWindowsVistaOrGreater()) {
< Output("Couldn't load valid PE image.\n");
< return 255;
< }
<
< #endif
261a255,294
> #ifdef XP_WIN
>
> /**
> * Used only when GetTickCount64 is not available on the platform.
> * Last result of GetTickCount call. Kept in [ms].
> */
> static DWORD sLastGTCResult = 0;
>
> /**
> * Higher part of the 64-bit value of MozGetTickCount64,
> * incremented atomically.
> */
> static DWORD sLastGTCRollover = 0;
>
> /**
> * Function protecting GetTickCount result from rolling over. The original
> * code comes from the Windows implementation of the TimeStamp class minus the
> * locking harness which isn't needed here.
> *
> * @returns The current time in milliseconds
> */
> static ULONGLONG WINAPI
> MozGetTickCount64()
> {
> DWORD GTC = ::GetTickCount();
>
> /* Pull the rollover counter forward only if new value of GTC goes way
> * down under the last saved result */
> if ((sLastGTCResult > GTC) && ((sLastGTCResult - GTC) > (1UL << 30)))
> ++sLastGTCRollover;
>
> sLastGTCResult = GTC;
> return (ULONGLONG)sLastGTCRollover << 32 | sLastGTCResult;
> }
>
> typedef ULONGLONG (WINAPI* GetTickCount64_t)();
> static GetTickCount64_t sGetTickCount64 = nullptr;
>
> #endif
>
272c305,315
< return GetTickCount64() * freq.QuadPart;
---
>
> HMODULE kernelDLL = GetModuleHandleW(L"kernel32.dll");
> sGetTickCount64 = reinterpret_cast<GetTickCount64_t>
> (GetProcAddress(kernelDLL, "GetTickCount64"));
>
> if (!sGetTickCount64) {
> /* If the platform does not support the GetTickCount64 (Windows XP doesn't),
> * then use our fallback implementation based on GetTickCount. */
> sGetTickCount64 = MozGetTickCount64;
> }
> return sGetTickCount64() * freq.QuadPart;


browser\installer\Makefile.in for webgl support
62a63,65
> ifdef MOZ_D3DCOMPILER_XP_DLL
> DEFINES += -DMOZ_D3DCOMPILER_XP_DLL=$(MOZ_D3DCOMPILER_XP_DLL)
> endif


browser\installer\package-manifest.in webgl
655a656,659
> #ifdef MOZ_D3DCOMPILER_XP_DLL
> @BINPATH@/@MOZ_D3DCOMPILER_XP_DLL@
> #endif
>

gfx\angle\BUILD.gn webgl
160c160
< "\"d3dcompiler_46.dll\", \"d3dcompiler_47.dll\" }",
---
> "\"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }",

gfx\angle\Makefile.in webgl
11a12,15
> ifdef MOZ_D3DCOMPILER_XP_CAB
> expand '$(MOZ_D3DCOMPILER_XP_CAB)' -F:$(MOZ_D3DCOMPILER_XP_DLL) '$(DIST)/bin'
> endif
>

gfx\angle\src\libGLESv2.gypi webgl
344c344
< 'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ "d3dcompiler_46.dll", "d3dcompiler_47.dll" }',
---
> 'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ "d3dcompiler_46.dll", "d3dcompiler_47.dll", "d3dcompiler_43.dll" }',
359c359
< 'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ "d3dcompiler_46.dll", "d3dcompiler_47.dll" }',
---
> 'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ "d3dcompiler_46.dll", "d3dcompiler_47.dll", "d3dcompiler_43.dll" }',

gfx\angle\src\libGLESv2\moz.build webgl
232c232
< SOURCES['renderer/d3d/HLSLCompiler.cpp'].flags += ['-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES=\'{ TEXT("d3dcompiler_47.dll"), TEXT("d3dcompiler_46.dll") }\'']
---
> SOURCES['renderer/d3d/HLSLCompiler.cpp'].flags += ['-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES=\'{ TEXT("d3dcompiler_47.dll"), TEXT("d3dcompiler_46.dll"), TEXT("d3dcompiler_43.dll") }\'']

gfx\gl\GLLibraryEGL.cpp webgl
148a149,153
> #ifdef MOZ_D3DCOMPILER_XP_DLL
> if (LoadLibraryForEGLOnWindows(NS_LITERAL_STRING(NS_STRINGIFY(MOZ_D3DCOMPILER_XP_DLL))))
> break;
> #endif
>

gfx\gl\moz.build webgl
152a153,154
> if CONFIG['MOZ_D3DCOMPILER_XP_DLL']:
> DEFINES['MOZ_D3DCOMPILER_XP_DLL'] = CONFIG['MOZ_D3DCOMPILER_XP_DLL']

gfx\thebes\gfxWindowsPlatform.cpp webgl
1837a1838
> featureLevels.AppendElement(D3D_FEATURE_LEVEL_9_3);

hal\windows\WindowsBattery.cpp just replace whole file with
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "Hal.h"
#include "HalImpl.h"
#include "nsITimer.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/battery/Constants.h"
#include "nsComponentManagerUtils.h"

#include <windows.h>
#include "mozilla/WindowsVersion.h"

using namespace mozilla::dom::battery;

namespace mozilla {
namespace hal_impl {

static nsCOMPtr<nsITimer> sUpdateTimer;

#if (WINVER >= 0x0600)
/* Power Event API is Vista or later */
static decltype(RegisterPowerSettingNotification)* sRegisterPowerSettingNotification = nullptr;
static decltype(UnregisterPowerSettingNotification)* sUnregisterPowerSettingNotification = nullptr;
static HPOWERNOTIFY sPowerHandle = nullptr;
static HPOWERNOTIFY sCapacityHandle = nullptr;
static HWND sHWnd = nullptr;

#endif

static void
UpdateHandler(nsITimer* aTimer, void* aClosure) {
NS_ASSERTION(!IsVistaOrLater(),
"We shouldn't call this function for Vista or later version!");

static hal::BatteryInformation sLastInfo;
hal::BatteryInformation currentInfo;

hal_impl::GetCurrentBatteryInformation(&currentInfo);
if (sLastInfo.level() != currentInfo.level() ||
sLastInfo.charging() != currentInfo.charging() ||
sLastInfo.remainingTime() != currentInfo.remainingTime()) {
hal::NotifyBatteryChange(currentInfo);
sLastInfo = currentInfo;
}
}
#if (WINVER >= 0x0600)
static
LRESULT CALLBACK
BatteryWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (msg != WM_POWERBROADCAST || wParam != PBT_POWERSETTINGCHANGE) {
return DefWindowProc(hwnd, msg, wParam, lParam);
}

hal::BatteryInformation currentInfo;

// Since we need update remainingTime, we cannot use LPARAM.
hal_impl::GetCurrentBatteryInformation(&currentInfo);

hal::NotifyBatteryChange(currentInfo);
return TRUE;
}
#else
static
LRESULT CALLBACK
BatteryWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (msg != WM_POWERBROADCAST) {
return DefWindowProc(hwnd, msg, wParam, lParam);
}

hal::BatteryInformation currentInfo;

// Since we need update remainingTime, we cannot use LPARAM.
hal_impl::GetCurrentBatteryInformation(&currentInfo);

hal::NotifyBatteryChange(currentInfo);
return TRUE;
}
#endif

void
EnableBatteryNotifications()
{
#if (WINVER >= 0x0600)
HMODULE hUser32 = GetModuleHandleW(L"USER32.DLL");
if (!sRegisterPowerSettingNotification)
sRegisterPowerSettingNotification = (decltype(RegisterPowerSettingNotification)*)
GetProcAddress(hUser32, "RegisterPowerSettingNotification");
if (!sUnregisterPowerSettingNotification)
sUnregisterPowerSettingNotification = (decltype(UnregisterPowerSettingNotification)*)
GetProcAddress(hUser32, "UnregisterPowerSettingNotification");

if (!sRegisterPowerSettingNotification ||
!sUnregisterPowerSettingNotification) {
NS_ASSERTION(false, "Canot find PowerSettingNotification functions.");
return;
}

// Create custom window to watch battery event
// If we can get Goanna's window handle, this is unnecessary.

if (sHWnd == nullptr) {
WNDCLASSW wc;
HMODULE hSelf = GetModuleHandle(nullptr);

if (!GetClassInfoW(hSelf, L"MozillaBatteryClass", &wc)) {
ZeroMemory(&wc, sizeof(WNDCLASSW));
wc.hInstance = hSelf;
wc.lpfnWndProc = BatteryWindowProc;
wc.lpszClassName = L"MozillaBatteryClass";
RegisterClassW(&wc);
}

sHWnd = CreateWindowW(L"MozillaBatteryClass", L"Battery Watcher",
0, 0, 0, 0, 0,
nullptr, nullptr, hSelf, nullptr);
}

if (sHWnd == nullptr) {
// Couldn't get window; bail.
return;
}

sPowerHandle =
sRegisterPowerSettingNotification(sHWnd,
&GUID_ACDC_POWER_SOURCE,
DEVICE_NOTIFY_WINDOW_HANDLE);
sCapacityHandle =
sRegisterPowerSettingNotification(sHWnd,
&GUID_BATTERY_PERCENTAGE_REMAINING,
DEVICE_NOTIFY_WINDOW_HANDLE);
#else
// } else
// {
// for Windows XP. If we remove Windows XP support,
// we should remove timer-based power notification
sUpdateTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
if (sUpdateTimer) {
sUpdateTimer->InitWithFuncCallback(UpdateHandler,
nullptr,
Preferences::GetInt("dom.battery.timer",
30000 /* 30s */),
nsITimer::TYPE_REPEATING_SLACK);
}
// }
#endif

}

void
DisableBatteryNotifications()
{
#if (WINVER >= 0x0600)
if (sPowerHandle) {
sUnregisterPowerSettingNotification(sPowerHandle);
sPowerHandle = nullptr;
}

if (sCapacityHandle) {
sUnregisterPowerSettingNotification(sCapacityHandle);
sCapacityHandle = nullptr;
}

if (sHWnd) {
DestroyWindow(sHWnd);
sHWnd = nullptr;
}
#else
if (sUpdateTimer) {
sUpdateTimer->Cancel();
sUpdateTimer = nullptr;
}
// }
#endif
}

void
GetCurrentBatteryInformation(hal::BatteryInformation* aBatteryInfo)
{
SYSTEM_POWER_STATUS status;
if (!GetSystemPowerStatus(&status)) {
aBatteryInfo->level() = kDefaultLevel;
aBatteryInfo->charging() = kDefaultCharging;
aBatteryInfo->remainingTime() = kDefaultRemainingTime;
return;
}

aBatteryInfo->level() =
status.BatteryLifePercent == 255 ? kDefaultLevel
: ((double)status.BatteryLifePercent) / 100.0;
aBatteryInfo->charging() = (status.ACLineStatus != 0);
if (status.ACLineStatus != 0) {
if (aBatteryInfo->level() == 1.0) {
// GetSystemPowerStatus API may returns -1 for BatteryFullLifeTime.
// So, if battery is 100%, set kDefaultRemainingTime at force.
aBatteryInfo->remainingTime() = kDefaultRemainingTime;
} else {
aBatteryInfo->remainingTime() =
status.BatteryFullLifeTime == (DWORD)-1 ? kUnknownRemainingTime
: status.BatteryFullLifeTime;
}
} else {
aBatteryInfo->remainingTime() =
status.BatteryLifeTime == (DWORD)-1 ? kUnknownRemainingTime
: status.BatteryLifeTime;
}
}

} // hal_impl
} // mozilla

xpcom\ds\TimeStamp_windows.cpp
10,12d9
< #undef _WIN32_WINNT
< #define _WIN32_WINNT 0x0600
<
18d14
< #include <winbase.h>
174a171,180
> // Used only when GetTickCount64 is not available on the platform.
> // Last result of GetTickCount call.
> //
> // Kept in [ms]
> static DWORD sLastGTCResult = 0;
>
> // Higher part of the 64-bit value of MozGetTickCount64,
> // incremented atomically.
> static DWORD sLastGTCRollover = 0;
>
176a183,205
> typedef ULONGLONG (WINAPI* GetTickCount64_t)();
> static GetTickCount64_t sGetTickCount64 = nullptr;
>
> // Function protecting GetTickCount result from rolling over,
> // result is in [ms]
> static ULONGLONG WINAPI
> MozGetTickCount64()
> {
> DWORD GTC = ::GetTickCount();
>
> // Cheaper then CMPXCHG8B
> AutoCriticalSection lock(&sTimeStampLock);
>
> // Pull the rollover counter forward only if new value of GTC goes way
> // down under the last saved result
> if ((sLastGTCResult > GTC) && ((sLastGTCResult - GTC) > (1UL << 30))) {
> ++sLastGTCRollover;
> }
>
> sLastGTCResult = GTC;
> return ULONGLONG(sLastGTCRollover) << 32 | sLastGTCResult;
> }
>
341c370
< uint64_t now = ms2mt(GetTickCount64());
---
> uint64_t now = ms2mt(sGetTickCount64());
462a492,502
> // Decide which implementation to use for the high-performance timer.
>
> HMODULE kernelDLL = GetModuleHandleW(L"kernel32.dll");
> sGetTickCount64 = reinterpret_cast<GetTickCount64_t>(
> GetProcAddress(kernelDLL, "GetTickCount64"));
> if (!sGetTickCount64) {
> // If the platform does not support the GetTickCount64 (Windows XP doesn't),
> // then use our fallback implementation based on GetTickCount.
> sGetTickCount64 = MozGetTickCount64;
> }
>
501c541
< ULONGLONG GTC = ms2mt(GetTickCount64());
---
> ULONGLONG GTC = ms2mt(sGetTickCount64());

Mercury
Fanatic
Fanatic
Posts: 191
Joined: Fri Nov 01, 2013 11:26 pm
Location: Toronto, Canada

Re: Building Palemoon 27 for XP

Postby Mercury » Tue Jul 25, 2017 10:57 pm

Thank you for sharing this info! :clap:

User avatar
JustOff
Localization Coordinator
Localization Coordinator
Posts: 1051
Joined: Thu Sep 03, 2015 7:47 pm
Location: UA
Contact:

Re: Building Palemoon 27 for XP

Postby JustOff » Wed Jul 26, 2017 2:39 pm

Thank you for sharing. However I still have some doubts that such changes will be enough to be sure that Pale Moon will run on XP without glitches. Let's take a look, for example, on this commit: Allow Atomic to hold 64-bit types everywhere. The problem of compatibility with XP is mentioned here. I suspect that there were other similar changes that I just don't know about.
Here are the add-ons I made in a spare time. That was fun!

User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Re: Building Palemoon 27 for XP

Postby Fedor2 » Wed Jul 26, 2017 4:18 pm

Thanks, i shall notice it on mingw experiments . But VS2013 handles it good regardless of the OS. I am using my xp build since early 27, no glitches was seen.

Furthermore the mentioned issue was long before firefox 52, which is still keeping built for XP.

User avatar
JustOff
Localization Coordinator
Localization Coordinator
Posts: 1051
Joined: Thu Sep 03, 2015 7:47 pm
Location: UA
Contact:

Re: Building Palemoon 27 for XP

Postby JustOff » Wed Jul 26, 2017 4:38 pm

Fedor2 wrote:I am using my xp build since early 27, no glitches was seen.

Have you thought about providing XP-compatible brunch on Github?
Here are the add-ons I made in a spare time. That was fun!

User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Re: Building Palemoon 27 for XP

Postby Fedor2 » Wed Jul 26, 2017 4:43 pm

If you all, including Moonchild, do not object, then lets do it.

User avatar
JustOff
Localization Coordinator
Localization Coordinator
Posts: 1051
Joined: Thu Sep 03, 2015 7:47 pm
Location: UA
Contact:

Re: Building Palemoon 27 for XP

Postby JustOff » Wed Jul 26, 2017 5:01 pm

I can't speak for Moonchild, but in similar situation he once wrote to me:
Moonchild wrote:Feel free to share your knowledge :smile:
The corresponding restrictions and warnings should however be made painfully clear, yes.
Here are the add-ons I made in a spare time. That was fun!

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Thu Jul 27, 2017 10:56 am

Please don't take things out of context, though. That particular comment was about hacking SDK extensions to work with Pale Moon.
Building for a different O.S. is core work and really a different beast.

As for an XP branch in our Pale Moon repo; no, I really don't want that. If you want to keep developing your XP version, clone the repo and make your own branch locally. You can keep synching your branch with upstream's master/trunk, of course, but I don't want an XP branch in our official repo, since that would imply we support it and can provide support for it, which we can't.
Of course, you are still in the clear redistributing what you build, even with official branding, as long as you don't significantly change the configuration for the user. Do note, however, that you will be responsible yourself, in that case, for providing user support, so making clear it's a 3rd party build is essential.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.

User avatar
JustOff
Localization Coordinator
Localization Coordinator
Posts: 1051
Joined: Thu Sep 03, 2015 7:47 pm
Location: UA
Contact:

Re: Building Palemoon 27 for XP

Postby JustOff » Thu Jul 27, 2017 11:24 am

I absolutely did not mean an XP branch in the official Pale Moon repo, just a dedicated XP fork that continuously syncs with the master. Thank you, Moonchild, for confirming that this option is acceptable and officially clarified a number of important points.
Here are the add-ons I made in a spare time. That was fun!

QueenXP
Moongazer
Moongazer
Posts: 9
Joined: Sat Jul 22, 2017 1:44 pm

Re: Building Palemoon 27 for XP

Postby QueenXP » Sat Jul 29, 2017 12:05 pm

@Fedor2
Can we have some compiled build please ? (Both x64 and x86 ) Please donot forget about x64

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Sat Jul 29, 2017 1:22 pm

After discussing this and thinking about it some more, and taking into account that people in general don't read anything anymore, I'm going to ask that you re-brand your XP versions to something that isn't Pale Moon.

That way:
  • It's immediately clear that it's a 3rd party build.
  • It's immediately clear that we, core devs and the project, don't provide support for it.
    This will prevent intermixing XP specific issues with our own development, and prevent confusion about what is supported and what isn't (e.g. html5 video).
  • You have full freedom to reconfigure the browser as needed and as you see fit to best serve XP users. This way everyone wins.

It's fine to stay close to the official name, in this respect, but you should give it its own branding (own name and logo).
I suggest everyone who wants to be involved in this side project gets together and makes a single, organized effort to make this happen.
I'll be more than happy to provide a link to your side project once it's set up, from the XP info page I have on our website.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Sat Jul 29, 2017 1:36 pm

Tobin said that if you need help re-branding, he'll be happy to lend a hand.

If you need hosting, web space, or forum space for it, let me know and I can help.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.

QueenXP
Moongazer
Moongazer
Posts: 9
Joined: Sat Jul 22, 2017 1:44 pm

Re: Building Palemoon 27 for XP

Postby QueenXP » Sun Jul 30, 2017 7:01 am

Thanks Mr MoonChild

User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Re: Building Palemoon 27 for XP

Postby Fedor2 » Sun Jul 30, 2017 10:56 pm

I already point that there is an unofficial mod and unsupported as well. Am i to remove "Palemoon" at all or doing different help - about would be enough?

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Sun Jul 30, 2017 11:57 pm

Fedor2 wrote:I already point that there is an unofficial mod and unsupported as well. Am i to remove "Palemoon" at all or doing different help - about would be enough?

You're not allowed to redistribute the binaries with official branding if you're using unofficial modifications to build it. If you've done that so far then that is not in accordance with the redistribution license. You must either use unofficial (New Moon) branding, or your own branding, in that case. Just having a different "about" box is not sufficient.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.

User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Re: Building Palemoon 27 for XP

Postby Fedor2 » Mon Jul 31, 2017 8:48 am

Oh, why do you think that i make binaries with official branding, never did that i swear.

I asked about am i cut all ties with "Palemoon" in my build and put my own title and other things or it is to stayed as unofficial Pale moon, titled as "New moon", and it is pointed in help about.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Mon Jul 31, 2017 2:35 pm

Using "New Moon" branding is always OK. You can of course add extra information in the about box clarifying what the build is, and that it's not supported by us.
Please take a moment to read http://www.palemoon.org/redist.shtml if you still have questions.

I just try to make clear that even if you are getting together to make a (for you) official XP release of Pale moon, that it's not considered official by us and you therefore have to make really clear it's not supported and that users cannot expect us to provide support for it. This is why those builds should never carry official Pale Moon branding, because it would cause confusion among the users. Our XP support has ended, period. It won't be revived, and anything XP-compatible can't be carrying the official Pale Moon name or logo. Any support questions also must be directed to whomever takes responsibility for the builds.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.

User avatar
petrus
Fanatic
Fanatic
Posts: 137
Joined: Wed Dec 04, 2013 7:41 pm

Re: Building Palemoon 27 for XP

Postby petrus » Wed Aug 02, 2017 12:28 pm

Name idea: Xale Poon

:)

But it would be really great, if something pale moon based was the last browser standing on XP, the best OS of all time.

The prestige alone!

User avatar
Fedor2
Lunatic
Lunatic
Posts: 324
Joined: Mon Apr 11, 2016 1:26 am

Re: Building Palemoon 27 for XP

Postby Fedor2 » Wed Aug 02, 2017 10:36 pm

Moonchild
So its good to be allowed to stay with "New moon", doing new design that be complicated.

Would you please read and approve next "about" text
New Moon unofficial version of Pale Moon released for windows xp.
Therefore you may not ask any support from official Pale moon places like forum and so.

Then goes regular text.


Also i am going to change release notes link.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 20075
Joined: Sun Aug 28, 2011 5:27 pm
Location: 58.5°N 15.5°E
Contact:

Re: Building Palemoon 27 for XP

Postby Moonchild » Thu Aug 03, 2017 5:50 am

Any settings like the release notes URL and other prefs you need to set specifically for your build can be done in /browser/branding/unofficial/pref/palemoon-branding.js

Creating your own branding really isn't that complicated anymore, by the way, but it's something you can look at at any point in time in the future, too :).
I think your text is clear enough, sure.
Improving Mozilla code: You know you're on the right track with code changes when you spend the majority of your time deleting code.


Return to “Development (discussion)”

Who is online

Users browsing this forum: No registered users and 4 guests