Homebrew Collection of old devkitPro versions

realWinterMute

Well-Known Member
Member
Joined
Feb 24, 2011
Messages
117
Trophies
1
XP
558
Country
It was just an example. But for a 'small' change I'd still rather use a snapshot of the toolchain that was used when the source was compiled instead of running in possible unknown behaviour after solving compiling problems with updated code.

You're going to have to deal with possible unknown behaviour regardless unless you obtain the original developer's hard drive. You're also going to have to potentially deal with bugs that were present in the components used when the source was last compiled.

This is all rather hypothetical though. Pretty much no-one can provide a concrete example of a project where old tools are the only option. It all seems to be very much some false sense of entitlement to be able to compile old homebrew without learning anything about compilers or the associated libraries.

For projects I want to polish and share with the public however.. I will use the latest toolchain of course. I don't really see the harm in an archive just for this purpose.

You don't see the harm because you're not the one dealing with the consequences of this behaviour. You don't have people coming to you with ridiculous problems caused entirely by following some cargo cult guide that tells people to use the official devkitPro installer and then extract various archives over the top of the installation.

It would be really nice if people stopped and thought before they shared their insane bodges. It's one thing messing up your own installation, it's quite another to mess up 10s of 1000s of other people's installations.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
45
Location
Engine room, learning
XP
15,649
Country
France
hard time figuring how to update and work with the latest toolchain.
I didn't try to update yet. It's more that I fear once I update I won't be able to compile other projects (not mine). Not that I need right now, but just "in case, in the future, I need to".
In that situation I'd prefer to make a snapshot of current working environment for project compiling fine, then I'll install latest toolchain and update the sources of active projects. I'll check how to update the sources then.
at the end, I'd like to have multiple working snapshots. I'm not installing OLD toolchain or trying to recreate an old environment by finding matching toolchain and libraries, I'm using the working setup that I keep. I'm not trying to downgrade or install old things over an updated install.

until I find the will and time to spend on installing latest toolchain, plus updating the sources to compile on it (which might be easy, I don't know!), I prefer not touching anything. If I just need to recompile for a very small change I'll still be able to do it without having to fix the code in haste because I updated the toolchain but not the sources.
For now, the easier is to install latest pacman on another computer and have two environments. (or different folders, or partition, or VM, etc.)


But I want to say that I also understand all the reason Wintermute explained, he is right about the reason to update and not mix components together.
and like you said, it's my hard drive, I do what I want on it if I don't want to update yet. The files and tools are already present and compatible. I'm not installing or mixing old ones.

beside that, I'm for archiving all releases and creations. not necessarily to use it, but for preservation. for interest and curiosity, even if in the future these won't work anymore. I have things working only on 16bit windows that I'll never use again, but it exists. tools like Snes sound converters, SPC to midi, SPC to mod tracker, etc. too bad it's only the binaries and not the sources. it works only with SB16 on W95/98.

But I understand the problem with wrong guide, or outdated ones. I'd also prefer old tutorials, bad youtube guide, and all the likes to be deleted, instead of dealing with people following them and crying they want to fix their setup.
I don't count how many times we helped people due to following outdated information (which might have work fine at that time, it wasn't always wrong).
 
Last edited by Cyan,

KirovAir

Alcoholic Programmer
Member
Joined
Dec 7, 2006
Messages
771
Trophies
1
Age
32
Location
Netherlands
Website
www.jessesander.nl
XP
2,451
Country
Netherlands
You're going to have to deal with possible unknown behaviour regardless unless you obtain the original developer's hard drive. You're also going to have to potentially deal with bugs that were present in the components used when the source was last compiled.

This is all rather hypothetical though. Pretty much no-one can provide a concrete example of a project where old tools are the only option. It all seems to be very much some false sense of entitlement to be able to compile old homebrew without learning anything about compilers or the associated libraries.

I agree with the rather hypothetical part, it barely happens. Still, it's nice to be safe than sorry.
Also learning about compilers and associated libs can be quite challenging for new developers. A 'false sense of entitlement' while compiling your favourite piece of homebrew might just spark enough interest to keep learning on those subjects and properly update the project later on.

You don't see the harm because you're not the one dealing with the consequences of this behaviour. You don't have people coming to you with ridiculous problems caused entirely by following some cargo cult guide that tells people to use the official devkitPro installer and then extract various archives over the top of the installation.

It would be really nice if people stopped and thought before they shared their insane bodges. It's one thing messing up your own installation, it's quite another to mess up 10s of 1000s of other people's installations.

This point I understand and it is really frustrating to say the very least. But I'm afraid that removing every single archive off the web will not mitigate this problem.
 

ghjfdtg

Well-Known Member
Member
Joined
Jul 13, 2014
Messages
1,360
Trophies
1
XP
3,282
Country
@Cyan
archive.org probably got you covered regarding archiving purposes. But it's hard to get the toolchain together again. There is no list of which lib and tool package belongs to which release. So you got a high risk of mixing the wrong ones and it will break immediately or it may manifest itself in hidden bugs later on.
 
  • Like
Reactions: Cyan

dubbz82

Well-Known Member
Member
Joined
Feb 2, 2014
Messages
1,572
Trophies
0
Age
41
XP
1,215
Country
United States
So the moral of this whole thread is due to piss poor forethought, pulling together a working toolset for anything outside of the most recent build is a chore.
 
  • Like
Reactions: Deleted-236924

realWinterMute

Well-Known Member
Member
Joined
Feb 24, 2011
Messages
117
Trophies
1
XP
558
Country
So the moral of this whole thread is due to piss poor forethought, pulling together a working toolset for anything outside of the most recent build is a chore.

No, the moral is keep your tools up to date, fix your code where necessary and talk to the maintainers when you run into difficulty. Sniping from the sidelines and actively encouraging people to modify the toolchain installation is childish & unhelpful. Please stop.
 

vgmoose

Well-Known Member
Member
Joined
Jan 31, 2016
Messages
360
Trophies
1
Website
github.com
XP
3,066
Country
United States
No, the moral is keep your tools up to date, fix your code where necessary and talk to the maintainers when you run into difficulty. Sniping from the sidelines and actively encouraging people to modify the toolchain installation is childish & unhelpful. Please stop.
I really shouldn't bother but can you please explain how this isn't user hostile behavior? It's very very common for homebrew developers to leave the scene and not be willing (or even able) to update older tools of theirs, and it's incredibly infeasible to suggest that other people need to pick up this slack simply because you are unwilling to provide archived versions of older tools.

The following page does not go into great detail about devkitPro's products and their relationship with the GPL. Probably the most notable line is this:
https://devkitpro.org/wiki/Trademarks#Trademarks_and_the_GPL
Please note that we do not supply old binaries or source for old binaries and you may not distribute GPL binaries without corresponding source code.

The official binaries for devkitPPC and other tools appear to be distributed currently is through the official pacman repo.

I can receive a binaries of these tools, distributed by devkitPro, using pacman with that repo. Licensing information for devkitPPC can be displayed by running "dkp-pacman -Q --info devkitPPC", which returns the following:
Code:
Name            : devkitPPC
Version         : r33-1
Description     : Toolchain for Nintendo Gamecube & Wii homebrew development
Architecture    : any
URL             : https://devkitpro.org
Licenses        : GPL

Here it just states broadly that "GPL" license applies to these tools. Inspecting the files that this package installs, it provides the following file at
"/opt/devkitpro/devkitPPC/share/info/gcc.info", which contains the entire GPLv3 license, as well as a reference to the https://github.com/devkitPro/buildscripts/ repo for a place to report bugs and issues with the software.

Within GPLv3 is the following clause for distributing non-source forms (such as the binaries I installed via pacman from the devkitPPC package):
Code:
 6. Conveying Non-Source Forms.

     You may convey a covered work in object code form under the terms
     of sections 4 and 5, provided that you also convey the
     machine-readable Corresponding Source under the terms of this
     License, in one of these ways:

       a. Convey the object code in, or embodied in, a physical product
          (including a physical distribution medium), accompanied by the
          Corresponding Source fixed on a durable physical medium
          customarily used for software interchange.

       b. Convey the object code in, or embodied in, a physical product
          (including a physical distribution medium), accompanied by a
          written offer, valid for at least three years and valid for as
          long as you offer spare parts or customer support for that
          product model, to give anyone who possesses the object code
          either (1) a copy of the Corresponding Source for all the
          software in the product that is covered by this License, on a
          durable physical medium customarily used for software
          interchange, for a price no more than your reasonable cost of
          physically performing this conveying of source, or (2) access
          to copy the Corresponding Source from a network server at no
          charge.

       c. Convey individual copies of the object code with a copy of the
          written offer to provide the Corresponding Source.  This
          alternative is allowed only occasionally and noncommercially,
          and only if you received the object code with such an offer,
          in accord with subsection 6b.

       d. Convey the object code by offering access from a designated
          place (gratis or for a charge), and offer equivalent access to
          the Corresponding Source in the same way through the same
          place at no further charge.  You need not require recipients
          to copy the Corresponding Source along with the object code.
          If the place to copy the object code is a network server, the
          Corresponding Source may be on a different server (operated by
          you or a third party) that supports equivalent copying
          facilities, provided you maintain clear directions next to the
          object code saying where to find the Corresponding Source.
          Regardless of what server hosts the Corresponding Source, you
          remain obligated to ensure that it is available for as long as
          needed to satisfy these requirements.

       e. Convey the object code using peer-to-peer transmission,
          provided you inform other peers where the object code and
          Corresponding Source of the work are being offered to the
          general public at no charge under subsection 6d.

(a) has not been satisfied, as I have just installed the object code and no corresponding source code accompanied it.
(b) to my knowledge has not been satisfied, as I have not received nor seen such a written offer.
(c) only applies to someone else passing on the object code in the case where a written offer was provided by someone in (b).
(d) to my knowledge has not been satisfied. I am not aware of a location or server where I can receive this source code.
(e) does not apply, I received the object code as a download via the public repository not peer to peer.

Only one of these 5 subclauses needs to be satisfied, since I have received a non-source distribution of code, which I believe leaves only (b) and (d), as (a) and (e) were not satisfied, and (c) does not apply.

In order to satisfy (b), the ability to receive source code from up to 3 years of the non-source distribution needs to be present. This is true even if you are no longer provided support for that version. Will you publish and release the source code to those of use who received and currently possess the GPLv3-licensed product from devkitPro for within the past 3 years and including the present? It sounds like you're asking that these redistributions be removed, despite the fact that if they were provided the source, they could provide the binaries verbatim under (c).

In order to satisfy (d), there would need to be a location or server to retrieve the source code of the GPLv3-licensed devkitPro products. Users would be completely free to cache this source code of course and continue to build and distribute binaries+source of older versions without using or violating your trademark. In addition to this "you maintain clear directions next to the object code saying where to find the Corresponding Source", which I have not been able to find.

Please, feel free to correct me if I'm wrong on anything I've said above.

It appears that the object code / product provided by devkitPro in the devkitPPC package is a fork of https://gcc.gnu.org under the GPLv3 license. The GCC site is very clear and upfront about the licensing and in addition to that has a large history of changelogs and previous versions. I assume that your organization has benefited from their approach in making this very user-friendly and accessible. This is how I would expect a GPLv3 licensed project to behave, in order to maximize utility for users and developers.

Instead, the devkitPro organization does not seem to like to talk about the GPL or issues like this... The buildscripts repo on github (which is linked to in the same place where the contents of the GPLv3 are distributed) is copyrighted code that is provided with no license (except the explicit permission to fork it that Github provides).

Upon being inquired about licensing of the build scripts:
https://github.com/devkitPro/buildscripts/issues/20

Okay, this is despite the fact that the buildscripts patch gcc (one such patch even including a snippet of the GPLv3 license), and despite the fact that patching a GPLv3 source creates a derivative work.

When this is pointed out on your forums:
https://devkitpro.org/viewtopic.php?f=15&t=8690

The response was "We don't supply binaries built with those buildscripts, there is no GPL issue.". The implication being that the buildscripts actually do not bear relation with the released products (such as devkitPPC) that devkitPro org provides. Which raises the question: where's the corresponding source for the binaries that you do distribute, and that I and other users have received?

And of course most recently as people in this thread have pointed out was this: https://github.com/devkitPro/buildscripts/issues/29#issuecomment-406894916

Which is locked with the message "This conversation has been locked as too heated and limited to collaborators." despite there being a single and very polite message inquiring about building an older version of dkP products.

It is bewildering to me that you would even consider asking people to take down mirrors of your old binaries under the guise of GPLv3 because they aren't providing the source, when the source for the current (and soon to be past) GPLv3-derivative devkitPro non-source products is not clearly provided or supported at all. As if releasing a version magically invalidates the distributed (by you) binaries and your obligation to have provided the source code in the past (or present if we're talking bout r31-1).

And it's particularly offensive given the history behind GCC and its role in the free software movement and the GNU Project.



Somehow I have more to say... this (outdated libs) is an extremely common problem that the Wii U scene is facing, where older projects were not updated to work with newer devkitPPC releases, as well as newer devkitPPC breaking compatibility. When you were approached about these breaking changes, your official response was that that the Wii U is unsupported by the devkitPro organization. Whether you like it or not, the free compiler that you are modifying and distributing requires that you provide users the ability to maintain, modify, and build off your work specifically because of situations like this.

In short, I would like to request a copy of the source code for devkitPPC and devkitA64 under the terms of the GPLv3 license which they are distributed under. Also under the GPLv3, there should be either three years worth of source code made available upon request (subclause 6b), or a public and well documented place to retrieve the source (subclause 6d).
 

vgmoose

Well-Known Member
Member
Joined
Jan 31, 2016
Messages
360
Trophies
1
Website
github.com
XP
3,066
Country
United States
WinterMute and I are not on the best of terms, and I'm sure that the above tag in this thread alongside my name isn't appreciated by him.

We had a private chat in 2019 about my above post, and I am directly quoting him in this comment to try to fairly represent his point of view. Since this conversation, I have been pushed away further from the devkitPro org (and other orgs that are involved with it), and this has evolved into personal digs against my own person, the hb-appstore project, and the group that I started alongside WiiU friends (wiiubru/fortheusers).

I was told that "The source is right in front of your nose though." which implies that there is enough public information between the github repos to comply with the GPL. It has not been laid out explicitly enough for me to understand beyond this. At a glance though, it does seem like the important/relevant modifications that were made to GCC are available.

I was also told that the GPL licensing reported from running the "dkp-pacman -Q --info devkitPPC" command was "wrong" and "needs fixing". This was basically the cornerstone of my above post with respect to the licensing issues.

More quotes from WM on this matter, from the same chat:

"We don't have the resources available to verify sources for many of the older binaries and we don't support their use in any case."
"Various combinations of tools & libraries are ABI incompatible & don't work at all. There isn't really any way to reconstruct working distributions for a whole bunch of things so we didn't bother."
"Your incessant harping about GPL doesn't do anything to allay my impression that you're out to compete with me using my own work to further your own agenda."

For WinterMute, it's more about providing for the community than having to deal with subtleties of licensing compliance that may be needed, and keeping everyone on the latest version is in dkP's best interest anyway:
There's a history of people repackaging my work (and the work of others) and selling it with neither attribution nor remuneration.
And of course when these "products" have problems then I'm expected to fix it despite most of the problems being caused by, for example, bundling the tools with inappropriate libraries and/or modifications.
So I don't go out of my way to point people to sources, especially when my experience is that people looking for the sources are people who want to compete with devkitPro using the work that we've put into making the tools what they are
I see the GPL as something that's intended to foster community & collaboration, not as an excuse to steal people's work outright and attempt to compete with them in the same marketplace.
None of which is intended as a dig at you personally, it's just the product of long & bitter experience dealing with many people over the years who consider their wants to be more important than the needs of the wider community.
[...]
But ultimately what I really want is more people than the small handful there are who see the bigger picture & understand what it is I'm trying to achieve

If somebody is going to continue having this conversation with him, it's not going to be me. FIX94's Mega removal is what really motivated me to make my initial post and to engage with WinterMute. As I mentioned earlier, I'm now a person-of-non-interest and am banned from dkP/Switchbrew/Atmosphere's Github and the Switchbrew Wiki. I do not possess the specific knowledge to talk through what should and shouldn't be in a toolchain, although I can sympathize with creating free software feeling thankless.

I can also understand that my personal motivations for writing free software are not the same as WinterMute's, which is an understanding that I did not really have prior to our conversation. For me, providing free software is a hobby, and complying with licenses a part of that hobby, which affords me the luxury of allowing and not worrying about wayward forks/self-compiles. For WinterMute, providing a free toolchain is a commitment to serve the community, and license bookkeeping plus any unserious forks/fragmentations end up affecting him and his group in a detrimental manner, thus the heavy-handedness around the licensing and not being explicit about supply sources.

Again, I don't personally agree with this approach, and it's not how I develop my own apps and games. But in other words, WM is consistently focused on the experience of the "current" state of the community/toolchain, which will evolve as consoles/the scene evolves, rather than encouraging the use of historical/outdated sources.

It's my opinion then that the collection of old toolchains + sources provided by leseratte is actually a happy-enough solution that does solve the problem of "this code is outdated and needs an older devkitPro toolchain". Yes it sucks that such a key person as FIX94's mega got removed over something similar, and it sucks that people who want to inquire about licensing hit a stone wall like this. Also, in 2020 dkP doubled down on this mindset by blocking continuous integration build IPs from their server, so that CI cannot provide reproducible builds on commit using binaries from them.

However, enough other people in the broader homebrew community (ie. people involved with Switchbrew) have come around to this being the method for allowing the toolchain to be maintained in the manner that it is. And to people at dkP/Switchbrew who feel I misrepresented what was said between WM and myself in our conversation: please provide an alternative explanation. I have shared direct responses to the issues that I raised, and that people in this thread have had questions about.

I don't think pretending that there's no reason someone would want historical builds or CI builds, outside of trying to fork and make a competitive toolchain, is going to fly for devs like me who have had those wants. But that's where solutions like creating our own docker images or having an archive of older toolchains comes in, and we have that ability already. I'm not a lawyer and can't speak to whether the pieces on Github (between build scripts and other repos) constitutes enough to not be a GPL violation, and so ultimately that's all I can really say about the issue.

During our conversation, WM also said the following:
I'm saying that I'm doing my level best to provide the best service I can for people who want to to make homebrew for a whole bunch of Nintendo game consoles [...] People like you turning up and giving me a load of grief has a majorly detrimental effect on my health. The refusal to even consider for one second just how much I provide to people for free.

So I would kindly ask that if someone does approach him on the same topic, they take this into account, and try to bring up the subject respectfully. It's really easy to criticize dkP's free toolchain decisions they make when trying to enable the general public to create on Nintendo's hardware, and then be completely quiet on Nintendo's own top-secret, pay-to-use, proprietary toolchain for their proprietary hardware. Even Apple allows anyone with an iPhone and a Mac to compile apps for their personal phones, and I believe that Microsoft has a similar program with the Xbox. Nintendo's toolchain approach is way more outdated and egregious than the concerns raised here.

Some more reading of WM's POV: https://davejmurphy.com/the-confusion-of-cats/
devkitPro patreon: https://www.patreon.com/devkitPro
 

CABLE53

Member
Newcomer
Joined
Dec 1, 2020
Messages
15
Trophies
0
Age
21
XP
43
Country
United States
You're trapping people on on unsupported tools, not giving them freedom. You're interfering with our ability to support new users and you're taking away time and energy we'd rather spend improving the tools & libraries.
This was an entertaining thread to read though. :] I laughed so hard when reading it. I disagree with realWinterMute on the fact that lesarette is "trapping" people to use older versions of devkitPro, it's a complete option and only for horrific problems.
 

fledge68

Well-Known Member
Member
Joined
Jan 30, 2012
Messages
2,438
Trophies
2
XP
4,962
Country
United States
@leseratte where are wii_rules kept? they should part of the ppc download but they arent. were they moved to a different zip?

EDIT: HA! right after i posted this i found them.
 
Last edited by fledge68,

bobmcjr

Well-Known Member
Member
Joined
Apr 26, 2013
Messages
1,156
Trophies
1
XP
3,215
Country
United States
Website seems down, has the archive been archived anywhere?

Went to compile an NDS homebrew from 2017 to make a minor change, tested in an emulator; works, great!
Went to test on hardware, doesn't boot for apparently no reason.

I don't have time to debug this shit, so I went for a hexedit instead (which mostly worked, although not 100%), but the whole intentionally-nuking-old-versions-of-devkitpro thing is indeed complete bullshit (and rather making efforts to punish people trying to preserve what's left, I would be taking a good look at myself and my versioning processes to address my failures).

If DKP is going to handwave the source of older versions as being some poorly-versioned GitHub repos and claim to be compliant, then unmodified copies of older versions should be able to claim compliance by handwaving to those same repos as well.

I find it abhorrent that the Nintendont source repo has to ship some blobs from an older devkitARM. Yeah great, be on the latest versions of everything always, but oh wait you made it literally impossible to update here because you removed it.

Once again, core people in the console homebrew community end up being absolute pricks.


Edit:
I was reminded that effectively all recent builds of Nintendont on current DKP hang the Wii when exiting. Of course, normally in a situation like this, you would go back and bisect what changed, and it would appear that "what changed" were the build tools themselves. For both Nintendont and that NDS homebrew I tried to compile, everyone is simply left guessing as to what changed, and debugging non-obvious bugs like this is just plain difficult. Being able to bisect compiler/library versions would make it much easier to pin down the issue, but alas here we are.
 
Last edited by bobmcjr,

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
Website seems down, has the archive been archived anywhere?

Went to compile an NDS homebrew from 2017 to make a minor change, tested in an emulator; works, great!
Went to test on hardware, doesn't boot for apparently no reason.

I don't have time to debug this shit, so I went for a hexedit instead (which mostly worked, although not 100%), but the whole intentionally-nuking-old-versions-of-devkitpro thing is indeed complete bullshit (and rather making efforts to punish people trying to preserve what's left, I would be taking a good look at myself and my versioning processes to address my failures).

If DKP is going to handwave the source of older versions as being some poorly-versioned GitHub repos and claim to be compliant, then unmodified copies of older versions should be able to claim compliance by handwaving to those same repos as well.

I find it abhorrent that the Nintendont source repo has to ship some blobs from an older devkitARM. Yeah great, be on the latest versions of everything always, but oh wait you made it literally impossible to update here because you removed it.

Once again, core people in the console homebrew community end up being absolute pricks.
can't guarantee this will work for everything, but I used wayback machine: https://web.archive.org/web/20220331023444/http://wii.leseratte10.de/devkitPro/
 
  • Like
Reactions: cristian64

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
don't know, but that site seems to be a mirror image of it. I'm not sure how I stumbled upon it, but it was when looking for a certain version of devkitARM iirc.
 
  • Like
Reactions: fledge68

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @OctoAori20, Thank you. Hope you're in good spirits today like I am. :)