[prev in list] [next in list] [prev in thread] [next in thread]
List: macports-users
Subject: Re: Fixing source-code bugs using MacPorts facilities.
From: Ian Wadham <iandw.au () gmail ! com>
Date: 2020-07-29 8:51:13
Message-ID: AF8F5DE7-1EAF-4ECD-8CE4-C3CEB73CC550 () gmail ! com
[Download RAW message or body]
> On 29 Jul 2020, at 2:27 pm, Ken Cunningham <ken.cunningham.webuse@gmail.com> wrote:
>
> > On Jul 28, 2020, at 9:22 PM, Ian Wadham <iandw.au@gmail.com> wrote:
>
> > Also, Ken, I have worked out a way of maintaining a git repository of the source code and \
> > edits that is external to MacPorts and entirely under my control, so the need to avoid \
> > "install" is not so great. The compromise is that, after a bunch of edits, I will be using \
> > a script I wrote called "./ship" to copy the changed files down into MacPorts' \
> > work/<source-dir-name> area, after editing and before (re)building and testing.
>
>
> If you get that to a sharable state, pls post it up so I can have a look.
There's nothing much to write home about.
Basically I have in my /kdedev/ports/kde/kpat portfile directory:
files/ portfile rebuild* repo/ work@
I just used mkdir to create repo/, then populated it using something like:
cp -R work/kpat-4.14.3/ repo
The ending slash on the source files of cp -R make it blatt all the files and subdirs into \
repo/ without creating a new kpat-4.14.3/ subdir.
I then made repo/ into a git repository and added the script called "ship".
At the moment, "ship" is just:
192-168-1-104:/kdedev/ports/kde/kpat>cat repo/ship
for f in $*
do
cp $f ../work/kpat-4.14.3/$f
echo "---" $f replaced in MacPorts
done
So I have to supply paths to recently edited files as parameters, but at least they can be \
validated by using bash filename completions. Another possibility is that I could use something \
like "git status --untracked-files=no —porcelain" to get a parseable list of changes and so \
automate the copying of recently made and not yet commited edits into MacPorts, within the \
script call "rebuild".
The "rebuild script at present is:
192-168-1-104:/kdedev/ports/kde/kpat>cat rebuild
#
# Wind the MacPorts state-file back to just before "build" state.
sudo sed -e'/build/,$d' work/.macports.kpat.state >temp
sudo cp temp work/.macports.kpat.state
rm temp
# Re-build, using the most recently edited source code.
sudo port -v build
sudo port destroot
Note that "cp" only cares about "rwx" access rights, not ownership or group membership. If the \
target file exists, it changes the contents of that file, without changing its attributes. So \
the state-file and everything down in MacPorts retain owner, group and access rights whenever \
my scripts change their contents.
> I've been meaning to write something for a portfile to override the "extract" and "patch" \
> portfile phases to just symlink the source directory into the work folder — come to think \
> of it, that might be all I need to do — but haven't got around to it.
> There are a few massive ports I work on:
>
> qt4-mac
> qt5.N for various older systems
> llvm-N
Errrmmm I would worry about making anything as big as those into single git repositories.
In KDE, at least, every app or library is just one repository, but they are grouped into \
categories (e.g. "kpat" is part of "games"). See https://invent.kde.org/games/kpat on GitLab. I \
guess Qt can be broken up similarly, from my experience of it. Divide and conquer… :-)
> that would benefit from this approach rather than what I do now.
With git, I am looking forward to using branches, where I can create and evaluate alternate \
solutions to the bugs I am chasing. Also, until I merge branches, I think I can easily get back \
to base with git checkout master, e.g. to do "before and after" testing of fixes.
Cheers,
Ian W.
> Ken
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic